Skip to main content
POST
trace_replayBlockTransactions
curl --request POST \
  --url https://tempo-moderato.core.chainstack.com/a25a421add2280d53fdbc23417055501/ \
  --header 'Content-Type: application/json' \
  --data '
{
  "jsonrpc": "2.0",
  "method": "trace_replayBlockTransactions",
  "params": [
    "latest",
    [
      "trace"
    ]
  ],
  "id": 1
}
'
{
  "jsonrpc": "<string>",
  "id": 123,
  "result": [
    {}
  ]
}
Tempo API method that replays all transactions in a block and returns execution traces for each. This is useful for detailed analysis of block execution with customizable trace options.
Get you own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.

Parameters

  • blockParameter — the block number (hex) or tag (latest, earliest, pending)
  • traceTypes — array of trace types to include:
    • trace — basic execution trace
    • vmTrace — full VM execution trace
    • stateDiff — state changes

Response

  • result — array of trace results, one per transaction:
    • output — return data from the transaction
    • trace — array of trace objects (if requested)
    • vmTrace — VM execution trace (if requested)
    • stateDiff — state differences (if requested)
    • transactionHash — hash of the transaction

trace_replayBlockTransactions code examples

const ethers = require('ethers');
const NODE_URL = "CHAINSTACK_NODE_URL";
const provider = new ethers.JsonRpcProvider(NODE_URL);

const replayBlock = async (blockNumber) => {
    const results = await provider.send("trace_replayBlockTransactions", [
      blockNumber,
      ["trace"]
    ]);

    console.log(`Replayed ${results.length} transactions`);

    for (let i = 0; i < results.length; i++) {
      const result = results[i];
      console.log(`\nTransaction ${i}: ${result.transactionHash}`);
      console.log(`  Output: ${result.output}`);
      console.log(`  Traces: ${result.trace?.length || 0}`);

      if (result.trace && result.trace.length > 0) {
        for (const trace of result.trace) {
          const callType = trace.action.callType || trace.type;
          console.log(`    ${callType}: ${trace.action.from} -> ${trace.action.to || 'Create'}`);
        }
      }
    }
  };

replayBlock("latest");

Body

application/json
jsonrpc
string
default:2.0
method
string
default:trace_replayBlockTransactions
params
any[]

Block number/tag and trace types array

id
integer
default:1

Response

200 - application/json

Array of replayed transaction traces

jsonrpc
string
id
integer
result
object[]

Array of trace result objects for each transaction

Last modified on January 28, 2026