From 81a7f0c6614d1ce2824223cbdd1d5736e13ea89a Mon Sep 17 00:00:00 2001 From: JukLee0ira Date: Fri, 25 Oct 2024 18:24:35 +0800 Subject: [PATCH] fix issue --- eth/tracers/native/contract.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/eth/tracers/native/contract.go b/eth/tracers/native/contract.go index def2df61cd7d..10f4f36379cf 100644 --- a/eth/tracers/native/contract.go +++ b/eth/tracers/native/contract.go @@ -52,7 +52,7 @@ func NewContractTracer(cfg json.RawMessage) (tracers.Tracer, error) { } } t := &contractTracer{ - Addrs: make([]string, 1), + Addrs: make([]string, 0), config: config, } // handle invalid opcode case @@ -65,7 +65,8 @@ func NewContractTracer(cfg json.RawMessage) (tracers.Tracer, error) { } func (t *contractTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { - if create { + //When not searching for opcodes, record the contract address. + if create && t.config.OpCode == "" { t.Addrs = append(t.Addrs, addrToHex(to)) } } @@ -83,9 +84,11 @@ func (t *contractTracer) CaptureState(env *vm.EVM, pc uint64, op vm.OpCode, gas, if t.config.OpCode == "" { return } - if op.String() == t.config.OpCode { + targetOp := vm.StringToOp(t.config.OpCode) + if op == targetOp { addr := scope.Contract.Address() t.Addrs = append(t.Addrs, addrToHex(addr)) + t.Stop(nil) } }