curl --request POST \
--url https://rpc.testnet.tempo.xyz/ \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "trace_call",
"params": [
{
"to": "0x20c0000000000000000000000000000000000000",
"data": "0x70a082310000000000000000000000009729187d9e8bbefa8295f39f5634ca454dd9d294"
},
[
"trace"
],
"latest"
],
"id": 1
}
'{
"jsonrpc": "<string>",
"id": 123,
"result": {}
}curl --request POST \
--url https://rpc.testnet.tempo.xyz/ \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "trace_call",
"params": [
{
"to": "0x20c0000000000000000000000000000000000000",
"data": "0x70a082310000000000000000000000009729187d9e8bbefa8295f39f5634ca454dd9d294"
},
[
"trace"
],
"latest"
],
"id": 1
}
'{
"jsonrpc": "<string>",
"id": 123,
"result": {}
}callObject — the call object:
from — (optional) sender addressto — recipient addressgas — (optional) gas limitgasPrice — (optional) gas pricevalue — (optional) value to senddata — (optional) call datatraceTypes — array of trace types to include:
trace — basic execution tracevmTrace — full VM execution tracestateDiff — state changesblockParameter — the block number (hex) or tag (latest, earliest, pending)result — the trace result object:
output — return data from the calltrace — array of trace objects (if requested)vmTrace — VM execution trace (if requested)stateDiff — state differences (if requested)trace_call code examplesbalanceOf call on the pathUSD token:
const ethers = require('ethers');
const NODE_URL = "CHAINSTACK_NODE_URL";
const provider = new ethers.JsonRpcProvider(NODE_URL);
// pathUSD token address
const PATHUSD = "0x20c0000000000000000000000000000000000000";
const TARGET_ADDRESS = "0x9729187D9E8Bbefa8295F39f5634cA454dd9d294";
// Encode balanceOf(address)
const iface = new ethers.Interface(["function balanceOf(address) view returns (uint256)"]);
const data = iface.encodeFunctionData("balanceOf", [TARGET_ADDRESS]);
const traceCall = async () => {
const result = await provider.send("trace_call", [
{
to: PATHUSD,
data: data
},
["trace", "stateDiff"],
"latest"
]);
console.log("Output:", result.output);
console.log("Traces:", result.trace.length);
if (result.stateDiff) {
console.log("State changes:", Object.keys(result.stateDiff).length, "addresses affected");
}
};
traceCall();
Was this page helpful?