The debug_traceBlockByNumber
method returns a full trace of all invoked opcodes of all transactions included in the specified block, identified by its block number. This method provides detailed low-level execution information useful for debugging and analyzing transaction behavior.
This method traces the execution of all transactions in a block, identified by its number, at the opcode level.
Block number in hex format or the string tag: latest, earliest, or pending
Trace options
Setting this to true disables storage capture
Setting this to true disables memory capture
Setting this to true disables stack capture
Use a custom tracer (available: callTracer, prestateTracer, etc.)
Overrides the default timeout of 5 seconds for JavaScript-based tracing
Array of transaction traces within the block
Gas used by the transaction
Whether the transaction failed
The return value of the transaction
Array of structured EVM operation logs
Program counter position
The executed opcode
Remaining gas
Gas cost for this operation
Call depth
EVM memory contents (if not disabled)
EVM stack contents (if not disabled)
Storage changes (if not disabled)
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"gas": 21000,
"failed": false,
"returnValue": "",
"structLogs": [
{
"pc": 0,
"op": "PUSH1",
"gas": 68232,
"gasCost": 3,
"depth": 1,
"stack": [],
"memory": [],
"storage": {}
},
{
"pc": 2,
"op": "MSTORE",
"gas": 68229,
"gasCost": 12,
"depth": 1,
"stack": ["0x60", "0x40"],
"memory": [
"0000000000000000000000000000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000000000000000000000000000"
],
"storage": {}
}
// Many more opcode logs...
]
}
// Additional transaction traces...
]
}
When using the callTracer
option, the response is formatted as a call graph:
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"type": "CALL",
"from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",
"to": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"value": "0x0",
"gas": "0x13458",
"gasUsed": "0x8fc",
"input": "0xa9059cbb0000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984000000000000000000000000000000000000000000000002b5e3af16b1880000",
"output": "0x0000000000000000000000000000000000000000000000000000000000000001",
"calls": []
}
// Additional call traces...
]
}
The blockNumber
parameter accepts several special tags:
latest
: Most recent block that has been confirmed by the networkearliest
: Genesis block (block 0)pending
: Pending block with transactions in the mempool (not yet mined)The debug_traceBlockByNumber method supports several built-in tracers: