You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Nov 30, 2021. It is now read-only.
System info: [Include Ethermint commit, operating system name, and other relevant details]
development
Steps to reproduce:
An evm transaction is executed, and the evm.Create or evm.Call method is successfully executed, the "storage" data and "code" data in CommitStateDB have been modified.
Start to execute the function "csdb.Finalise". The function needs to set data to the Store (Keeper). Due to insufficient gas, panic is triggered and the transaction execution fails.
The data set to Store (Keeper) will be rolled back, but the "storage" data and "code" data from CommitStateDB will remain in CommitStateDB.
4.Then, the problem encountered is Similar to issue667,issue669
The text was updated successfully, but these errors were encountered:
We can create a new snapshot of CommitStateDB before executing the handler, after panic occurs, catch panic through recover, and rollback Keeper.CommitStateDB to the old state
The following is a detailed description:
If the gas is insufficient during the execution of the "handler",
panic will be thrown from the function "ConsumeGas" and finally
caught by the function "runTx" from Cosmos. The function "runTx"
will think that the execution of Msg has failed and the modified
data in the Store will not take effect.
Stacktrace:runTx->runMsgs->handler->...->gaskv.Store.Set->ConsumeGas
The problem is that when the modified data in the Store does not take
effect, the data in the modified CommitStateDB is not rolled back,
they take effect, and dirty data is generated.
System info: [Include Ethermint commit, operating system name, and other relevant details]
Steps to reproduce:
4.Then, the problem encountered is Similar to issue667,issue669
The text was updated successfully, but these errors were encountered: