@@ -14,6 +14,7 @@ import (
1414 gethTypes "github.com/onflow/go-ethereum/core/types"
1515 "github.com/onflow/go-ethereum/eth/tracers"
1616 "github.com/onflow/go-ethereum/eth/tracers/logger"
17+ gethParams "github.com/onflow/go-ethereum/params"
1718 "github.com/onflow/go-ethereum/rpc"
1819 "github.com/rs/zerolog"
1920
@@ -44,15 +45,16 @@ type txTraceResult struct {
4445}
4546
4647type DebugAPI struct {
47- registerStore * pebble.RegisterStorage
48- logger zerolog.Logger
49- tracer storage.TraceIndexer
50- blocks storage.BlockIndexer
51- transactions storage.TransactionIndexer
52- receipts storage.ReceiptIndexer
53- client * requester.CrossSporkClient
54- config config.Config
55- rateLimiter RateLimiter
48+ registerStore * pebble.RegisterStorage
49+ logger zerolog.Logger
50+ tracer storage.TraceIndexer
51+ blocks storage.BlockIndexer
52+ transactions storage.TransactionIndexer
53+ receipts storage.ReceiptIndexer
54+ client * requester.CrossSporkClient
55+ config config.Config
56+ rateLimiter RateLimiter
57+ evmChainConfig * gethParams.ChainConfig
5658}
5759
5860func NewDebugAPI (
@@ -66,16 +68,19 @@ func NewDebugAPI(
6668 logger zerolog.Logger ,
6769 rateLimiter RateLimiter ,
6870) * DebugAPI {
71+ evmChainConfig := emulator .MakeChainConfig (config .EVMNetworkID )
72+
6973 return & DebugAPI {
70- registerStore : registerStore ,
71- logger : logger ,
72- tracer : tracer ,
73- blocks : blocks ,
74- transactions : transactions ,
75- receipts : receipts ,
76- client : client ,
77- config : config ,
78- rateLimiter : rateLimiter ,
74+ registerStore : registerStore ,
75+ logger : logger ,
76+ tracer : tracer ,
77+ blocks : blocks ,
78+ transactions : transactions ,
79+ receipts : receipts ,
80+ client : client ,
81+ config : config ,
82+ rateLimiter : rateLimiter ,
83+ evmChainConfig : evmChainConfig ,
7984 }
8085}
8186
@@ -148,17 +153,17 @@ func (d *DebugAPI) TraceCall(
148153 config = & tracers.TraceCallConfig {}
149154 }
150155
151- height , err := resolveBlockTag ( & blockNrOrHash , d . blocks , d . logger )
156+ tracer , err := d . tracerForReceipt ( & config . TraceConfig , nil )
152157 if err != nil {
153158 return nil , err
154159 }
155160
156- block , err := d .blocks . GetByHeight ( height )
161+ height , err := resolveBlockTag ( & blockNrOrHash , d .blocks , d . logger )
157162 if err != nil {
158163 return nil , err
159164 }
160165
161- tracer , err := d .tracerForReceipt ( & config . TraceConfig , block . Timestamp , nil )
166+ block , err := d .blocks . GetByHeight ( height )
162167 if err != nil {
163168 return nil , err
164169 }
@@ -310,7 +315,7 @@ func (d *DebugAPI) traceTransaction(
310315 return nil , err
311316 }
312317
313- tracer , err := d .tracerForReceipt (config , block . Timestamp , receipt )
318+ tracer , err := d .tracerForReceipt (config , receipt )
314319 if err != nil {
315320 return nil , err
316321 }
@@ -398,7 +403,7 @@ func (d *DebugAPI) traceBlockByNumber(
398403 return nil , err
399404 }
400405
401- tracer , err := d .tracerForReceipt (config , block . Timestamp , receipt )
406+ tracer , err := d .tracerForReceipt (config , receipt )
402407 if err != nil {
403408 return nil , err
404409 }
@@ -439,17 +444,16 @@ func (d *DebugAPI) executorAtBlock(block *models.Block) (*evm.BlockExecutor, err
439444}
440445
441446func (d * DebugAPI ) tracerForReceipt (
442- traceConfig * tracers.TraceConfig ,
443- evmBlockTimestamp uint64 ,
447+ config * tracers.TraceConfig ,
444448 receipt * models.Receipt ,
445449) (* tracers.Tracer , error ) {
446- if traceConfig == nil {
447- traceConfig = & tracers.TraceConfig {}
450+ if config == nil {
451+ config = & tracers.TraceConfig {}
448452 }
449453
450454 // Default tracer is the struct logger
451- if traceConfig .Tracer == nil {
452- logger := logger .NewStructLogger (traceConfig .Config )
455+ if config .Tracer == nil {
456+ logger := logger .NewStructLogger (config .Config )
453457 return & tracers.Tracer {
454458 Hooks : logger .Hooks (),
455459 GetResult : logger .GetResult ,
@@ -467,16 +471,11 @@ func (d *DebugAPI) tracerForReceipt(
467471 }
468472 }
469473
470- evmChainConfig := emulator .MakeChainConfig (d .config .EVMNetworkID )
471- if ! config .IsPrague (evmBlockTimestamp , d .config .FlowNetworkID ) {
472- evmChainConfig .PragueTime = nil
473- }
474-
475474 return tracers .DefaultDirectory .New (
476- * traceConfig .Tracer ,
475+ * config .Tracer ,
477476 tracerCtx ,
478- traceConfig .TracerConfig ,
479- evmChainConfig ,
477+ config .TracerConfig ,
478+ d . evmChainConfig ,
480479 )
481480}
482481
0 commit comments