curl --request POST \
--url https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/ \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_traceBlockByNumber",
"params": [
"latest",
{
"tracer": "callTracer"
}
]
}
'{
"jsonrpc": "<string>",
"id": 123,
"result": [
{}
]
}curl --request POST \
--url https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/ \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_traceBlockByNumber",
"params": [
"latest",
{
"tracer": "callTracer"
}
]
}
'{
"jsonrpc": "<string>",
"id": 123,
"result": [
{}
]
}-32602 Invalid params) if the parameter is omitted. Always include the trace options, even if empty ({}).{} is provided, Monad defaults to callTracer instead of struct logs, because Monad does not currently support opcode-level struct logs at the VM level.quantity|tag — the block number as a hexadecimal string, or one of the following block tags:
latest — the most recent block in the canonical chainearliest — the genesis blockpending — the pending state/transactionsobject (optional) — the tracer options:
tracer — the tracer to use (e.g., callTracer, prestateTracer)tracerConfig — configuration options for the tracertimeout — timeout for the trace operationresult — an array of trace results, one for each transaction in the block. The structure of each trace depends on the tracer used.debug_traceBlockByNumber code examplesconst { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("CHAINSTACK_NODE_URL");
async function traceBlock() {
const blockNumber = "latest"; // Or use hex like "0x1234"
const traces = await provider.send("debug_traceBlockByNumber", [
blockNumber,
{ tracer: "callTracer" }
]);
console.log(`Traced ${traces.length} transactions`);
traces.forEach((trace, i) => {
console.log(`Transaction ${i}:`, trace.result?.type || 'unknown');
});
}
traceBlock();
debug_traceBlockByNumber is building block analysis tools that need to understand the complete execution flow of all transactions in a block, such as MEV detection or security monitoring systems.Was this page helpful?