Skip to content

Commit c84d9d7

Browse files
committed
Call antehandlers for traceBlock
1 parent 49ba7bd commit c84d9d7

File tree

13 files changed

+180
-89
lines changed

13 files changed

+180
-89
lines changed

app/ante.go

+20-13
Original file line numberDiff line numberDiff line change
@@ -37,39 +37,39 @@ type HandlerOptions struct {
3737
TracingInfo *tracing.Info
3838
}
3939

40-
func NewAnteHandlerAndDepGenerator(options HandlerOptions) (sdk.AnteHandler, sdk.AnteDepGenerator, error) {
40+
func NewAnteHandlerAndDepGenerator(options HandlerOptions) (sdk.AnteHandler, sdk.AnteHandler, sdk.AnteDepGenerator, error) {
4141
if options.AccountKeeper == nil {
42-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler")
42+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler")
4343
}
4444
if options.BankKeeper == nil {
45-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler")
45+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler")
4646
}
4747
if options.SignModeHandler == nil {
48-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder")
48+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder")
4949
}
5050
if options.WasmConfig == nil {
51-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "wasm config is required for ante builder")
51+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "wasm config is required for ante builder")
5252
}
5353
if options.WasmKeeper == nil {
54-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "wasm keeper is required for ante builder")
54+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "wasm keeper is required for ante builder")
5555
}
5656
if options.OracleKeeper == nil {
57-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "oracle keeper is required for ante builder")
57+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "oracle keeper is required for ante builder")
5858
}
5959
if options.AccessControlKeeper == nil {
60-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "accesscontrol keeper is required for ante builder")
60+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "accesscontrol keeper is required for ante builder")
6161
}
6262
if options.ParamsKeeper == nil {
63-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "params keeper is required for ante builder")
63+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "params keeper is required for ante builder")
6464
}
6565
if options.TracingInfo == nil {
66-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "tracing info is required for ante builder")
66+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "tracing info is required for ante builder")
6767
}
6868
if options.EVMKeeper == nil {
69-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "evm keeper is required for ante builder")
69+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "evm keeper is required for ante builder")
7070
}
7171
if options.LatestCtxGetter == nil {
72-
return nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "latest context getter is required for ante builder")
72+
return nil, nil, nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "latest context getter is required for ante builder")
7373
}
7474

7575
sigGasConsumer := options.SigGasConsumer
@@ -117,5 +117,12 @@ func NewAnteHandlerAndDepGenerator(options HandlerOptions) (sdk.AnteHandler, sdk
117117

118118
router := evmante.NewEVMRouterDecorator(anteHandler, evmAnteHandler, anteDepGenerator, evmAnteDepGenerator)
119119

120-
return router.AnteHandle, router.AnteDeps, nil
120+
tracerAnteDecorators := []sdk.AnteFullDecorator{
121+
evmante.NewEVMPreprocessDecorator(options.EVMKeeper, options.EVMKeeper.AccountKeeper()),
122+
sdk.DefaultWrappedAnteDecorator(evmante.NewBasicDecorator(options.EVMKeeper)),
123+
sdk.DefaultWrappedAnteDecorator(evmante.NewEVMSigVerifyDecorator(options.EVMKeeper, options.LatestCtxGetter)),
124+
}
125+
tracerAnteHandler, _ := sdk.ChainAnteDecorators(tracerAnteDecorators...)
126+
127+
return router.AnteHandle, tracerAnteHandler, router.AnteDeps, nil
121128
}

