Skip to main content
POST
/
debug_traceTransaction
curl --request POST \
  --url https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/ \
  --header 'Content-Type: application/json' \
  --data '{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "debug_traceTransaction",
  "params": [
    "0xffdc2accc3eae1263a9f6acdaba3d401865822f22cb3194eece4641a4c7fa133",
    {
      "tracer": "callTracer"
    }
  ]
}'
{
  "jsonrpc": "<string>",
  "id": 123,
  "result": {}
}
Monad API method that returns a detailed trace of a transaction’s execution. This method provides step-by-step execution information, which is essential for debugging failed transactions and understanding contract behavior.
Monad-specific behavior:
  • The trace options object parameter must be explicitly provided. Unlike standard EVM clients where this parameter is optional, Monad RPC will return an error (-32602 Invalid params) if the parameter is omitted. Always include the trace options, even if empty ({}).
  • When an empty trace options object {} is provided, Monad defaults to callTracer instead of struct logs, because Monad does not currently support opcode-level struct logs at the VM level.
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

  • data — the 32-byte hash of the transaction to trace.
  • object (optional) — the tracer options:
    • tracer — the tracer to use (e.g., callTracer, prestateTracer)
    • tracerConfig — configuration options for the tracer
    • timeout — timeout for the trace operation

Response

  • result — the trace result object. The structure depends on the tracer used:
    • For callTracer:
      • type — the call type (CALL, CREATE, etc.)
      • from — sender address
      • to — recipient address
      • value — value transferred
      • gas — gas provided
      • gasUsed — gas used
      • input — call data
      • output — return data
      • calls — nested calls

debug_traceTransaction code examples

const { ethers } = require("ethers");

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

async function traceTransaction() {
  const txHash = "0xffdc2accc3eae1263a9f6acdaba3d401865822f22cb3194eece4641a4c7fa133";
  const trace = await provider.send("debug_traceTransaction", [
    txHash,
    { tracer: "callTracer" }
  ]);
  console.log("Transaction trace:", JSON.stringify(trace, null, 2));
}

traceTransaction();

Use case

A practical use case for debug_traceTransaction is debugging failed transactions to identify the exact point of failure, or analyzing the complete call graph of complex multi-contract interactions.

Body

application/json
id
integer
default:1
jsonrpc
string
default:2.0
method
string
default:debug_traceTransaction
params
any[]

Response

200 - application/json

The trace result.

jsonrpc
string
id
integer
result
object