diff --git a/baseapp/abci.go b/baseapp/abci.go index 148de4fc6..724734ce4 100644 --- a/baseapp/abci.go +++ b/baseapp/abci.go @@ -277,7 +277,7 @@ func (app *BaseApp) DeliverTx(ctx sdk.Context, req abci.RequestDeliverTx, tx sdk telemetry.SetGauge(float32(gInfo.GasWanted), "tx", "gas", "wanted") }() - gInfo, result, anteEvents, _, _, _, _, err := app.runTx(ctx.WithTxBytes(req.Tx).WithVoteInfos(app.voteInfos), runTxModeDeliver, tx, checksum) + gInfo, result, anteEvents, _, _, _, resCtx, err := app.runTx(ctx.WithTxBytes(req.Tx).WithVoteInfos(app.voteInfos), runTxModeDeliver, tx, checksum) if err != nil { resultStr = "failed" // if we have a result, use those events instead of just the anteEvents @@ -287,13 +287,20 @@ func (app *BaseApp) DeliverTx(ctx sdk.Context, req abci.RequestDeliverTx, tx sdk return sdkerrors.ResponseDeliverTxWithEvents(err, gInfo.GasWanted, gInfo.GasUsed, sdk.MarkEventsToIndex(anteEvents, app.indexEvents), app.trace) } - return abci.ResponseDeliverTx{ + res = abci.ResponseDeliverTx{ GasWanted: int64(gInfo.GasWanted), // TODO: Should type accept unsigned ints? GasUsed: int64(gInfo.GasUsed), // TODO: Should type accept unsigned ints? Log: result.Log, Data: result.Data, Events: sdk.MarkEventsToIndex(result.Events, app.indexEvents), } + if resCtx.IsEVM() { + res.EvmTxInfo = &abci.EvmTxInfo{ + SenderAddress: resCtx.EVMSenderAddress(), + Nonce: resCtx.EVMNonce(), + } + } + return } func (app *BaseApp) WriteStateToCommitAndGetWorkingHash() []byte { diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index 62ac9fe1b..a09851437 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -999,7 +999,7 @@ func (app *BaseApp) runTx(ctx sdk.Context, mode runTxMode, tx sdk.Tx, checksum [ result.Events = append(anteEvents, result.Events...) } if ctx.CheckTxCallback() != nil { - ctx.CheckTxCallback()(err) + ctx.CheckTxCallback()(ctx, err) } return gInfo, result, anteEvents, priority, pendingTxChecker, expireHandler, ctx, err } diff --git a/go.mod b/go.mod index d44da9b3f..626aac298 100644 --- a/go.mod +++ b/go.mod @@ -187,7 +187,7 @@ replace ( github.com/sei-protocol/sei-db => github.com/sei-protocol/sei-db v0.0.28 // Latest goleveldb is broken, we have to stick to this version github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/tendermint/tendermint => github.com/sei-protocol/sei-tendermint v0.2.36-evm-rebase-5 + github.com/tendermint/tendermint => github.com/sei-protocol/sei-tendermint v0.2.37-0.20240228054411-36ab01b583c9 // latest grpc doesn't work with with our modified proto compiler, so we need to enforce // the following version across all dependencies. google.golang.org/grpc => google.golang.org/grpc v1.33.2 diff --git a/go.sum b/go.sum index 0d13f639d..38833eb28 100644 --- a/go.sum +++ b/go.sum @@ -954,8 +954,8 @@ github.com/sei-protocol/sei-db v0.0.28 h1:RE4k2aXSERUixJC2kZri201w1fG3WJ7PZfvCJH github.com/sei-protocol/sei-db v0.0.28/go.mod h1:F/ZKZA8HJPcUzSZPA8yt6pfwlGriJ4RDR4eHKSGLStI= github.com/sei-protocol/sei-iavl v0.1.9 h1:y4mVYftxLNRs6533zl7N0/Ch+CzRQc04JDfHolIxgBE= github.com/sei-protocol/sei-iavl v0.1.9/go.mod h1:7PfkEVT5dcoQE+s/9KWdoXJ8VVVP1QpYYPLdxlkSXFk= -github.com/sei-protocol/sei-tendermint v0.2.36-evm-rebase-5 h1:+exV5/mhDzqI00cdWoSUluocoyYzZszjKSUBymVCBSI= -github.com/sei-protocol/sei-tendermint v0.2.36-evm-rebase-5/go.mod h1:4LSlJdhl3nf3OmohliwRNUFLOB1XWlrmSodrIP7fLh4= +github.com/sei-protocol/sei-tendermint v0.2.37-0.20240228054411-36ab01b583c9 h1:LF+jPKjSZo+VdSvBs747QSKTxygNfrNW+zQcCSqY8Qw= +github.com/sei-protocol/sei-tendermint v0.2.37-0.20240228054411-36ab01b583c9/go.mod h1:4LSlJdhl3nf3OmohliwRNUFLOB1XWlrmSodrIP7fLh4= github.com/sei-protocol/sei-tm-db v0.0.5 h1:3WONKdSXEqdZZeLuWYfK5hP37TJpfaUa13vAyAlvaQY= github.com/sei-protocol/sei-tm-db v0.0.5/go.mod h1:Cpa6rGyczgthq7/0pI31jys2Fw0Nfrc+/jKdP1prVqY= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= diff --git a/types/context.go b/types/context.go index 1cf3ac063..8bebfd97d 100644 --- a/types/context.go +++ b/types/context.go @@ -42,7 +42,7 @@ type Context struct { priority int64 // The tx priority, only relevant in CheckTx pendingTxChecker abci.PendingTxChecker // Checker for pending transaction, only relevant in CheckTx - checkTxCallback func(error) // callback to make at the end of CheckTx. Input param is the error (nil-able) of `runMsgs` + checkTxCallback func(Context, error) // callback to make at the end of CheckTx. Input param is the error (nil-able) of `runMsgs` expireTxHandler func() // callback that the mempool invokes when a tx is expired txBlockingChannels acltypes.MessageAccessOpsChannelMapping @@ -145,7 +145,7 @@ func (c Context) PendingTxChecker() abci.PendingTxChecker { return c.pendingTxChecker } -func (c Context) CheckTxCallback() func(error) { +func (c Context) CheckTxCallback() func(Context, error) { return c.checkTxCallback } @@ -402,7 +402,7 @@ func (c Context) WithPendingTxChecker(checker abci.PendingTxChecker) Context { return c } -func (c Context) WithCheckTxCallback(checkTxCallback func(error)) Context { +func (c Context) WithCheckTxCallback(checkTxCallback func(Context, error)) Context { c.checkTxCallback = checkTxCallback return c }