以太坊同时维护两套序列化标准:执行层用 RLP,共识层用 SSZ。这不是历史包袱,而是两种截然不同的设计哲学应对不同需求的结果。


一、为什么需要序列化

区块链网络中,所有数据结构需要在三个场景之间流转:

  1. 网络传输:节点间发送区块、交易、attestation
  2. 数据库存储:在磁盘上持久化状态
  3. 密码学哈希:计算区块哈希、状态根、签名

好的序列化方案需要:

RLP 和 SSZ 在这三点上有截然不同的侧重。


二、RLP:递归长度前缀编码

2.1 设计思想

RLP(Recursive Length Prefix)是以太坊早期专门设计的极简序列化方案。它只定义了两种基本类型:

这种极简主义使 RLP 的规范只需几页纸即可描述完整。

2.2 编码规则