El método trace_block
devuelve trazas de ejecución para todas las transacciones incluidas en un bloque específico. Esto proporciona una visión completa de todas las interacciones de contratos que ocurrieron dentro de un solo bloque.
Este método devuelve un array de trazas para todas las transacciones en el bloque especificado.
Número de bloque (número de bloque en hex o "latest", "earliest", "pending")
Array de objetos de traza para todas las transacciones en el bloque
Información sobre la acción realizada
Tipo de llamada (p.ej., "call", "delegatecall", "staticcall")
Dirección del remitente
Gas proporcionado para esta acción
Datos de entrada
Dirección del destinatario
Valor enviado (en wei)
Código de inicialización del contrato (para trazas de creación)
Hash del bloque
Número de bloque
Resultado de la llamada
Cantidad de gas utilizado
Datos de salida
Dirección del contrato creado (para trazas de creación)
Código del contrato (para trazas de creación)
Número de subtrazas
Ruta de dirección dentro de la traza de ejecución
Hash de la transacción
Posición de índice de la transacción en el bloque
Tipo de traza (p.ej., "call", "create", "suicide")
Mensaje de error (si la transacción falló)
La respuesta contiene trazas para todas las transacciones en el bloque, donde cada transacción puede contener múltiples trazas. Las trazas forman una estructura jerárquica:
traceAddress: []
) representan la transacción inicialtraceAddress
que indica su posición en el árbol de llamadassubtraces
muestra el número de hijos directos que tiene una trazaAquí hay una representación visual simplificada de cómo se estructuran las trazas:
Transacción 1
├── Llamada al Contrato A [traceAddress: []]
│ ├── Llamada de A a B [traceAddress: [0]]
│ └── Llamada de A a C [traceAddress: [1]]
│ └── Llamada de C a D [traceAddress: [1, 0]]
└── Llamada al Contrato E [traceAddress: []]
Transacción 2
└── ... (estructura similar)
El método devuelve diferentes tipos de trazas indicados por el campo type
:
Para trazas con type: "call"
, el campo callType
indica el tipo de llamada:
Si una transacción o subtraza falló:
error
contendrá la razón (p.ej., "out of gas", "reverted")result
puede ser nulo o incompleto{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"action": {
"callType": "call",
"from": "0x8bb73bcb5d553b5a556358d27625323fd781d37",
"gas": "0x576e",
"input": "0x370158ea000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"to": "0x6090a6e47849629b7245dfa1ca21d94cd15878ef",
"value": "0x0"
},
"blockHash": "0x8512d367492371edf44ebcbbbd935bc434946dddc2b126cb558df5906012186c",
"blockNumber": 1059416,
"result": {
"gasUsed": "0x14a0",
"output": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
"subtraces": 0,
"traceAddress": [],
"transactionHash": "0x4c253746e8d0ab1d135df9711532c41a85ab33f069f1c733ceb0a6bf3e304503",
"transactionPosition": 0,
"type": "call"
},
{
"action": {
"callType": "call",
"from": "0x431957dbd818eaab7c5ed352430d1bf44dccd837",
"gas": "0x3d090",
"input": "0x4c37a69b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001",
"to": "0x6090a6e47849629b7245dfa1ca21d94cd15878ef",
"value": "0x0"
},
"blockHash": "0x8512d367492371edf44ebcbbbd935bc434946dddc2b126cb558df5906012186c",
"blockNumber": 1059416,
"result": {
"gasUsed": "0x2b43",
"output": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
"subtraces": 0,
"traceAddress": [],
"transactionHash": "0x1eb099b3e9396b9d188b1c313261f6a13c7e13cb5c1afd3884847cc2c61289c0",
"transactionPosition": 1,
"type": "call"
}
]
}
trace_transaction
para transacciones específicas si no necesitas el bloque completo--gcmode=archive
y OpenEthereum/Nethermind)