app/ante_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func (suite *AnteTestSuite) SetupTest(isCheckTx bool) {
8484
Tracer: &tr,
8585
}
8686
tracingInfo.SetContext(context.Background())
87-
antehandler, anteDepGenerator, err := app.NewAnteHandlerAndDepGenerator(
87+
antehandler, _, anteDepGenerator, err := app.NewAnteHandlerAndDepGenerator(
8888
app.HandlerOptions{
8989
HandlerOptions: ante.HandlerOptions{
9090
AccountKeeper: suite.App.AccountKeeper,

app/app.go

+49-24
Original file line numberDiff line numberDiff line change
@@ -365,8 +365,9 @@ type App struct {
365365
optimisticProcessingInfo *OptimisticProcessingInfo
366366

367367
// batchVerifier *ante.SR25519BatchVerifier
368-
txDecoder sdk.TxDecoder
369-
AnteHandler sdk.AnteHandler
368+
txDecoder sdk.TxDecoder
369+
AnteHandler sdk.AnteHandler
370+
TracerAnteHandler sdk.AnteHandler
370371

371372
versionInfo version.Info
372373

@@ -387,6 +388,11 @@ type App struct {
387388
receiptStore seidb.StateStore
388389

389390
forkInitializer func(sdk.Context)
391+
392+
httpServerStartSignal chan struct{}
393+
wsServerStartSignal chan struct{}
394+
httpServerStartSignalSent bool
395+
wsServerStartSignalSent bool
390396
}
391397

392398
type AppOption func(*App)
@@ -437,19 +443,21 @@ func New(
437443
memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey, banktypes.DeferredCacheStoreKey, oracletypes.MemStoreKey)
438444

439445
app := &App{
440-
BaseApp: bApp,
441-
cdc: cdc,
442-
appCodec: appCodec,
443-
interfaceRegistry: interfaceRegistry,
444-
invCheckPeriod: invCheckPeriod,
445-
keys: keys,
446-
tkeys: tkeys,
447-
memKeys: memKeys,
448-
txDecoder: encodingConfig.TxConfig.TxDecoder(),
449-
versionInfo: version.NewInfo(),
450-
metricCounter: &map[string]float32{},
451-
encodingConfig: encodingConfig,
452-
stateStore: stateStore,
446+
BaseApp: bApp,
447+
cdc: cdc,
448+
appCodec: appCodec,
449+
interfaceRegistry: interfaceRegistry,
450+
invCheckPeriod: invCheckPeriod,
451+
keys: keys,
452+
tkeys: tkeys,
453+
memKeys: memKeys,
454+
txDecoder: encodingConfig.TxConfig.TxDecoder(),
455+
versionInfo: version.NewInfo(),
456+
metricCounter: &map[string]float32{},
457+
encodingConfig: encodingConfig,
458+
stateStore: stateStore,
459+
httpServerStartSignal: make(chan struct{}, 1),
460+
wsServerStartSignal: make(chan struct{}, 1),
453461
}
454462

455463
for _, option := range appOptions {
@@ -924,7 +932,7 @@ func New(
924932
signModeHandler := encodingConfig.TxConfig.SignModeHandler()
925933
// app.batchVerifier = ante.NewSR25519BatchVerifier(app.AccountKeeper, signModeHandler)
926934

927-
anteHandler, anteDepGenerator, err := NewAnteHandlerAndDepGenerator(
935+
anteHandler, tracerAnteHandler, anteDepGenerator, err := NewAnteHandlerAndDepGenerator(
928936
HandlerOptions{
929937
HandlerOptions: ante.HandlerOptions{
930938
AccountKeeper: app.AccountKeeper,
@@ -952,6 +960,7 @@ func New(
952960
panic(err)
953961
}
954962
app.AnteHandler = anteHandler
963+
app.TracerAnteHandler = tracerAnteHandler
955964

956965
app.SetAnteHandler(anteHandler)
957966
app.SetAnteDepGenerator(anteDepGenerator)
@@ -1580,6 +1589,16 @@ func (app *App) BuildDependenciesAndRunTxs(ctx sdk.Context, txs [][]byte, typedT
15801589
}
15811590

15821591
func (app *App) ProcessBlock(ctx sdk.Context, txs [][]byte, req BlockProcessRequest, lastCommit abci.CommitInfo, simulate bool) ([]abci.Event, []*abci.ExecTxResult, abci.ResponseEndBlock, error) {
1592+
defer func() {
1593+
if !app.httpServerStartSignalSent {
1594+
app.httpServerStartSignalSent = true
1595+
app.httpServerStartSignal <- struct{}{}
1596+
}
1597+
if !app.wsServerStartSignalSent {
1598+
app.wsServerStartSignalSent = true
1599+
app.wsServerStartSignal <- struct{}{}
1600+
}
1601+
}()
15831602
ctx = ctx.WithIsOCCEnabled(app.OccEnabled())
15841603

15851604
events := []abci.Event{}
@@ -1875,23 +1894,29 @@ func (app *App) RegisterTendermintService(clientCtx client.Context) {
18751894
tmservice.RegisterTendermintService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.interfaceRegistry)
18761895

18771896
if app.evmRPCConfig.HTTPEnabled {
1878-
evmHTTPServer, err := evmrpc.NewEVMHTTPServer(app.Logger(), app.evmRPCConfig, clientCtx.Client, &app.EvmKeeper, app.BaseApp, app.AnteHandler, app.RPCContextProvider, app.encodingConfig.TxConfig, DefaultNodeHome, nil)
1897+
evmHTTPServer, err := evmrpc.NewEVMHTTPServer(app.Logger(), app.evmRPCConfig, clientCtx.Client, &app.EvmKeeper, app.BaseApp, app.TracerAnteHandler, app.RPCContextProvider, app.encodingConfig.TxConfig, DefaultNodeHome, nil)
18791898
if err != nil {
18801899
panic(err)
18811900
}
1882-
if err := evmHTTPServer.Start(); err != nil {
1883-
panic(err)
1884-
}
1901+
go func() {
1902+
<-app.httpServerStartSignal
1903+
if err := evmHTTPServer.Start(); err != nil {
1904+
panic(err)
1905+
}
1906+
}()
18851907
}
18861908

18871909
if app.evmRPCConfig.WSEnabled {
1888-
evmWSServer, err := evmrpc.NewEVMWebSocketServer(app.Logger(), app.evmRPCConfig, clientCtx.Client, &app.EvmKeeper, app.BaseApp, app.AnteHandler, app.RPCContextProvider, app.encodingConfig.TxConfig, DefaultNodeHome)
1910+
evmWSServer, err := evmrpc.NewEVMWebSocketServer(app.Logger(), app.evmRPCConfig, clientCtx.Client, &app.EvmKeeper, app.BaseApp, app.TracerAnteHandler, app.RPCContextProvider, app.encodingConfig.TxConfig, DefaultNodeHome)
18891911
if err != nil {
18901912
panic(err)
18911913
}
1892-
if err := evmWSServer.Start(); err != nil {
1893-
panic(err)
1894-
}
1914+
go func() {
1915+
<-app.wsServerStartSignal
1916+
if err := evmWSServer.Start(); err != nil {
1917+
panic(err)
1918+
}
1919+
}()
18951920
}
18961921
}
18971922

evmrpc/send.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func NewSendAPI(tmClient rpcclient.Client, txConfig client.TxConfig, sendConfig
4747
keeper: k,
4848
ctxProvider: ctxProvider,
4949
homeDir: homeDir,
50-
backend: NewBackend(ctxProvider, k, txConfig.TxDecoder(), tmClient, simulateConfig, app, antehandler),
50+
backend: NewBackend(ctxProvider, k, txConfig, tmClient, simulateConfig, app, antehandler),
5151
connectionType: connectionType,
5252
}
5353
}

evmrpc/server.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@ func NewEVMHTTPServer(
5353
ctx := ctxProvider(LatestCtxHeight)
5454

5555
txAPI := NewTransactionAPI(tmClient, k, ctxProvider, txConfig, homeDir, ConnectionTypeHTTP)
56-
debugAPI := NewDebugAPI(tmClient, k, ctxProvider, txConfig.TxDecoder(), simulateConfig, app, antehandler, ConnectionTypeHTTP)
56+
debugAPI := NewDebugAPI(tmClient, k, ctxProvider, txConfig, simulateConfig, app, antehandler, ConnectionTypeHTTP)
5757
if isPanicOrSyntheticTxFunc == nil {
5858
isPanicOrSyntheticTxFunc = func(ctx context.Context, hash common.Hash) (bool, error) {
5959
return debugAPI.isPanicOrSyntheticTx(ctx, hash)
6060
}
6161
}
6262
seiTxAPI := NewSeiTransactionAPI(tmClient, k, ctxProvider, txConfig, homeDir, ConnectionTypeHTTP, isPanicOrSyntheticTxFunc)
63-
seiDebugAPI := NewSeiDebugAPI(tmClient, k, ctxProvider, txConfig.TxDecoder(), simulateConfig, app, antehandler, ConnectionTypeHTTP)
63+
seiDebugAPI := NewSeiDebugAPI(tmClient, k, ctxProvider, txConfig, simulateConfig, app, antehandler, ConnectionTypeHTTP)
6464

6565
apis := []rpc.API{
6666
{
@@ -101,7 +101,7 @@ func NewEVMHTTPServer(
101101
},
102102
{
103103
Namespace: "eth",
104-
Service: NewSimulationAPI(ctxProvider, k, txConfig.TxDecoder(), tmClient, simulateConfig, app, antehandler, ConnectionTypeHTTP),
104+
Service: NewSimulationAPI(ctxProvider, k, txConfig, tmClient, simulateConfig, app, antehandler, ConnectionTypeHTTP),
105105
},
106106
{
107107
Namespace: "net",
@@ -204,7 +204,7 @@ func NewEVMWebSocketServer(
204204
},
205205
{
206206
Namespace: "eth",
207-
Service: NewSimulationAPI(ctxProvider, k, txConfig.TxDecoder(), tmClient, simulateConfig, app, antehandler, ConnectionTypeWS),
207+
Service: NewSimulationAPI(ctxProvider, k, txConfig, tmClient, simulateConfig, app, antehandler, ConnectionTypeWS),
208208
},
209209
{
210210
Namespace: "net",

evmrpc/setup_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,7 @@ func init() {
553553
if err != nil {
554554
panic(err)
555555
}
556-
HttpServer, err := evmrpc.NewEVMHTTPServer(infoLog, goodConfig, &MockClient{}, EVMKeeper, testApp.BaseApp, testApp.AnteHandler, ctxProvider, TxConfig, "", isPanicTxFunc)
556+
HttpServer, err := evmrpc.NewEVMHTTPServer(infoLog, goodConfig, &MockClient{}, EVMKeeper, testApp.BaseApp, testApp.TracerAnteHandler, ctxProvider, TxConfig, "", isPanicTxFunc)
557557
if err != nil {
558558
panic(err)
559559
}
@@ -565,7 +565,7 @@ func init() {
565565
badConfig := evmrpc.DefaultConfig
566566
badConfig.HTTPPort = TestBadPort
567567
badConfig.FilterTimeout = 500 * time.Millisecond
568-
badHTTPServer, err := evmrpc.NewEVMHTTPServer(infoLog, badConfig, &MockBadClient{}, EVMKeeper, testApp.BaseApp, testApp.AnteHandler, ctxProvider, TxConfig, "", nil)
568+
badHTTPServer, err := evmrpc.NewEVMHTTPServer(infoLog, badConfig, &MockBadClient{}, EVMKeeper, testApp.BaseApp, testApp.TracerAnteHandler, ctxProvider, TxConfig, "", nil)
569569
if err != nil {
570570
panic(err)
571571
}
@@ -574,7 +574,7 @@ func init() {
574574
}
575575

576576
// Start ws server
577-
wsServer, err := evmrpc.NewEVMWebSocketServer(infoLog, goodConfig, &MockClient{}, EVMKeeper, testApp.BaseApp, testApp.AnteHandler, ctxProvider, TxConfig, "")
577+
wsServer, err := evmrpc.NewEVMWebSocketServer(infoLog, goodConfig, &MockClient{}, EVMKeeper, testApp.BaseApp, testApp.TracerAnteHandler, ctxProvider, TxConfig, "")
578578
if err != nil {
579579
panic(err)
580580
}

0 commit comments

Comments
 (0)