哈希力量归集文库路径访问: 首页 > 无人驾驶智能汽车 > 飞行汽车/无人机

一分钟搞懂以太坊RLP编码规则

佚名 ☉ 文 收录源:区块链深度观察 2018-04-18 @ 哈希力量

【小哈划重点:RLP(RecursiveLengthPrefix,递归长度前缀)编码算法,是以太坊中数据序列化/反序列化的主要方法。】

嘿,你又来啦?那个不甘平庸的普通人。h2f哈希力量 | 消除一切智能鸿沟

阿基米德说:给我一个支点,我就能撬动地球。几千年过去了,阿基米德撬动地球了吗?没有,因为太阳系没有他这个支点。h2f哈希力量 | 消除一切智能鸿沟

现实中,相信绝大多数人都没有阿基米德的智慧与能量,也不需要去撬动地球,往往只想与命运扳扳手腕,给人生变下轨迹,区块链将会是你撬动人生的支点吗?今天的干货送上。h2f哈希力量 | 消除一切智能鸿沟

kk_看图王.pngh2f哈希力量 | 消除一切智能鸿沟

- 前言-h2f哈希力量 | 消除一切智能鸿沟

RLP(Recursive Length Prefix,递归长度前缀)编码算法,是以太坊中数据序列化/反序列化的主要方法。以太坊区块链中的区块、交易等数据结构在持久化时会先经过 RLP 编码后再存储到数据库中。h2f哈希力量 | 消除一切智能鸿沟

RLP 编码只处理两类数据:h2f哈希力量 | 消除一切智能鸿沟

●字符串  e.g.  this is stringh2f哈希力量 | 消除一切智能鸿沟

●列符表  e.g.  ["cat","horse",[[]],"pig",[""],"sheep"]h2f哈希力量 | 消除一切智能鸿沟

其他数据类型的数据需要转换成以上的两类,转换的规则不是 RLP 编码定义的,可以根据自己的规则转换,例如struct可以转换成列表,int 可以转换成二进制(属于字符串一类),以太坊中整数都以大端形式存储。h2f哈希力量 | 消除一切智能鸿沟

- RLP编码规则 1 -h2f哈希力量 | 消除一切智能鸿沟

对于单个字节,如果它的值范围是[0x00,0x7f](ASCII码),它的 RLP 编码就是它本身。h2f哈希力量 | 消除一切智能鸿沟

如:a à [0x61] (字符)h2f哈希力量 | 消除一切智能鸿沟

100 à [0x64](数字)h2f哈希力量 | 消除一切智能鸿沟

- RLP编码规则 2 -h2f哈希力量 | 消除一切智能鸿沟

字符串长度是0-55字节,它的 RLP 编码包含一个单字节的前缀,后面跟着字符串的长度,再接着字符串本身。这个前缀的值0x80加上字符串的长度。由于被编码的字符串最大长度是55=0x37,因此单字节前缀的最大值是0x80+0x37=0xb7,即编码的第一个字节的取值范围是[0x80,0xb7]。h2f哈希力量 | 消除一切智能鸿沟

字符串长度小于55字节的RLP 编码例子:h2f哈希力量 | 消除一切智能鸿沟

“dog” à [0x83, 'd', 'o', 'g']h2f哈希力量 | 消除一切智能鸿沟

其中0x83 = 0x80 + 3(“dog”字符串的长度)h2f哈希力量 | 消除一切智能鸿沟

- RLP编码规则 3 -h2f哈希力量 | 消除一切智能鸿沟

字符串长度大于55个字节,它的 RLP 编码包含一个单字节的前缀,后面跟着字符串的长度,再接着字符串本身。这个前缀的值是0xb7加上字符串长度的二进制形式的字节长度。由于被编码的字符串长度的二进制长度最少是1个字节,最大是8个字节,前缀的取值范围是[0xb8,0xbf]。h2f哈希力量 | 消除一切智能鸿沟

字符串长度大于55字节的 RLP 编码例子:h2f哈希力量 | 消除一切智能鸿沟

字符串:h2f哈希力量 | 消除一切智能鸿沟

"Lorem ipsum dolor sit amet, consectetur adipisicing elit"h2f哈希力量 | 消除一切智能鸿沟

字符串长度:h2f哈希力量 | 消除一切智能鸿沟

56字节,其二进制形式为:00111000。其二进制形式的长度为8位,也就是1个字节长度。h2f哈希力量 | 消除一切智能鸿沟

前缀:0xb7 + 1 = 0xb8h2f哈希力量 | 消除一切智能鸿沟

字符串长度的16进制表示:56 à 0x38h2f哈希力量 | 消除一切智能鸿沟

该字符串的 RLP 编码形式为:h2f哈希力量 | 消除一切智能鸿沟

[0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ... , 'e', 'l', 'i', 't']h2f哈希力量 | 消除一切智能鸿沟


h2f哈希力量 | 消除一切智能鸿沟



收录源追溯链接或暂略


本文收录后固定可引用URL链接
    http://www.haxililiang.com/jishu/jinjie/4698.html


☉ 文库同一主题内容智能推荐 ☉
哈希力量 ☉ 人机智能科普文库