55 "fmt"
66 "math/big"
77
8+ "github.com/onflow/flow-evm-gateway/config"
89 "github.com/onflow/flow-go/fvm/evm/emulator"
910 "github.com/onflow/go-ethereum/common"
1011 "github.com/onflow/go-ethereum/core/tracing"
@@ -18,8 +19,11 @@ const (
1819 TracerName = "callTracer"
1920)
2021
21- func DefaultCallTracer (evmChainID * big.Int ) (* tracers.Tracer , error ) {
22- evmChainConfig := emulator .MakeChainConfig (evmChainID )
22+ func DefaultCallTracer (evmHeight uint64 , cfg config.Config ) (* tracers.Tracer , error ) {
23+ evmChainConfig := emulator .MakeChainConfig (cfg .EVMNetworkID )
24+ if ! config .IsPrague (evmHeight , cfg .FlowNetworkID ) {
25+ evmChainConfig .PragueTime = nil
26+ }
2327
2428 tracer , err := tracers .DefaultDirectory .New (
2529 TracerName ,
@@ -35,44 +39,46 @@ func DefaultCallTracer(evmChainID *big.Int) (*tracers.Tracer, error) {
3539}
3640
3741type EVMTracer interface {
38- TxTracer () * tracers.Tracer
42+ TxTracer (evmHeight uint64 ) ( * tracers.Tracer , error )
3943 ResetTracer () error
4044 Collect (txID common.Hash ) (json.RawMessage , error )
4145}
4246
4347type CallTracerCollector struct {
4448 tracer * tracers.Tracer
4549 resultsByTxID map [common.Hash ]json.RawMessage
50+ config config.Config
4651 logger zerolog.Logger
47- evmChainID * big. Int
52+ lastEvmHeight uint64
4853}
4954
5055var _ EVMTracer = (* CallTracerCollector )(nil )
5156
52- func NewCallTracerCollector (evmChainID * big.Int , logger zerolog.Logger ) (
53- * CallTracerCollector ,
57+ func NewCallTracerCollector (config config.Config , logger zerolog.Logger ) * CallTracerCollector {
58+ return & CallTracerCollector {
59+ resultsByTxID : make (map [common.Hash ]json.RawMessage ),
60+ config : config ,
61+ logger : logger .With ().Str ("component" , "evm-tracer" ).Logger (),
62+ }
63+ }
64+
65+ func (t * CallTracerCollector ) TxTracer (evmHeight uint64 ) (
66+ * tracers.Tracer ,
5467 error ,
5568) {
56- tracer , err := DefaultCallTracer (evmChainID )
69+ var err error
70+ t .tracer , err = DefaultCallTracer (evmHeight , t .config )
5771 if err != nil {
5872 return nil , err
5973 }
74+ t .lastEvmHeight = evmHeight
6075
61- return & CallTracerCollector {
62- tracer : tracer ,
63- resultsByTxID : make (map [common.Hash ]json.RawMessage ),
64- logger : logger .With ().Str ("component" , "evm-tracer" ).Logger (),
65- evmChainID : evmChainID ,
66- }, nil
67- }
68-
69- func (t * CallTracerCollector ) TxTracer () * tracers.Tracer {
70- return NewSafeTxTracer (t )
76+ return NewSafeTxTracer (t ), nil
7177}
7278
7379func (t * CallTracerCollector ) ResetTracer () error {
7480 var err error
75- t .tracer , err = DefaultCallTracer (t .evmChainID )
81+ t .tracer , err = DefaultCallTracer (t .lastEvmHeight , t . config )
7682 return err
7783}
7884
@@ -207,8 +213,8 @@ var _ EVMTracer = (*nopTracer)(nil)
207213
208214type nopTracer struct {}
209215
210- func (n nopTracer ) TxTracer () * tracers.Tracer {
211- return nil
216+ func (n nopTracer ) TxTracer (_ uint64 ) ( * tracers.Tracer , error ) {
217+ return nil , nil
212218}
213219
214220func (n nopTracer ) Collect (_ common.Hash ) (json.RawMessage , error ) {
0 commit comments