
先分清通信双方
区块链通讯格式规定数据如何组织,以及接收方如何解释字段。入门时首先要确认通信双方:节点之间交换区块等数据,属于P2P通信;应用向节点查询信息,属于应用接口调用。这两类场景的消息结构和交互规则需要分别理解。
还要区分传输方式与数据格式。传输方式解决数据如何送达,格式解决送达的数据如何读取;连接成功只是第一步,字段符合约定才能被正确处理。

比特币P2P:认识二进制消息边界
Bitcoin Developer Reference的P2P说明展示了一种由消息头与载荷组成的格式。消息头包含网络标识、命令名、载荷长度和校验和;该说明中的多字节整数默认采用小端序,另有说明的字段除外。这里的结构适用于所描述的比特币P2P格式,不能直接套用到所有链或其他传输格式。

阅读这种格式时,可以依次判断消息来自哪个网络、承载什么类型的数据、载荷在哪里结束。校验和用于检查载荷是否匹配,不能据此认定其中的区块符合共识规则;格式检查与内容有效性验证是不同环节。
以太坊JSON-RPC:理解字段与编码
以太坊开发者文档介绍的JSON-RPC主要面向执行客户端接口。请求通过jsonrpc、method、params和id表达协议版本、方法、参数与请求标识。十六进制数量采用最短表示,零写作0x0;字节数据则每字节对应两位十六进制字符,空数据可写作0x。
因此,同样以0x开头的字符串也可能有不同含义。解析前应先确认字段类型:数量关注数值,字节数据还需要保留长度与前导零。随意删除前导零,可能改变数据的字节结构。
常见问题与适用条件
JSON是否就是区块链统一的通讯格式?不同接口可以采用不同编码,应用使用JSON-RPC并不能说明节点之间也使用相同格式。判断规则时,应同时明确链、接口层和协议版本。
为什么查询同一对象可能得到不同结果?涉及链上状态时,还需要确认查询对应的区块或状态范围,以及节点同步情况。字段格式一致,不代表查询上下文一致。
旧文档中的版本号和长度限制能否直接沿用?这些信息具有版本条件。实现解析器时,应以目标客户端及对应协议文档为准,并检查字段长度、允许值和异常响应,避免把历史说明当作永久规则。