[feat] add call tracer and prestate tracer#1043
Conversation
bc43b72 to
e3f284d
Compare
# Conflicts: # eth-types/src/l2_types.rs # testool/src/utils.rs
# Conflicts: # eth-types/src/l2_types.rs
442be5e to
00f6015
Compare
00f6015 to
ce1a983
Compare
# Conflicts: # bus-mapping/src/circuit_input_builder/tracer_tests.rs # geth-utils/l2geth/go.mod # geth-utils/l2geth/go.sum # go.work.sum # zkevm-circuits/src/evm_circuit/execution/error_invalid_opcode.rs
|
i think in this PR, both the local CGO linked l1-tracer and l2-tracer will include "mux" tracing results. My question is, inside integration/mainnet.rs, this tool uses ETH node rpc to fetch traces in multi steps. (Fetch traces first, then collect StateAccess, then fetch states and fill statedb). Do you think the integration/mainnet.rs will still work after this PR ? Another questions is, we have a lot of existed trace files, after merging this PR, can they still be used as test inputs? In theory, zkevm-circuit can run in 2 mode: (1) StructLog without stack + PreStateTrace + CallTrace or (2) old style, StructLog with stack. Can we still support mode (2) with some config changes or it is totally broken? |
|
this is a big change PR. worth testool |
|
\b run testool |
This pr belongs to task: Remove heap allocation from GethExecStep/ExecStep
This sub pr:
This sub pr depends on #1038
Note
This pr upgrade l1geth to v1.13.5, due to a bug of
prestateTracer(see ethereum/go-ethereum#27691), which includes cankun upgrade (see also #1005).The closest release of geth include this fix is v1.12.1, which already includes
0x5cand0x5eopcode.Upgrades l1geth breaks the unit-test of invalid-opcodes, since
0x5cand0x5eare assigned by cankun.