# debug\_traceCall

### Parameters

1. `Object` - The transaction call object with the following:
   * `from`(optional): the address the transaction is sent from.
   * `to`(**required**): the address the transaction is sent to.
   * `gas`(optional): Integer of the gas provided for the transaction execution. eth\_call consumes zero gas, but this parameter may be needed by some executions.
   * `gasPrice`(optional): Integer of the gasPrice used for each paid gas.
   * `value`(optional): Integer of the value sent with this transaction.
   * `data`(optional): Hash of the method signature and encoded parameters. For details see [Ethereum Contract ABI in the Solidity documentation](https://docs.soliditylang.org/en/latest/abi-spec.html).
2. `Quantity` or `tag` - choose 1 of the following options:
   * A hexadecimal block number.
   * `"earliest"` - the earliest/genesis block.
   * `"latest"` - the latest mined block.
   * `"safe"` - the latest safe head block.
   * `"finalized"` - the latest finalized block.
   * `"pending"` - the pending state/transactions.
3. `Tracer` - choose from one of these options:
   * `4byteTracer` - Solidity contract functions are [addressed](https://docs.soliditylang.org/en/develop/abi-spec.html#function-selector) using the first four byte of the Keccak-256 hash of their signature. This `tracer` monitors and analyzes the usage of specific function signatures within smart contracts by capturing their unique first four bytes.
   * `callTracer` - collects data about all call frames executed within a transaction, creating a hierarchical list of call frames structured mirroring the EVM's operations. This is useful for debugging and analytical purposes.
   * `prestateTracer` - captures and analyzes the state of the blockchain before the execution of a specific transaction. It helps in understanding the state changes and effects that a transaction will have on the blockchain's data and accounts before the transaction is actually executed.
   * `noopTracer` - returns empty results. This is used for testing purpose.
   * `opcountTracer` - count and track the number of operations (or opcodes) executed during a specific transaction.
   * `unigramTracer` - counts the frequency of occurrence of each opcode.
   * `bigramTracer` - a bigram refers to a sequence of two bytes or characters. This tracer is designed to observe and provide insights into the patterns and occurrences of these two-byte sequences as they appear within the data of executed transactions.
   * `trigramTracer` - a trigram refers to a sequence of three bytes or characters. This tracer is designed to observe and provide insights into the patterns and occurrences of these three-byte sequences as they appear within the data of executed transactions.
   * `evmdisTracer` - generates the bytecode disassembly of executed transactions, providing developers with insights into how smart contracts operate at a low-level bytecode level for debugging, security audits, and performance optimization purposes.

#### Sample Request

{% code overflow="wrap" %}

```
curl https://lb.nodies.app/v1/<INSERT URL> \
   -H "x-api-key: <API-KEY>" \
   -X POST \
   -H "Content-Type: application/json" \
   -d '{ 
  "id": 1,
  "jsonrpc": "2.0",
  "method": "debug_traceCall",
  "params": [
    {
      "from": "0x035C9c507149Fa30b17F9735BF97B4642C73464f",
      "to": "0x0000000000a39bb272e79075ade125fd351887ac",
      "gas": "0x1E9EF",
      "gasPrice": "0xBD32B2ABC",
      "data": "0xd0e30db0"
    },
    "latest",
    {
      "tracer": "callTracer"
    }
  ]
}'
```

{% endcode %}

#### Sample Response

{% code overflow="wrap" %}

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "from": "0x035c9c507149fa30b17f9735bf97b4642c73464f",
    "gas": "0x197a7",
    "gasUsed": "0x7657",
    "to": "0x0000000000a39bb272e79075ade125fd351887ac",
    "input": "0xd0e30db0",
    "calls": [
      {
        "from": "0x0000000000a39bb272e79075ade125fd351887ac",
        "gas": "0x17eab",
        "gasUsed": "0x10ff",
        "to": "0x01a656024de4b89e2d0198bf4d468e8fd2358b17",
        "input": "0xd0e30db0",
        "type": "DELEGATECALL"
      }
    ],
    "value": "0x0",
    "type": "CALL"
  }
}
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nodies.app/supported-api-methods/ethereum/debug_tracecall.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
