debug_traceCall RPC Method
Returns the number of possible tracing result by executing an eth_call
within the context of the given block execution.
Parameters
1.TRANSACTION CALL OBJECT
[required]
object
- The eth_call data
-
from
[optional] - The address from which the transaction is sent. -
to
- The address where the transaction is sent to. -
gas
[optional] - Integer of the gas provided for the transaction execution. Althougheth_call
consumes zero gas, this parameter may still be needed by some executions. -
gasPrice
[optional] - Integer of the gasPrice used for each paid gas as hexadecimal. -
value
[optional] - Interger of the value sent with a stated transaction -
data
[optional] - Hash of the method signature and encoded parameters. More info 👉 Ethereum Contract ABI (opens in a new tab)
2.BLOCK PARAMETER
[required]
-
hexadecimal block number
-
block hash
-
The
Tag
"latest", "earliest", "pending", "safe" or "finalized" "Safe" and "finalized" are only availible on Ethereum and Arbitrum One chains. Read block parameter description in Ethereum documentation (opens in a new tab).
Confusing? Ask blockchain developers in Chainnodes Telegram Chat (opens in a new tab)
3.TRACE TYPE
[optional]
-
The type of tracer
- String - It might becallTracer
orprestateTracer
-
callTracer
- The calltracer keeps track of all call frames, including depth 0 calls, that are made during a transaction. -
prestateTracer
- The prestateTracer replays the transaction and tracks every part of state that occured during the transaction.
-
-
tracerConfig
- The object to specify the configurations of the traceronlyTopCall
- 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.
Additional configuration parameters
-
disableStorage
— 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,debug_traceTransaction
traces both memory and storage changes, but storage tracing can be particularly resource-intensive, especially for large transactions. -
disableStack
— when enabled, it skips tracing of stack changes made by the transaction being analyzed. -
disableMemory
— when true, it stops tracing of memory changes made by the transaction being analyzed, reducing resource requirements. -
disableReturnData
— 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. -
timeout
(default: 5s) — allows to customize the method's timeout period for JavaScript-based tracing calls.
When using one of the three tracers, the disableMemory
, disableStorage
, disableStack
, and disableReturnData
will not have any effect.
When no tracer is selected, the response defaults to the Struct/opcode logger (opens in a new tab).
Need RPC API keys?
Get 12.5M archival requests for free today.
Returns
callTracer
response
Field | Description |
---|---|
type of the call | Type of the call |
from | The transaction sender. |
to | The address of the transaction recipient. |
gas | The gas included in the transaction by the sender. |
transaction value | The actual value per gas deducted from the sender's account. |
gasUsed | The total used gas by the call. Encoded as hexadecimal. |
input | The optional input data sent with the transaction, usually used to interact with smart contracts. |
output | The return value of the call, encoded as a hexadecimal string. |
error | An error message in case the execution failed. |
calls | A list of sub-calls made by the contract during the call, each represented as a nested call frame object. |
revertReason | The reason why the transaction was reverted, returned by the smart contract if any. |
prestateTracer
response
-
smart contract address
— The address of the smart contract associated with the result.-
balance
— The balance of the contract, expressed in wei and encoded as a hexadecimal string. -
code
— The bytecode of the contract, encoded as a hexadecimal string. -
nonce
— The nonce of the account associated with the contract, represented as an unsigned integer. -
storage
— A map of key-value pairs representing the storage slots of the contract. The keys and values are both encoded as hexadecimal strings.
-
Struct/opcode
response
-
The transaction trace object
: -
failed
- Successful or failed -
gas
- The total consumed gas in the transaction -
returnValue
- The return value of the executed contract call -
structLogs
- The trace result of each step:-
pc
- The current index in bytecode. -
op
- The name of current executing operation. -
gas
- The available gas in the execution. -
gasCost
- The gas cost of the operation. -
depth
- The number of levels of calling functions. -
stack
- An array of values in the current stack. -
storage
- The mapping of the current storage. -
refund
- The total of current refund value. -
error
- The error of the execution. -
memory
- An array of values in the current memory.
-
Request
POST https://<network>.chainnodes.org/YOUR-API-KEY
Example
- HTTPS POST Request with a JSON RPC call in the body
- Replace YOUR-API-KEY with the API key from your Chainnodes.org Dashboard
- You can use a different supported network by replacing
mainnet
curl https://mainnet.chainnodes.org/YOUR-API-KEY \
-X POST \
-H "Content-Type: application/json" \
-d '{"method":"debug_traceCall","params":[{"to": "0x6d2e03b7effeae98bd302a9f836d0d6ab0002766", "gasPrice": "0x174876E800"} ,"latest" ],"id":1,"jsonrpc":"2.0"}'
Body
{
"jsonrpc":"2.0",
"id":1,
"result":{
"structLogs":[
],
"gas":21000,
"failed":false,
"returnValue":""
}
}