El método debug_traceBlockByNumber
devuelve un rastreo completo de todos los opcodes invocados de todas las transacciones incluidas en el bloque especificado, identificado por su número de bloque. Este método proporciona información detallada de ejecución de bajo nivel útil para depurar y analizar el comportamiento de las transacciones.
Este método rastrea la ejecución de todas las transacciones en un bloque, identificado por su número, a nivel de opcode.
Número de bloque en formato hexadecimal o la etiqueta: latest, earliest, o pending
Opciones de rastreo
Establecer esto a true desactiva la captura de almacenamiento
Establecer esto a true desactiva la captura de memoria
Establecer esto a true desactiva la captura de pila
Usar un trazador personalizado (disponibles: callTracer, prestateTracer, etc.)
Anula el tiempo de espera predeterminado de 5 segundos para el rastreo basado en JavaScript
Array de rastreos de transacciones dentro del bloque
Gas utilizado por la transacción
Si la transacción falló
El valor de retorno de la transacción
Array de registros estructurados de operaciones EVM
Posición del contador de programa
El opcode ejecutado
Gas restante
Costo de gas para esta operación
Profundidad de llamada
Contenido de memoria EVM (si no está desactivado)
Contenido de pila EVM (si no está desactivado)
Cambios de almacenamiento (si no está desactivado)
{
"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...
]
}
Cuando se utiliza la opción callTracer
, la respuesta se formatea como un gráfico de llamadas:
{
"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...
]
}
El parámetro blockNumber
acepta varias etiquetas especiales:
latest
: Bloque más reciente que ha sido confirmado por la redearliest
: Bloque génesis (bloque 0)pending
: Bloque pendiente con transacciones en el mempool (aún no minado)El método debug_traceBlockByNumber admite varios trazadores incorporados: