El método trace_replayBlockTransactions
reproduce todas las transacciones en un bloque especificado y devuelve información detallada de rastreo para cada transacción. Esto proporciona información sobre el flujo de ejecución de las transacciones, permitiendo un análisis detallado y depuración.
Este método reproduce todas las transacciones en un bloque con información detallada de rastreo.
Número de bloque en formato hexadecimal o etiqueta de bloque (latest, earliest, pending)
Array de tipos de rastreo a incluir en la respuesta
Array de resultados de rastreo para cada transacción en el bloque
Datos de salida de la transacción
Diferencias de estado causadas por la transacción (si se solicita)
Cambios de estado para una dirección
Array de objetos de rastreo
Detalles sobre la acción de llamada
Tipo de llamada (call, delegatecall, etc.)
Dirección del remitente
Gas proporcionado para la llamada
Datos de entrada para la llamada
Dirección del destinatario
Valor transferido en wei
Resultado de la llamada
Cantidad de gas utilizado
Datos de salida de la llamada
Número de sub-rastros
Ruta de dirección de la ubicación del rastro en el árbol de llamadas
Tipo de rastro
Hash de la transacción
Rastro de ejecución de la máquina virtual (si se solicita)
Bytecode EVM que se está ejecutando
Array de operaciones ejecutadas
Costo de gas de la operación
Resultado de ejecución de la operación
Contador de programa
Información sobre la sub-ejecución de llamada
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"output": "0x0000000000000000000000000000000000000000000000000000000000000001",
"stateDiff": {
"0x1234567890123456789012345678901234567890": {
"balance": {
"*": {
"from": "0x100",
"to": "0x110"
}
},
"code": "=",
"nonce": {
"*": {
"from": "0x10",
"to": "0x11"
}
},
"storage": {
"0x0000000000000000000000000000000000000000000000000000000000000001": {
"*": {
"from": "0x0000000000000000000000000000000000000000000000000000000000000000",
"to": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
}
}
}
},
"trace": [
{
"action": {
"callType": "call",
"from": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
"gas": "0x4c40d",
"input": "0xa9059cbb000000000000000000000000ea674fdde714fd979de3edf0f56aa9716b898ec80000000000000000000000000000000000000000000000002b5e3af16b1880000",
"to": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"value": "0x0"
},
"result": {
"gasUsed": "0x9868",
"output": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
"subtraces": 0,
"traceAddress": [],
"type": "call"
}
],
"transactionHash": "0x69f8de1af3129dc3b1adb5b3c1577476f737f9335f156e177b48c2ed88f3f7c4",
"vmTrace": {
"code": "0x60606040...",
"ops": [
{
"cost": 3,
"ex": {
"mem": null,
"push": ["0x60"],
"store": null,
"used": 16723979
},
"pc": 0,
"sub": null
}
// Operaciones adicionales...
]
}
}
// Rastros de transacciones adicionales...
]
}
El parámetro traceTypes
acepta un array de los siguientes valores:
Puede solicitar cualquier combinación de estos tipos de rastro.
El formato de diferencia de estado utiliza los siguientes símbolos:
El rastro VM contiene:
El formato de rastro muestra la ruta de ejecución:
El parámetro blockNumber
acepta:
0x1b4
)latest
: El bloque minado más recienteearliest
: El bloque génesispending
: Bloque actualmente pendiente (transacciones esperando ser minadas)