ethereum-optimism / op-geth

GNU Lesser General Public License v3.0
280 stars 735 forks source link

Error using debug_traceBlockByNumber & built-in tracers (i.e. callTracer, prestateTracer) #308

Open HarukiMcCree opened 5 months ago

HarukiMcCree commented 5 months ago

System information

op-geth image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101308.2 op-node image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.7.2 historicalrpc geth image: ethereum/client-go:v1.12.0 OS & Version: Debian GNU/Linux 11 (bullseye)

op-geth params

--ws
--ws.port=8546
--ws.addr=0.0.0.0
--ws.origins=*
--http
--http.api=eth,net,web3,txpool,debug
--http.port=8545
--http.addr=0.0.0.0
--http.vhosts=*
--http.corsdomain=*
--authrpc.addr=0.0.0.0
--authrpc.port=8551
--authrpc.vhosts=*
--rpc.evmtimeout=0
--rpc.gascap=0
--rpc.txfeecap=0
--history.transactions=0
--datadir=/data
--verbosity=3
--rollup.historicalrpctimeout=600s
--rollup.disabletxpoolgossip=true
--rollup.sequencerhttp=https://mainnet.optimism.io/
--nodiscover
--networkid=10
--syncmode=full
--snapshot=false
--maxpeers=0
--authrpc.jwtsecret=/tmp/jwtsecret
--gcmode=archive
--op-network=op-mainnet
--authrpc.jwtsecret=/local/jwtsecret
--rollup.historicalrpc=http://address:port

op-node params

--l1.trustrpc=true
--network=mainnet
--rpc.addr=0.0.0.0
--rpc.port=8545
--p2p.listen.ip=0.0.0.0
--p2p.listen.tcp=9003
--p2p.listen.udp=9003
--snapshotlog.file=/op_log/snapshot.log
--rollup.load-protocol-versions=true
--l1=ws://address:port
--l1.beacon=http://address:port
--l2=ws://address:port
--l2.jwt-secret=/local/jwtsecret

historicalrpc geth params:

--authrpc.port=8551
--authrpc.jwtsecret=/local/jwtsecret
--authrpc.addr=0.0.0.0
--authrpc.vhosts=*
--datadir=/home/geth_mainnet
--http
--http.api=eth,net,web3,txpool
--http.addr=0.0.0.0
--http.corsdomain=*
--http.vhosts=*
--http.port=8545
--ws
--ws.addr=0.0.0.0
--ws.port=8546
--ws.api=eth,net,web3
--ws.origins=*
--txlookuplimit=0
--syncmode=full
--snapshot=false
--rpc.gascap=9223372036854775807

Expected behaviour

'Usual' response with no error

Actual behaviour

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": [
    {
      "txHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "error": "TypeError: cannot read property 'toString' of undefined    in server-side tracer function 'result'"
    }
  ]
}

Steps to reproduce the behaviour

  1. Run op-geth image mentioned using above params
  2. Run op-node image mentioned using above params
  3. Send the request to op-geth, using prestateTracer or callTracer:
    curl -sH 'Content-Type: application/json' --data '{
    "jsonrpc": "2.0",
    "method": "debug_traceBlockByNumber",
    "params": [
        "0x3d9",
        {
            "tracer": "callTracer"
        }
    ],
    "id": 1
    }' http://localhost:8545

Backtrace

No backtrace

Comment

I have also seen pretty same errors here (but w/o the txHash field in the response body) and here (the txHash has 0x0...0 value like in the current issue, although there's no any TypeError and even "error" field). Actually it looks like there's a bug in built-in tracers' code

I'm not sure whether these issues are related to each other, its' behaviours looks pretty same, but I can't find an issue which combines both of them :/

Next days I'll also update op-geth & op-node and then will check if response changes in a better way; the report will be here