---
updatedAt: 2026-05-27T08:54:29.000Z
agentTools:
  projectIndex: https://docs.tatum.io/llms.txt
---

# debug_traceCall - Ronin

<div style="padding: 10px 20px; border-radius: 5px; background-color: #e6e2ff; margin: 0 0 30px 0;">
  <h5>Archive Method</h5>
  <p>Complex queries might take longer and incur additional cost</p>
</div>

The **debug_traceCall** is an Ronin RPC method that allows you to execute a given call (message), tracing the steps of its execution.
This can be helpful for developers and auditors who want to inspect and analyze the internal operations and state changes of a contract call without modifying the blockchain state.
This method can assist in debugging and identifying potential issues with contract execution, as well as understanding how gas is consumed during the execution of a call.


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "debug_traceCall - Ronin",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://{ronin-network}.gateway.tatum.io",
      "description": "RPC Gateway - Recommended",
      "variables": {
        "ronin-network": {
          "enum": [
            "ronin-mainnet",
            "ronin-saigon"
          ],
          "default": "ronin-mainnet"
        }
      }
    },
    {
      "url": "https://api.tatum.io/v3/blockchain/node/{ronin-network}",
      "description": "Deprecated",
      "variables": {
        "ronin-network": {
          "enum": [
            "ronin-mainnet",
            "ronin-saigon"
          ],
          "default": "ronin-mainnet"
        }
      }
    }
  ],
  "x-sandbox": {
    "category": {
      "type": {
        "name": "category",
        "type": "string",
        "enum": [
          "core",
          "bundler",
          "nft",
          "token",
          "transfers",
          "transaction-receipts",
          "gas-manager",
          "trace",
          "debug",
          "gas-optimized-transactions",
          "private-transactions",
          "notify",
          "transaction-simulation"
        ]
      },
      "value": "debug"
    }
  },
  "paths": {
    "/": {
      "post": {
        "x-readme": {
          "samples-languages": [
            "shell",
            "javascript",
            "python",
            "java",
            "php"
          ]
        },
        "summary": "debug_traceCall - Ronin",
        "description": "<div style=\"padding: 10px 20px; border-radius: 5px; background-color: #e6e2ff; margin: 0 0 30px 0;\">\n  <h5>Archive Method</h5>\n  <p>Complex queries might take longer and incur additional cost</p>\n</div>\n\nThe **debug_traceCall** is an Ronin RPC method that allows you to execute a given call (message), tracing the steps of its execution.\nThis can be helpful for developers and auditors who want to inspect and analyze the internal operations and state changes of a contract call without modifying the blockchain state.\nThis method can assist in debugging and identifying potential issues with contract execution, as well as understanding how gas is consumed during the execution of a call.\n",
        "tags": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "default": 1
                      },
                      "jsonrpc": {
                        "type": "string",
                        "default": "2.0"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "method": {
                        "default": "debug_traceCall",
                        "type": "string"
                      },
                      "params": {
                        "type": "array",
                        "minItems": 3,
                        "maxItems": 3,
                        "description": "1. `object` - Transaction Object\n2. `string` - Block Identifier: Block hash, block number (in hex), or block tag\n3. `tracer` - Object: Currently supports `callTracer` and `prestateTracer`\n",
                        "items": {
                          "anyOf": [
                            {
                              "$ref": "#/paths/~1/post/requestBody/content/application~1json/schema/allOf/1/properties/params/prefixItems/0"
                            },
                            {
                              "type": "string",
                              "title": "Block Identifier",
                              "description": "String - One of the following options:\n  1. **block hash**\n  2. **block number** (in hex)\n  3. **block tag** (one of the following):\n    * `pending` - A sample next block built by the client on top of latest and containing the set of transactions usually taken from local mempool. Intuitively, you can think of these as blocks that have not been mined yet.\n    * `latest` - The most recent block in the canonical chain observed by the client, this block may be re-orged out of the canonical chain even under healthy/normal conditions.\n    * `safe` - The most recent crypto-economically secure block, cannot be re-orged outside of manual intervention driven by community coordination. Intuitively, this block is “unlikely” to be re-orged.\n    * `finalized` - The most recent crypto-economically secure block, that has been accepted by >2/3 of validators. Cannot be re-orged outside of manual intervention driven by community coordination. Intuitively, this block is very unlikely to be re-orged.\n    * `earliest` - The lowest numbered block the client has available. Intuitively, you can think of this as the first block created.\n",
                              "default": "finalized"
                            },
                            {
                              "type": "object",
                              "title": "Tracer",
                              "properties": {
                                "tracer": {
                                  "$ref": "#/paths/~1/post/requestBody/content/application~1json/schema/allOf/1/properties/params/prefixItems/2/properties/tracer"
                                },
                                "tracerConfig": {
                                  "$ref": "#/paths/~1/post/requestBody/content/application~1json/schema/allOf/1/properties/params/prefixItems/2/properties/tracerConfig"
                                },
                                "timeout": {
                                  "type": "string",
                                  "description": "A duration string of decimal numbers that overrides the default timeout of 5 seconds for JavaScript-based tracing calls. Max timeout is \"10s\". Valid time units are \"ns\", \"us\", \"ms\", \"s\" each with optional fraction, such as \"300ms\" or \"2s45ms\".",
                                  "default": "5s"
                                }
                              }
                            }
                          ]
                        },
                        "prefixItems": [
                          {
                            "type": "object",
                            "description": "The transaction call object",
                            "title": "Transaction Object",
                            "properties": {
                              "from": {
                                "type": "string",
                                "description": "20 Bytes - The address the transaction is sent from.",
                                "pattern": "^0[xX][0-9a-fA-F]{40}$"
                              },
                              "to": {
                                "type": "string",
                                "description": "20 Bytes - The address the transaction is directed to",
                                "default": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
                                "pattern": "^0[xX][0-9a-fA-F]{40}$"
                              },
                              "gas": {
                                "type": "string",
                                "description": "Hex string of the integer of gas provided for the transaction execution.",
                                "pattern": "^0[xX]([1-9a-fA-F][0-9a-fA-F]*|0)$",
                                "default": "0x0"
                              },
                              "gasPrice": {
                                "type": "string",
                                "description": "Hex string of the integer of gasPrice used for each paid gas.\n<br/><strong>NOTE:</strong> most of our users <b>(95%+)</b> never set the gasPrice on eth_call.\n",
                                "pattern": "^0[xX]([1-9a-fA-F][0-9a-fA-F]*|0)$",
                                "default": "0x9184e72a000"
                              },
                              "value": {
                                "type": "string",
                                "description": "Hex string of the integer of value sent with this transaction",
                                "pattern": "^0[xX]([1-9a-fA-F][0-9a-fA-F]*|0)$",
                                "default": "0x0"
                              },
                              "data": {
                                "type": "string",
                                "description": "Hash of the method signature and encoded parameters",
                                "pattern": "^0[xX][0-9a-fA-F]*$",
                                "default": "0x"
                              }
                            },
                            "required": [
                              "to"
                            ]
                          },
                          {
                            "type": "string",
                            "title": "Block identifier",
                            "description": "String - One of the following options:\n  1. **block hash**\n  2. **block number** (in hex)\n  3. **block tag** (one of the following):\n    * `pending` - A sample next block built by the client on top of latest and containing the set of transactions usually taken from local mempool. Intuitively, you can think of these as blocks that have not been mined yet.\n    * `latest` - The most recent block in the canonical chain observed by the client, this block may be re-orged out of the canonical chain even under healthy/normal conditions.\n    * `safe` - The most recent crypto-economically secure block, cannot be re-orged outside of manual intervention driven by community coordination. Intuitively, this block is “unlikely” to be re-orged.\n    * `finalized` - The most recent crypto-economically secure block, that has been accepted by >2/3 of validators. Cannot be re-orged outside of manual intervention driven by community coordination. Intuitively, this block is very unlikely to be re-orged.\n    * `earliest` - The lowest numbered block the client has available. Intuitively, you can think of this as the first block created.\n",
                            "default": "finalized"
                          },
                          {
                            "type": "object",
                            "title": "Tracer",
                            "properties": {
                              "tracer": {
                                "type": "string",
                                "default": "callTracer",
                                "enum": [
                                  "callTracer",
                                  "prestateTracer"
                                ],
                                "description": "It might be callTracer or prestateTracer\n * `callTracer` - The calltracer keeps track of all call frames, including depth 0 calls, that are made during a transaction.\n * `prestateTracer` - The prestateTracer replays the transaction and tracks every part of state that occured during the transaction.\n"
                              },
                              "tracerConfig": {
                                "type": "object",
                                "description": "An object that allows specifying configurations for the tracer.\n\nWhen using a tracer type disableMemory, disableStorage, disableStack, or disableReturnData will not have any effect. When no tracer is selected, the response defaults to Struct/opcode logger.\n",
                                "properties": {
                                  "onlyTopCall": {
                                    "description": "When set to true, this will only trace the primary (top-level) call and not any sub-calls. It eliminates the additional processing for each call frame.",
                                    "type": "boolean"
                                  },
                                  "disableStorage": {
                                    "description": "When enabled, it prevents tracing of storage changes made by the transaction being analyzed, which can reduce the resource requirements of the analysis. By default, this operation traces both memory and storage changes, but storage tracing can be particularly resource-intensive, especially for large transactions.",
                                    "type": "boolean"
                                  },
                                  "disableStack": {
                                    "description": "When enabled, it skips tracing of stack changes made by the transaction being analyzed.",
                                    "type": "boolean"
                                  },
                                  "disableMemory": {
                                    "description": "When true, it stops tracing of memory changes made by the transaction being analyzed, reducing resource requirements.",
                                    "type": "boolean"
                                  },
                                  "disableReturnData": {
                                    "description": "When true, it prevents the method from tracing the return data of a transaction. This return data tracing can be very demanding on resources, as it requires a lot of time and processing power.",
                                    "type": "boolean"
                                  }
                                }
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns - Array of block traces",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer"
                        },
                        "jsonrpc": {
                          "type": "string"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "description": "Array of block traces",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "description": "CALL or CREATE"
                              },
                              "from": {
                                "type": "string",
                                "description": "20 Bytes - address of the sender"
                              },
                              "to": {
                                "type": "string",
                                "description": "20 Bytes - address of the receiver. null when its a contract creation transaction"
                              },
                              "value": {
                                "type": "string",
                                "description": "amount of value for transfer (in hex)"
                              },
                              "gas": {
                                "type": "string",
                                "description": "amount of gas provided for the call (in hex)"
                              },
                              "gasUsed": {
                                "type": "string",
                                "description": "amount of gas used during the call (in hex)"
                              },
                              "input": {
                                "type": "string",
                                "description": "call data"
                              },
                              "output": {
                                "type": "string",
                                "description": "return data"
                              },
                              "error": {
                                "type": "string",
                                "description": "error, if any"
                              },
                              "revertReason": {
                                "type": "string",
                                "description": "solidity revert reason, if any"
                              },
                              "calls": {
                                "type": "array",
                                "description": "list of sub-calls"
                              }
                            }
                          }
                        }
                      },
                      "example": {
                        "jsonrpc": "2.0",
                        "id": 1,
                        "result": {
                          "type": "CALL",
                          "from": "0x0000000000000000000000000000000000000000",
                          "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
                          "value": "0x0",
                          "gas": "0x7fffffffffffadf7",
                          "gasUsed": "0x0",
                          "input": "0x",
                          "output": "0x"
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        },
        "operationId": "rpc-ronin-debug_tracecall",
        "security": [
          {
            "X-API-Key": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "X-API-Key": {
        "type": "apiKey",
        "name": "x-api-key",
        "in": "header",
        "description": "Your **API key** is used to identify your account & your plan, including the number of API calls per second and total monthly calls you have.\n\nEach key is for individual use only.\n\nIf you don't have a key already you can [Sign up for a Free Tatum account](https://co.tatum.io/signup) to get two keys (testnet and mainnet), allowing up to 5 API calls per second and 1,000,000 Credits.\n\nFor testing purposes, you can use the following key which only works inside docs and has limited functionality (e.g. you cannot create virtual accounts or notification subscriptions with it):\n* t-66a730ccccfd17001c479705-2f597d14ad7543f289a03418\n\nFor more details on limits and plans, [click here](https://docs.tatum.io/docs/plans-limits).\n"
      }
    }
  }
}
```