eth_call

这是常用的 JSON-RPC 方法。它用于读取智能合约在区块链中数据,因为是只读方法,所以调用不消耗任何Gas费。

我们可以使用 eth_call 方法调用智能合约的任何函数,它会返回十六进制格式的数据。

eth_call 用于调用智能合约的只读函数。 例如: 调用 ERC20 代币合约的 balanceOf 函数。

Parameters

  1. Object - [必须] 交易调用对象

    • from [必须] 发送交易的地址。

    • to [必须] 交易指向的地址。

    • gas [可选] 表示为交易执行提供的十六进制 Gas 值。 eth_call 消耗零 Gas,但某些执行可能需要此参数。

    • gasPrice [可选] 表示为付费交易的交易定价。

    • maxPriorityFeePerGas [可选] 最高优先 Gas 费,以 Wei 为单位,表示发送人愿意支付高于基础 Gas 费的优先费用。适用于: EIP-1559 交易。

    • maxFeePerGas [可选] 最高总费用,基础 Gas 费 + 优先 Gas 费,以 Wei 为单位,表示发送人愿意支付最大总费用。适用于: EIP-1559 交易。

    • value [可选] 表示与此交易一起发送的十六进制整数值。

    • data [可选] 方法签名和编码参数的哈希。参阅: 以太坊 ABI 规范

  2. Block-Number - [必须] 十六进制整数块号,或使用字符串: latest, earliest or pending。请参阅: 默认块号参数

Request

以下示例展示查询 ERC20 代币的 balanceOf 函数。

curl https://eth-mainnet.solarpath.io/v1/YOUR-API-KEY \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc": "2.0", "id": 1, "method": "eth_call", "params": [{"from":"0xff1231b8b8c3d87158927f21bb1d4be64ce20d08","to":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","data":"0x70a08231000000000000000000000000ff1231b8b8c3d87158927f21bb1d4be64ce20d08"},"latest"]}'

Response

返回合约执行结果。

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x00000000000000000000000000000000000000000000000000000004a817c800"
}

最后更新于