摘要:用 curl 对公开 HTTP RPC 只读调用 eth_blockNumber、eth_getBalance、eth_call;对照 ethereum.org 中文文档与 Etherscan。无私钥不发交易。

站内已有 eth_getTransaction 自查、eth_getLogs 过滤器、viem PublicClient 与 区块 Gas Limit 科普。本篇停在更底层:不装 SDK,用 curl 对公开 HTTP RPC 发三笔只读调用:eth_blockNumber、eth_getBalance、eth_call。全程无私钥、不发交易;数字会变,以你本机跑出来的为准。

一、官方文档:JSON-RPC 在说什么

打开 ethereum.org 中文「JSON-RPC API」。开头写明:应用要读链或发交易,就要连上一个以太坊节点;各客户端都实现这份 JSON-RPC 规范。JSON-RPC 是无状态、轻量的远程过程调用协议,数据格式是 JSON。文档也提醒:多数人最终会用 JavaScript / 后端库包一层;本篇故意先走裸 HTTP,方便你看清请求长什么样。

JSON-RPC 裸调用:用 curl 查块高、余额与 eth_call-程序旅途
图1:ethereum.org/zh/developers/docs/apis/json-rpc:JSON-RPC API 定义与客户端实现/便捷库;界面中文,2026-10-26 实拍

二、区块参数:getBalance 与 eth_call 共用

同一文档的「区块参数」列出依赖它的方法,其中包括 eth_getBalance 与 eth_call。参数可以是十六进制块高,或 "latest" / "earliest" / "safe" / "finalized" / "pending"。本场三件套里余额与 eth_call 都用 "latest";QUANTITY / DATA 一律 0x 前缀十六进制。

JSON-RPC 裸调用:用 curl 查块高、余额与 eth_call-程序旅途
图2:同一 JSON-RPC 页「区块参数」:列出 eth_getBalance、eth_call 等,并说明 latest/safe/finalized;界面中文,2026-10-26 实拍

三、本机:公开 RPC 真跑三件套

RPC 用公开节点 https://ethereum.publicnode.com(也可用其它只读端点;延迟与限流因节点而异)。本场 2026-10-26 Asia/Shanghai 实跑摘要:

  • eth_blockNumber → 0x190efda,十进制约 26275802(会变)。
  • eth_getBalance 地址 0x28C6c06298d514Db089934071355E5743bf21d60(浏览器标签 Binance 14)→ 约 163679.057483 ETH(会变)。
  • eth_call 对 WETH 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 调 decimals()(data=0x313ce567)→ 0x…12,即 18。

和站内 getTransaction DIY 的差别:那篇专查单笔哈希;本篇是块高、余额、只读合约三件基础调用。封装路线见 viem PublicClient。

JSON-RPC 裸调用:用 curl 查块高、余额与 eth_call-程序旅途
图3:本机 curl ethereum.publicnode.com:eth_blockNumber / eth_getBalance / eth_call(decimals);只读;2026-10-26 Asia/Shanghai

四、对照浏览器:余额与 WETH Decimals

同一地址在 Etherscan 标题旁可见 Name Tag Binance 14,Overview 的 ETH Balance 与上面 eth_getBalance 应对齐(本场约 163,679 ETH 量级,会变)。WETH 代币页 Other Info 写明 Decimals 18,与 eth_call 返回的 0x12 一致。浏览器是翻译层;RPC 返回的是原始 hex。

JSON-RPC 裸调用:用 curl 查块高、余额与 eth_call-程序旅途
图4:etherscan.io/address/0x28C6…d60:Name Tag Binance 14、ETH Balance 与 Overview;界面英文,2026-10-26 实拍,数值会变
JSON-RPC 裸调用:用 curl 查块高、余额与 eth_call-程序旅途
图5:etherscan.io/token/0xC02a…Cc2:Wrapped Ether、Other Info 含 Decimals 18;界面英文,2026-10-26 实拍

五、怎么核对与卡片

你想确认的事 优先调哪个方法 浏览器大致对应
当前大概到第几块 eth_blockNumber 首页 / 最新区块号
某地址还有多少 ETH eth_getBalance(addr, "latest") 地址页 ETH Balance
只读合约返回值(如 decimals) eth_call({to, data}, "latest") 代币页 Decimals / Read Contract
一笔交易成没成 另文 eth_getTransaction*(站内 DIY) 交易页 Status
请求体固定三件
jsonrpc=2.0、method、params、id。Content-Type 用 application/json;POST 到 HTTP RPC URL。
QUANTITY 是 hex
块高、余额都是 0x…;自己换算十进制再和浏览器对。余额单位是 wei,除以 1e18 才是 ETH。
eth_call 不等于发交易
它在指定块状态下模拟执行,不改链上状态、不烧你的 Gas。写入要走钱包签名,切勿把私钥贴进终端。
  1. 打开 ethereum.org 中文 JSON-RPC 页,扫一眼「区块参数」里的 latest。
  2. 对公开 RPC 调 eth_blockNumber,把 hex 换成十进制。
  3. 再调 eth_getBalance,与 Etherscan 同地址 ETH Balance 对照。
  4. 用 eth_call 读 WETH decimals(),确认返回 18。
  5. 需要钱包读链可试用欧易 Web3(创建可填 CHENGXULVTU);买少量 ETH 付 Gas 可在 币安 或 欧易。本场只读核对,不必发交易。

相关阅读

说明:配图为 2026-10-26 ethereum.org 中文 JSON-RPC 概述与区块参数、本机对 ethereum.publicnode.com 的真实 curl 三件套、Etherscan Binance 14 地址与 WETH 代币页。块高、余额会变;decimals 对 WETH 一般为 18。本文不构成投资建议。