trace_callMany
Traces multiple calls in sequence on Base, where each call can depend on the state changes of the previous one.
Archive Node Required
This method requires an archive node. It is not available on full nodes.
Use Cases#
- Multi-step simulation - Simulate a sequence of dependent transactions
- Arbitrage analysis - Test multi-hop swap paths
- Batch operations - Preview multiple contract interactions for consumer dApps, SocialFi, NFT marketplaces, and merchant payment integrations
Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
calls | Array | Yes | Array of [callObject, traceTypes] pairs |
blockNumber | QUANTITY|TAG | No | Block number or tag (default: latest) |
Each element in calls is a tuple of:
callObject- Transaction call object (from,to,gas,value,data)traceTypes- Array of trace types:["trace"],["vmTrace"],["stateDiff"]
Request#
{
"jsonrpc": "2.0",
"method": "trace_callMany",
"params": [
[
[{"to": "0x4200000000000000000000000000000000000006", "data": "0x70a082310000000000000000000000004200000000000000000000000000000000000006"}, ["trace"]],
[{"to": "0x4200000000000000000000000000000000000006", "data": "0x18160ddd"}, ["trace"]]
],
"latest"
],
"id": 1
}
Code Examples#
- cURL
- JavaScript
- Python
curl -X POST https://api-base-mainnet-archive.n.dwellir.com/YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "trace_callMany",
"params": [
[
[{"to": "0x4200000000000000000000000000000000000006", "data": "0x70a082310000000000000000000000004200000000000000000000000000000000000006"}, ["trace"]],
[{"to": "0x4200000000000000000000000000000000000006", "data": "0x18160ddd"}, ["trace"]]
],
"latest"
],
"id": 1
}'
import { JsonRpcProvider } from 'ethers';
const provider = new JsonRpcProvider('https://api-base-mainnet-archive.n.dwellir.com/YOUR_API_KEY');
const results = await provider.send('trace_callMany', [
[
[{ to: '0x4200000000000000000000000000000000000006', data: '0x70a082310000000000000000000000004200000000000000000000000000000000000006' }, ['trace']],
[{ to: '0x4200000000000000000000000000000000000006', data: '0x18160ddd' }, ['trace']]
],
'latest'
]);
console.log('Call results:', results.length);
for (const result of results) {
console.log(' Output:', result.output);
}
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://api-base-mainnet-archive.n.dwellir.com/YOUR_API_KEY'))
results = w3.provider.make_request('trace_callMany', [
[
[{'to': '0x4200000000000000000000000000000000000006', 'data': '0x70a082310000000000000000000000004200000000000000000000000000000000000006'}, ['trace']],
[{'to': '0x4200000000000000000000000000000000000006', 'data': '0x18160ddd'}, ['trace']]
],
'latest'
])
for i, result in enumerate(results['result']):
print(f'Call {i}: output={result.get("output", "N/A")}')
Related Methods#
trace_call- Trace a single calleth_call- Execute call without trace