W3

链上 API 参考

三块内容按「离节点由近到远」排列:最底层是节点自己的 JSON-RPC 接口, 中间是封装它的函数库,最上层是浏览器钱包与签名标准。 排查问题时从上往下找:界面不对 → 函数库调用 → 最终打印出来的 RPC 请求体。

所有 EVM 节点都实现这套接口。dApp 用的 ethers / viem 只是它的上层封装, 出问题时最终都要回到这里排查——把请求体打印出来,就知道到底发的是什么。 数值全部用十六进制字符串(0x 前缀), 大整数不要在前端转成 Number。

eth_chainId网络信息返回当前链的 chainId(十六进制)。前端切换网络后必须先核对它,再发交易。

返回当前链的 chainId(十六进制)。前端切换网络后必须先核对它,再发交易。

返回:QUANTITY - 十六进制 chainId,例如 0x1 表示以太坊主网
请求示例JSON
0x1 以太坊主网、0xa 后者为 Optimism(10)、0x2105 为 Base(8453)、0xa4b1 为 Arbitrum One(42161)。
eth_blockNumber网络信息返回最新区块高度。常用于判断节点是否同步、以及做基础的存活探测。

返回最新区块高度。常用于判断节点是否同步、以及做基础的存活探测。

返回:QUANTITY - 十六进制区块高度
请求示例JSON
eth_syncing网络信息节点是否处于同步中。返回 false 表示已同步,返回对象时字段是同步进度。

节点是否处于同步中。返回 false 表示已同步,返回对象时字段是同步进度。

返回:boolean | object
请求示例JSON
自建节点做生产 RPC 时,同步未完成就对外提供服务会返回过期数据。
eth_getBalance账户与余额查询地址的原生币余额(ETH / BNB / MATIC 等)。

查询地址的原生币余额(ETH / BNB / MATIC 等)。

参数(按顺序)
名称类型说明
addressDATA, 20 Bytes要查询的地址
blockstring | objectlatest / earliest / pending / safe / finalized,或十六进制区块号、32 字节区块哈希
返回:QUANTITY - wei 为单位的十六进制余额
请求示例JSON
代币余额(ERC-20)不是这个接口,要 eth_call 调 balanceOf。
eth_getTransactionCount账户与余额返回地址已发送的交易数,也就是下一笔交易的 nonce。

返回地址已发送的交易数,也就是下一笔交易的 nonce。

参数(按顺序)
名称类型说明
addressDATA, 20 Bytes账户地址
blockstring | objectlatest / earliest / pending / safe / finalized,或十六进制区块号、32 字节区块哈希
返回:QUANTITY - 下一个可用 nonce
请求示例JSON
用 pending 才能拿到包含待打包交易的 nonce;用 latest 会在连续发交易时造成 nonce 冲突。
eth_getCode账户与余额返回地址上的字节码。用来判断一个地址是合约还是普通账户(EOA)。

返回地址上的字节码。用来判断一个地址是合约还是普通账户(EOA)。

参数(按顺序)
名称类型说明
addressDATA, 20 Bytes待检测地址
blockstring | objectlatest / earliest / pending / safe / finalized,或十六进制区块号、32 字节区块哈希
返回:DATA - 字节码,普通账户返回 0x
请求示例JSON
转账前用它确认目标确实是合约,能挡掉一部分「转到钓鱼 EOA」的骗局。
eth_call读取合约在不产生交易、不花 Gas 的前提下执行合约的只读函数。所有 view / pure 函数都靠它。

在不产生交易、不花 Gas 的前提下执行合约的只读函数。所有 view / pure 函数都靠它。

参数(按顺序)
名称类型说明
txobject{ from?, to, gas?, gasPrice?, value?, data } — data 是 4 字节选择器 + ABI 编码参数
blockstring | objectlatest / earliest / pending / safe / finalized,或十六进制区块号、32 字节区块哈希
返回:DATA - ABI 编码的返回值
请求示例JSON
0x70a08231 就是 balanceOf(address) 的函数选择器。手动拼 calldata 是排查 ABI 问题的必备技能。
eth_estimateGasGas 与费用估算一笔交易需要多少 gas。写入接口前必须调用,否则很容易 out of gas。

估算一笔交易需要多少 gas。写入接口前必须调用,否则很容易 out of gas。

