eth_call
Executes a new message call immediately without creating a transaction on the block chain.
To prevent API abuse, the gas parameter in eth_estimateGas and eth_call is capped at 10x (1000%) the current block gas limit. You can recreate this behavior in your local test environment (Ganache, Besu, Geth, or other client) via the rpc.gascap command-line option.

REQUEST

1
POST https://<network>.infura.io/v3/YOUR-PROJECT-ID
Copied!

HEADERS

1
Content-Type: application/json
Copied!

REQUEST PAYLOAD

  • TRANSACTION CALL OBJECT [required]
    • from: 20 Bytes - The address the transaction is sent from.
    • to: 20 Bytes - The address the transaction is directed to.
    • gas: [optional] hexadecimal value of the gas provided for the transaction execution. eth_call consumes zero gas, but this parameter may be needed by some executions.
    • gasPrice: [optional] hexadecimal value of the gasPrice used for each paid gas.
    • maxPriorityFeePerGas: [optional] Maximum fee, in Wei, the sender is willing to pay per gas above the base fee. See EIP-1559 transactions.
    • maxFeePerGas: [optional] Maximum total fee (base fee + priority fee), in Wei, the sender is willing to pay per gas. See EIP-1559 transactions.
    • value: [optional] hexadecimal value of the value sent with this transaction.
    • data: [optional] Hash of the method signature and encoded parameters. See the Ethereum contract ABI specification.
  • BLOCK PARAMETER [required] - a hexadecimal block number, or the string "latest", "earliest" or "pending". See the default block parameter.

EXAMPLE

1
## JSON-RPC over HTTPS POST
2
## Replace YOUR-PROJECT-ID with a Project ID from your Infura Dashboard
3
## You can also replace mainnet with a different supported network
4
curl https://mainnet.infura.io/v3/YOUR-PROJECT-ID \
5
-X POST \
6
-H "Content-Type: application/json" \
7
-d '{"jsonrpc":"2.0","method":"eth_call","params": [{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas": "0x76c0","gasPrice": "0x9184e72a000","value": "0x9184e72a","data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}, "latest"],"id":1}'
8
9
## JSON-RPC over WSS
10
## Replace YOUR-PROJECT-ID with a Project ID from your Infura Dashboard
11
## You can also replace mainnet with a different supported network
12
wscat -c wss://mainnet.infura.io/ws/v3/YOUR-PROJECT-ID
13
>{"jsonrpc":"2.0","method":"eth_call","params": [{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas": "0x76c0","gasPrice": "0x9184e72a000","value": "0x9184e72a","data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}, "latest"],"id":1}
Copied!

RESPONSE

RESULT FIELDS

  • RETURN VALUE - the return value of the executed contract method.

BODY

1
{
2
"jsonrpc": "2.0",
3
"id": 1,
4
"result": "0x"
5
}
Copied!
On Mainnet, Rinkeby, Ropsten and Goerli, if this call causes the EVM to execute a REVERT operation, an error response of the following form is returned, with the revert reason pre-decoded as a string:
1
{
2
"jsonrpc": "2.0",
3
"id": 1,
4
"error": {
5
"code": 3,
6
"message": "execution reverted: Dai/insufficient-balance",
7
"data": "0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000184461692f696e73756666696369656e742d62616c616e63650000000000000000"
8
}
9
}
Copied!
On Kovan, the actual revert reason is instead returned encoded as part of the data field in the response.
1
{
2
"jsonrpc": "2.0",
3
"id": 1,
4
"error": {
5
"code": -32015,
6
"data": "Reverted 0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000204f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
7
"message": "VM execution error."
8
}
9
}
Copied!
Copy link