eth_call

Executes a new message call immediately without creating a transaction on the blockchain.

This is one of the most commonly used API calls. It is used to read from the blockchain which includes executing smart contracts but does not publish anything to the blockchain. This call does not consume any Ether.

📘

Starting from Geth 1.9.13, eth_callwill check the balance of the sender (to make sure that the sender has enough gas to complete the request) before executing the call, when one of the following conditions is true:

a) the gas_price parameter is populated, or

b) the contract function being called (i.e. in data modifies blockchain state)

In these two cases, even though the eth_call requests don't consume any gas, the from address must have enough gas to execute the call as if it were a write transaction because eth_call is being used to simulate the transaction.

Parameters

  • OBJECT - The transaction call object
Object NameRequiredTypeDetail
fromStringAddress the transaction is sent from.
toStringAddress the transaction is directed to.
gasStringA hex code of an integer that represents the gas provided for the transaction execution.
gasPriceStringA hex code of an integer that represents the price used for each paid gas.
valueStringA hex code of an integer that represents the value sent with this transaction.
dataStringHash of method signature and encoded parameters. Learn more here.
  • BLOCK NUMBER
Object NameRequiredTypeDetail
BLOCK NUMBERStringA hex code of an integer that represents the block number, "latest", "earliest" , "pending". Learn more here.

🚧

NOTE: eth_call has a timeout restriction at the node level. Batching multiple eth_call together on-chain using pre-deployed smart contracts might result in unexpected timeouts that cause none of your calls to complete. Instead, consider serializing these calls, or using smaller batches if they fail with a node error code.

"params":[
    {
        "to":"0xddd64b4712f7c8f1ace3c145c950339eddaf221d"
    },
        "0x0"
]

Result

The return value of the executed contract method.

Example

Request

curl <your-endpoint> \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0xddd64b4712f7c8f1ace3c145c950339eddaf221d"}, "0x0"],"id":1}'

Return

{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x"
}
Language
Click Try It! to start a request and see the response here!