fix(evm): clear logs if tx failed in post processing hooks (#1128)

* Problem: clear logs if tx failed in post processing hooks

* Update x/evm/keeper/state_transition.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
This commit is contained in:
yihuang 2022-06-21 19:21:52 +08:00 committed by GitHub
parent 5e55e5c444
commit 6cf2b9fdd3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 1 deletions

View File

@ -40,7 +40,8 @@ Ref: https://keepachangelog.com/en/1.0.0/
### State Machine Breaking ### State Machine Breaking
* (evm) [tharsis#1124](https://github.com/evmos/ethermint/pull/1124) Reject non-replay-protected tx in ante handler to prevent replay attack * (evm) [\#1128](https://github.com/tharsis/ethermint/pull/1128) Clear tx logs if tx failed in post processing hooks
* (evm) [tharsis#1124](https://github.com/tharsis/ethermint/pull/1124) Reject non-replay-protected tx in `AnteHandler` to prevent replay attack
### API Breaking ### API Breaking

View File

@ -599,6 +599,7 @@ func (suite *EvmTestSuite) TestERC20TransferReverted() {
suite.Require().True(res.Failed()) suite.Require().True(res.Failed())
suite.Require().Equal(tc.expErr, res.VmError) suite.Require().Equal(tc.expErr, res.VmError)
suite.Require().Empty(res.Logs)
after := k.GetBalance(suite.ctx, suite.from) after := k.GetBalance(suite.ctx, suite.from)

View File

@ -268,6 +268,9 @@ func (k *Keeper) ApplyTransaction(ctx sdk.Context, tx *ethtypes.Transaction) (*t
// If hooks return error, revert the whole tx. // If hooks return error, revert the whole tx.
res.VmError = types.ErrPostTxProcessing.Error() res.VmError = types.ErrPostTxProcessing.Error()
k.Logger(ctx).Error("tx post processing failed", "error", err) k.Logger(ctx).Error("tx post processing failed", "error", err)
// If the tx failed in post processing hooks, we should clear the logs
res.Logs = nil
} else if commit != nil { } else if commit != nil {
// PostTxProcessing is successful, commit the tmpCtx // PostTxProcessing is successful, commit the tmpCtx
commit() commit()