POST
/
efb0a5eccd2caa5135eb54eba6f7f300
curl --request POST \
  --url https://optimism-mainnet.core.chainstack.com/efb0a5eccd2caa5135eb54eba6f7f300 \
  --header 'Content-Type: application/json' \
  --data '{
  "jsonrpc": "2.0",
  "method": "debug_traceCallMany",
  "id": 1,
  "params": [
    [
      {
        "transactions": [
          {
            "from": "0xacD03D601e5bB1B275Bb94076fF46ED9D753435A",
            "to": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58",
            "gas": "0xf4240",
            "gasPrice": "0x7896e72a",
            "data": "0xa9059cbb000000000000000000000000bc0E63965946815d105E7591407704e6e1964E590000000000000000000000000000000000000000000000000000000005f5e100"
          },
          {
            "to": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58",
            "gasPrice": "0x7896e72a",
            "data": "0x70a08231000000000000000000000000bc0E63965946815d105E7591407704e6e1964E59"
          }
        ],
        "blockOverride": {
          "blockNumber": "0x6eee101"
        }
      }
    ],
    {
      "blockNumber": "0x6eee101",
      "transactionIndex": 1
    },
    {}
  ]
}'
{
  "jsonrpc": "<string>",
  "id": 123,
  "result": [
    {
      "structLogs": [
        {
          "pc": 123,
          "op": "<string>",
          "gas": 123,
          "gasCost": 123,
          "depth": 123,
          "stack": [
            "<any>"
          ],
          "memory": [
            "<any>"
          ]
        }
      ],
      "gas": 123,
      "returnValue": "<string>",
      "gasUsed": 123,
      "failed": true
    }
  ]
}

Executes a list of bundles (a bundle is a collection of transactions), without creating transactions on the blockchain. Returns their traces. This method is akin to eth_callMany but provides detailed execution traces for each call, making it invaluable for debugging complex interactions involving multiple transactions.

Get you own node endpoint today

Start 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.

Request

To use debug_traceCallMany, send a POST request with a JSON RPC call in the body.

Parameters

  • transactions (array): An array of transaction objects to be executed. Each transaction object includes:
    • from (string): The address the transaction is sent from (optional).
    • to (string): The address the transaction is directed to.
    • gas (string): The gas limit for the transaction.
    • gasPrice (string): The gas price for the transaction.
    • data (string): The data sent along with the transaction.
  • blockOverride (object): Optional overrides for the execution context block header, including:
    • blockNumber (string): Block number for the execution context.
  • Simulation Context (object): The context for the simulation, including block number and transaction index.
  • State Overrides (object): Optional state overrides for the execution context.

Response

The response includes detailed execution traces for each call in the bundles, providing insights into each step of the transactions’ execution.

  • result (array): An array of execution traces for each call, including:
    • structLogs (array): An array of execution steps (opcodes) taken by the call.
    • gas (integer): The gas provided by the call.
    • returnValue (string): The return value of the call, if any.
    • gasUsed (integer): The total gas used by the call.
    • failed (boolean): Indicates whether the call failed.

Use case

The debug_traceCallMany method is essential for:

  • Developers debugging complex interactions involving multiple transactions.
  • Analysts conducting forensic analysis of transaction sequences.
  • Tools and services that provide insights into Ethereum Virtual Machine (EVM) execution across multiple calls.

Body

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

Parameters for the call

Response

200 - application/json
Detailed execution traces of the calls
jsonrpc
string
id
integer
result
object[]