eth_getBalance 返回指定地址在某个区块状态下的原生币余额,结果是以 Wei 表示的十六进制整数。重建历史余额必须固定区块号,并使用能读取该历史状态的节点。
请求固定高度的余额
{"jsonrpc":"2.0","id":21,"method":"eth_getBalance","params":["0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe","0x12D687"]}
假设返回 {"result":"0xde0b6b3a7640000"},十六进制转十进制是 1000000000000000000 Wei,再除以 10^18 得 1 ETH。程序中使用 bigint 或十进制定点库,不能用 JavaScript Number 承载大额余额。
latest 与历史快照不同
latest 会随新区块变化,适合当前余额;审计报告应保存 block number、block hash、chainId、节点端点和原始 result。远古区块若报 missing trie node 或供应商限制,说明需要 archive 能力,不应把失败解释成余额为零。还可先请求区块哈希,确保第二次查询仍处于预期分叉。
这不是 ERC-20 查询
eth_getBalance 只查询账户原生币。ERC-20 要对 token 合约调用 balanceOf,并读取 decimals 做换算;代理或重基代币还可能需要额外解释。同一地址的 ETH 和 USDC 不能用一个 RPC 方法混算。
余额差异排查还要区分区块执行前后的状态。eth_getBalance 的区块参数指向该区块执行后的状态;若要解释某笔交易造成的变化,应比较相邻区块并结合交易回执、内部调用和费用支出。仅用一条 transfer 事件无法重建原生币全部变化。
eth_getBalance:当前证据的停止位置
不同RPC的链头、裁剪和负载均衡可能产生时点差异,比较余额时必须固定区块哈希或编号。
eth_getBalance:一手资料能确认的三件事
- eth_getBalance按地址和区块参数返回原生ETH余额,结果是十六进制Wei数量。
- 换算展示值应保留原始整数并按10的18次方换算;该接口不返回ERC-20、NFT或其他合约内部余额。
- latest余额随新区块变化,历史余额依赖archive能力或节点保留状态;读取成功也不证明地址私钥可用或资金可花费。(有限确认)
eth_getBalance:把搜索问题拆成四层
- 要问:请求与十六进制是否与当前环境一致? 验收目标:用请求与十六进制直接回答搜索意图并形成可执行核验信息。
- 要问:Wei换算表是否与当前环境一致? 验收目标:用Wei换算表直接回答搜索意图并形成可执行核验信息。
- 要问:原生币与代币边界是否与当前环境一致? 验收目标:用原生币与代币边界直接回答搜索意图并形成可执行核验信息。
- 要问:历史查询能力是否与当前环境一致? 验收目标:用历史查询能力直接回答搜索意图并形成可执行核验信息。
eth_getBalance最容易出现的误判
不能因为请求与十六进制看起来正常,就省略Wei换算表和原生币与代币边界。界面成功、请求被接收和业务完成是三种状态,各自需要证据。
eth_getBalance的证据出处
- eth_getBalance的一级来源 1:Ethereum.org JSON-RPC。用于正式字段、流程或产品说明
- eth_getBalance的一级来源 2:Ethereum Execution APIs。用于实现路径、比较基准或风险边界
与eth_getBalance直接相邻的站内主题
- latest、safe、finalized有何区别?:补充第1项相邻知识。
- RPC节点是什么?钱包风险:补充第2项相邻知识。
执行eth_getBalance相关操作前,应重新打开对应版本的原始资料。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。