eth_call
立即执行一次消息调用,但不会在区块链上创建交易。常用于读取合约状态数据。
-
Object— 交易调用对象:字段 类型 必填 说明 from DATA 否 发送方地址 to DATA 是 合约地址 gas QUANTITY 否 Gas 上限 gasPrice QUANTITY 否 Gas 单价 value QUANTITY 否 转账金额 data DATA 否 ABI 编码后的函数调用数据 -
QUANTITY|TAG— 区块号,或"latest"、"earliest"、"pending"。
DATA — 合约函数执行后的返回值。
# 读取 USDC 合约 totalSupply()curl -X POST https://eth-mainnet.blockreq.com/v1/rpc/public \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "eth_call", "params": [{ "to": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "data": "0x18160ddd" }, "latest"], "id": 1 }'{ "jsonrpc": "2.0", "id": 1, "result": "0x0000000000000000000000000000000000000000000000000000001234567890"}JavaScript (ethers.js v6)
Section titled “JavaScript (ethers.js v6)”import { JsonRpcProvider, Contract } from "ethers";const provider = new JsonRpcProvider("https://eth-mainnet.blockreq.com/v1/rpc/YOUR_API_KEY");const usdc = new Contract("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", [ "function totalSupply() view returns (uint256)",], provider);const supply = await usdc.totalSupply();console.log("USDC supply:", supply.toString());Python (web3.py)
Section titled “Python (web3.py)”from web3 import Web3w3 = Web3(Web3.HTTPProvider("https://eth-mainnet.blockreq.com/v1/rpc/YOUR_API_KEY"))result = w3.eth.call({ "to": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "data": "0x18160ddd"})print("Total supply:", int(result.hex(), 16))| Method | Cost |
|---|---|
| eth_call | 20 RU |