Skip to content

Latest commit

 

History

History
100 lines (74 loc) · 6.01 KB

eth-rpc.md

File metadata and controls

100 lines (74 loc) · 6.01 KB

ETH RPC API

In addition to the custom RPC endpoints documented here, the Blockscout ETH RPC API supports most used methods in the exact format specified for Ethereum nodes, see the Ethereum JSON-RPC Specification for more details.

These methods are provided for your convenience and are most suitable as a fallback option in your JSON RPC API providers. For other use cases, REST or custom RPC methods are recommended.

The following methods are supported:

  • eth_blockNumber
  • eth_getBalance
  • eth_getLogs
  • eth_gasPrice
  • eth_getTransactionByHash
  • eth_getTransactionReceipt
  • eth_chainId
  • eth_maxPriorityFeePerGas
  • eth_getTransactionCount
  • eth_getCode
  • eth_getStorageAt
  • eth_estimateGas
  • eth_getBlockByNumber
  • eth_getBlockByHash
  • eth_sendRawTransaction
  • eth_call

In the following examples we use the Ethereum mainnet with the base instance url https://eth.blockscout.com. When sending a request add /api/eth-rpc to the end of the base url.

eth_blockNumber

Returns the latest block number in the chain in hexadecimal format. No params are needed.
Type: POST

Example

{% code overflow="wrap" %}

// Request
curl -H "content-type: application/json" -X POST --data '{"id":0,"jsonrpc":"2.0","method":"eth_blockNumber","params":[]}' https://eth.blockscout.com/api/eth-rpc
// Response
{
  "jsonrpc": "2.0",
  "result": "0xfa0b0e",
  "id": 0
}

{% endcode %}

eth_getBalance

Returns the balance of a given address in wei. Note the earliest parameter does not work as expected because genesis block balances are not currently imported. Parameters are required.

Required Parameters

TypePOST
Data (string)20 Byte address to check balance
Quantity or Tag (string)Integer value of a block number, or a tag "latest" for the most recent block.

Example

{% code overflow="wrap" %}

// Request
curl -H "content-type: application/json" -X POST --data '{"id":0,"jsonrpc":"2.0","method":"eth_getBalance","params":["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","latest"]}' https://eth.blockscout.com/api/eth-rpc
// Response
{
  "jsonrpc": "2.0",
  "result": "0x1d863bf76508104fb", //34039260923474019579
  "id": 0
}

{% endcode %}

eth_getLogs

Returns an array of logs matching a specified filter object. Params are optional based on data you want to receive. From more information, see this post on eth_getLogs.

Note: Never returns more than 1000 log entries. You can use pagination options to request the next page. Pagination options params: {"logIndex": "3D", "blockNumber": "6423AC"} which include parameters from the last log received from the previous request. These three parameters are required for pagination.

Parameters

TypePOST
address
(string, array)
20Byte contract address or list of addresses to collect logs from.
fromBlock
(Quantity/Tag)
Integer block number, "latest" (default) for the last mined block or "pending", "earliest" for not yet mined transactions.
toBlock
(Quantity/Tag)
Integer block number, "latest" (default) for the last mined block or "pending", "earliest" for not yet mined transactions.
topics
(string, array)
Array of 32 Byte DATA topics. Topics are order-dependent. Each topic can also be an array of DATA with "or" options
paging_optionslogIndex and blockNumber explained above.

Example Query

{% code overflow="wrap" %}

//Request
curl -H "content-type: application/json" -X POST --data '{"id":0,"jsonrpc":"2.0","method":"eth_getLogs","params":[{"address":"0xc78Be425090Dbd437532594D12267C5934Cc6c6f","paging_options":{"logIndex":"3D","blockNumber":"6423AC"},"fromBlock":"earliest","toBlock":"latest","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]}]}' https://eth.blockscout.com/api/eth-rpc

{% endcode %}

{% code overflow="wrap" %}

//Response (end)
{"address":"0xc78be425090dbd437532594d12267c5934cc6c6f","blockHash":"0x574755e06bf0cec6d59a8cc7db183d4545a90242d03d5bc3806681277356cf4b","blockNumber":"0x79D4CF","data":"0x000000000000000000000000000000000000000000000c81c6f8fe7064224e6e","logIndex":"0x42","removed":false,"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000078c04412a6eb2f524ccf50b5f3d863a82e2f8d6f"],"transactionHash":"0xd35fe29c81484258f38b4848a4d44f54f3dc0b9b3d10ad094b8cd5f3a4815e64","transactionIndex":"0x6D","type":"mined"},{"address":"0xc78be425090dbd437532594d12267c5934cc6c6f","blockHash":"0xcb58a082f58bea43dfb6be8addf97c915190175b9f0f0abc1e05bfd02573f010","blockNumber":"0x7BA949","data":"0x000000000000000000000000000000000000000000000c81c6272987dea5867a","logIndex":"0x38","removed":false,"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000001082e1c4a9c9f946ba102667a14f206c0f81e147"],"transactionHash":"0xd12770e7a1dfa759f6a645981e4bd1d75d2ed131b52565e436bce90b5b39f137","transactionIndex":"0x89","type":"mined"}],"id":0}

{% endcode %}

More examples

Refer to the Ethereum JSON-RPC Specification for more examples and info on the remaining methods.