Skip to main content
POST
trace_block
curl --request POST \
  --url https://tempo-moderato.core.chainstack.com/a25a421add2280d53fdbc23417055501/ \
  --header 'Content-Type: application/json' \
  --data '
{
  "jsonrpc": "2.0",
  "method": "trace_block",
  "params": [
    "latest"
  ],
  "id": 1
}
'
{
  "jsonrpc": "<string>",
  "id": 123,
  "result": [
    {}
  ]
}
Tempo API method that returns execution traces for all transactions in a block. This provides detailed call-level traces using the Parity/OpenEthereum trace format.
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)

Response

  • result — array of trace objects for all transactions in the block:
    • action — the action object:
      • from — sender address
      • to — recipient address
      • callType — type of call (call, delegatecall, staticcall, etc.)
      • gas — gas provided
      • input — call data
      • value — value transferred
    • blockHash — hash of the block
    • blockNumber — block number
    • result — the result object:
      • gasUsed — gas consumed
      • output — return data
    • subtraces — number of child traces
    • traceAddress — position in the trace tree
    • transactionHash — hash of the transaction
    • transactionPosition — index of the transaction in the block
    • type — trace type (call, create, suicide, reward)

trace_block code examples

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

const traceBlock = async (blockNumber) => {
    const traces = await provider.send("trace_block", [blockNumber]);

    console.log(`Block has ${traces.length} traces`);

    // Group traces by transaction
    const txTraces = {};
    for (const trace of traces) {
      const txHash = trace.transactionHash;
      if (!txTraces[txHash]) {
        txTraces[txHash] = [];
      }
      txTraces[txHash].push(trace);
    }

    console.log(`Across ${Object.keys(txTraces).length} transactions`);

    for (const [txHash, txTrace] of Object.entries(txTraces)) {
      console.log(`\nTx: ${txHash}`);
      for (const trace of txTrace) {
        const indent = "  ".repeat(trace.traceAddress.length);
        console.log(`${indent}${trace.action.callType}: ${trace.action.from} -> ${trace.action.to}`);
      }
    }
  };

traceBlock("latest");

Body

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

Block number (hex) or tag

id
integer
default:1

Response

200 - application/json

Block traces

jsonrpc
string
id
integer
result
object[]

Array of trace objects for all transactions in the block

Last modified on January 28, 2026