目录
1 RLP 定义
2 RLP 编码规则
3 RLP 编码实例
4 RLP 分析
1 RLP 定义
RLP,即 Recursive Length Prefix, 递归长度前缀编码,是以太坊数据序列化的主要方法, 具有较好的数据处理效率,尤其是将长度和类型统一作为前缀,实际上 RLP 是基于 ASCII 编码的一种结构化扩充,既能表示长度还能表示类型,是一种非常紧凑的结构化编码方案。 该编码方案用于编码任意的嵌套结构的二进制数据,区块、交易等数据结构在持久化时会先 经过 RLP 编码后再存储到数据库中。RLP 的唯一目标就是解决结构体的编码问题;对原子 数据类型(比如,字符串,整数型,浮点型)的编码则交给更高层的协议;以太坊中要求数 字必须是一个大端字节序的、没有零占位的存储的格式(也就是说,一个整数 0 和一个空数 组是等同的)。如果要编码一个字典,推荐使用两种规范的编码格式——一是通过 key 的字 典序来组织字典[[k1,v1],[k2,v2]……],另一种是以太坊中使用的高层的 Patricia Tree。
RLP 编码的定义只处理两类数据:
一类是字符串(例如字节数组),即一串二进制数据(strings);
一类是列表。即一个嵌套递归的结构,里面可以包含字符串和列表。
例如:[“cat”,[“puppy”,“cow”],“horse”,[[]],“pig”,[“”],“sheep”]
其他类型的数据需要转成以上的两类,转换的规则不是 RLP 编码定义的,可以根据自