参数(按顺序)
名称类型说明
txobject{ from, to?, value?, data? }
blockstring可选,默认 latest;多数节点也接受 pending
返回:QUANTITY - 估算出的 gas 上限
请求示例JSON
估算值会随链上状态变化,实际发送时建议乘 1.1–1.3 倍留出余量;估算失败通常意味着交易本身会 revert。
eth_gasPriceGas 与费用返回节点建议的 gas 单价(EIP-1559 之前的旧接口,兼容性最好)。

返回节点建议的 gas 单价(EIP-1559 之前的旧接口,兼容性最好)。

返回:QUANTITY - wei 为单位的 gas 单价
请求示例JSON
eth_maxPriorityFeePerGasGas 与费用EIP-1559 下的建议小费(优先费),与 baseFee 一起决定实际 gas 价格。

EIP-1559 下的建议小费(优先费),与 baseFee 一起决定实际 gas 价格。

返回:QUANTITY - wei 为单位的小费
请求示例JSON
实际要付的 maxFeePerGas ≈ baseFee * 2 + 小费,设置过低会在网络拥堵时长期挂起。
eth_feeHistoryGas 与费用返回最近若干区块的基础费与优先费历史,是钱包做动态费率推荐的标准数据源。

返回最近若干区块的基础费与优先费历史,是钱包做动态费率推荐的标准数据源。

参数(按顺序)
名称类型说明
blockCountQUANTITY要查询的区块数,建议 4–20
newestBlockstring最新区块号或 latest
rewardPercentilesnumber[]要统计的百分位,例如 [25, 50, 75]
返回:object - { baseFeePerGas[], gasUsedRatio[], reward[][] }
请求示例JSON
eth_sendRawTransaction发送交易广播一笔已签名的交易。这是唯一能真正改变链上状态的入口之一。

广播一笔已签名的交易。这是唯一能真正改变链上状态的入口之一。

参数(按顺序)
名称类型说明
signedTxDataDATARLP 编码并签名后的完整交易字节流
返回:DATA, 32 Bytes - 交易哈希
请求示例JSON
哈希只代表「已接收」,不代表成功。必须再轮询 eth_getTransactionReceipt 看 status 才是真的成功。
eth_getTransactionReceipt发送交易根据交易哈希拿回执,包含执行状态、gas 消耗、日志与合约地址。

根据交易哈希拿回执,包含执行状态、gas 消耗、日志与合约地址。

参数(按顺序)
名称类型说明
txHashDATA, 32 Bytes交易哈希
返回:object | null - 未打包时返回 null
请求示例JSON
失败交易(status 0x0)同样消耗 gas 并已上链,会拿到全额的 gasUsed 扣款。
eth_getTransactionByHash发送交易查询交易详情。常用于展示「这笔交易到底发没发出去」。

查询交易详情。常用于展示「这笔交易到底发没发出去」。

参数(按顺序)
名称类型说明
txHashDATA, 32 Bytes交易哈希
返回:object | null
请求示例JSON
eth_getLogs日志与事件按地址与 topic 过滤事件日志,是索引器、看板、空投快照的核心接口。

按地址与 topic 过滤事件日志,是索引器、看板、空投快照的核心接口。

参数(按顺序)
名称类型说明
filterobject{ fromBlock, toBlock, address?, topics?, blockHash? }
返回:array - 日志对象数组 { address, topics, data, blockNumber, transactionHash, logIndex }
请求示例JSON
topics[0] 是事件签名哈希,后面按事件定义中 indexed 参数的顺序填;null 表示该位不过滤。区间过大会被节点拒绝,需要分页拉取。
eth_subscribe日志与事件WebSocket 订阅新块、日志或待打包交易,用于实时监控。

WebSocket 订阅新块、日志或待打包交易,用于实时监控。

参数(按顺序)
名称类型说明
subscriptionstringnewHeads / logs / newPendingTransactions / syncing
filterobject仅 logs 需要,格式同 eth_getLogs 的 filter
返回:string - 订阅 ID,后续事件通过 eth_subscription 通知推送
请求示例JSON
订阅会在断线时静默失效,生产环境必须实现重连 + 断点补拉(用 eth_getLogs 补齐缺口)。
eth_getBlockByNumber网络信息按区块号取区块头与交易列表,用于算确认数、算时间间隔。

按区块号取区块头与交易列表,用于算确认数、算时间间隔。

参数(按顺序)
名称类型说明
blockQUANTITY | string区块号或 latest / finalized
fullTxbooleantrue 返回完整交易对象,false 只返回哈希数组
返回:object | null
请求示例JSON
确认数 = 当前区块号 - 交易所在区块号 + 1。交易所通常要求 12 确认(以太坊)或按 L2 的软确认规则。