
节点、RPC 与 API:先分清访问层次
节点是应用读取链上数据的连接对象;API 是对外提供的方法接口;RPC 指远程过程调用。JSON-RPC 使用 JSON 表达请求和响应,但不限定只能通过 HTTP 传输。开发库可以封装这些调用,让应用不必逐次组织底层请求。
这些术语描述的是不同层次:节点提供服务,接口规定可查询什么,协议规定如何表达请求,开发库简化程序接入。采用封装库不意味着数据来源发生了改变。

状态与历史:明确要采集的对象
以太坊接口区分状态查询与历史记录查询。前者涉及余额、合约存储等,后者涉及区块、交易和交易回执。状态查询中的区块参数决定查询所对应的位置;latest、safe、finalized 和 pending 表示不同的状态范围,不能混用。

例如,某个区块的交易记录与某个高度的账户余额并非同一类数据。设计采集字段时,应先说明需要的是记录还是状态,以及对应哪个区块,避免把不同时间位置的结果直接合并。
区块哈希、高度与返回详细度
比特币 getblock 使用区块哈希定位区块。其 verbosity 参数控制返回形式:0 返回十六进制序列化数据,1 返回区块信息及交易标识,2 进一步包含交易信息。返回字段还包括高度、确认数和前一区块哈希等。
高度表达区块在链上的位置,哈希用于标识具体区块。详细度表达结果展开到什么程度,并不是数据可信度评分。需要交易明细的任务,应区分交易标识列表与交易对象列表;需要解析原始数据的任务,则必须具备相应的解码能力。
十六进制:外观相似不代表类型相同
以太坊 JSON-RPC 中,数量与字节数据都可使用带 0x 前缀的十六进制字符串,但编码规则不同。数量采用紧凑表示,零写作 0x0;字节数据每个字节对应两位十六进制字符,空数据可写作 0x。
因此,采集程序不能只看字符串前缀判断字段含义。数值转换与字节保存应分别处理,否则可能把有意义的前导零删除,或把空数据误当作数值零。
适用条件与常见问题
接口名称可以跨链直接套用吗?不能。上述例子分别适用于以太坊执行客户端接口和比特币区块查询接口,方法名称、参数及返回结构需按目标接口理解。
返回内容越多越好吗?不一定。应围绕所需字段选择返回形式,同时明确是否需要额外解析。接口是否可用也应结合具体客户端核对,不能因为协议有统一约定,就假定所有实现支持完全相同的方法。