trace_replayTransaction
Note
Served only when
traceis named in--http.apior--ws.api; see Enabling Namespaces.
Replays a mined transaction and returns the trace types requested: the call frames, the executed instructions, the state changes, or any combination. The node re-executes the transaction’s block up to and including the transaction. A transaction the node does not know fails with -32001 and the message transaction not found.
Traces cover the block’s transactions only. The system calls a block runs before its transactions (EIP-4788 beacon root, EIP-2935 block hashes) and the epoch-closing system calls (applyIncentives and concludeEpoch) are not transactions, so no tracer shows them.
Parameters
DATA, 32 Bytes - The transaction hash.
Array - The trace types to return, any of "trace", "vmTrace" and "stateDiff".
Returns
Object - The requested traces:
output:DATA- The return data of the top-level call;0xfor a plain transfer.stateDiff:Object- WithstateDiffrequested, the state changes keyed by account address; otherwisenull. Each account hasbalance,code,nonceandstorage(keyed by slot). Each value is"="when unchanged,{"+": value}when created,{"-": value}when removed, or{"*": {"from": old, "to": new}}when changed.trace:Array- Withtracerequested, the call frames, top-level first; otherwise[]. Each frame hastype,action,error(only when the frame failed),result,subtracesandtraceAddress, with the meanings trace_transaction gives them, and no block or transaction fields. The top-level frame’saction.gasandresult.gasUsedleave out the intrinsic gas, so for a plain transfer with a 21,000 gas limit both are0x0.vmTrace:Object- WithvmTracerequested, the instructions the top-level call executed; otherwisenull. It hascode(DATA, the code that ran) andops, one entry per instruction withcost(Number, its gas cost),pc(Number, the program counter),ex(its effects:used,pushfor the stack items it pushed,memfor a memory write andstorefor a storage write),sub(the nestedvmTraceof a CALL or CREATE, ornull), and, when present,op(the opcode name) andidx.
Example
Request
curl http://localhost:8545 \
-X POST \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"trace_replayTransaction","params":["0xa794c7eb915c26fdb77242159053c1a36241bcd016b671fb07abe3fa9050805e",["trace"]],"id":1}'
Result
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"output": "0x",
"stateDiff": null,
"trace": [
{
"type": "call",
"action": {
"from": "0xb14d3c4f5fbfbcfb98af2d330000d49c95b93aa7",
"callType": "call",
"gas": "0x0",
"input": "0x",
"to": "0x0000000000000000000000000000000000000000",
"value": "0x64"
},
"result": {
"gasUsed": "0x0",
"output": "0x"
},
"subtraces": 0,
"traceAddress": []
}
],
"vmTrace": null
}
}