Closed Frank-AFN closed 4 years ago
目前对于 contracts create action. 并没有造成太大的影响. 但仍需要解决
第一次 gas 不足, 执行到 step 2. out_of_gas. step 1已经执行. 第二次 gas 充足, step 1不会再次执行. 会执行完 step2, 3以完成 contract creation.
refer commit: https://github.com/eosiosg/eos-challenge/commit/c3396bb6758572dd41b8fb6bc28397de7c6142d9
raw action 中 atomic 依靠 eosio::assert(status = EVMC_SUCCESS ) 来保证
EOS trx总是会执行成功, EVM trx可能会失败. 这样会把失败的EVM trx也记录在EOS链上. 和ETH 设计保持一致.
EOS transaction 和 EVM transaction 掺杂执行时. 需要注意原子性问题. EOS transaction是用eosio::check (assert) 来回滚multi-index write operation. EVM当evmc_result 返回status_code 例如 evmc_failure, evmc_out_of_gas来kill整个操作. 这里会出现可能会出现交易执行一半. out_of_gas.
i.e. contract creation execution steps:
是否需要把 EOS multi-index 1 write rollback?