RLP类源码分析 - ethereumj

半兽人 发表于: 2018-03-14   最后更新时间: 2018-03-20  
  •   0 订阅,297 游览

RLP (递归长度前缀)提供了一种适用于任意二进制数据数组的编码,RLP已经成为以太坊中对对象进行序列化的主要编码方式。RLP的唯一目标就是解决结构体的编码问题;对原子数据类型(比如,字符串,整数型,浮点型)的编码则交给更高层的协议;以太坊中要求数字必须是一个大端字节序的、没有零占位的存储的格式(也就是说,一个整数0和一个空数组是等同的)。

如果有人希望使用RLP对字典进行编码,则两个建议的规范形式要么按照字典顺序使用[[k1,v1],[k2,v2]...]或者使用更高级别的Patricia Tree编码为以太坊。

RLP编码功能需要一个item。一个item定义如下:

  • 字符串(即字节数组)是一个item - item列表是一个item

例如,空字符串是一个item,包含单词“cat”的字符串,包含任意数量字符串的列表以及更复杂的数据结构,如["cat",["puppy","cow"],"horse",[[]],"pig",[""],"sheep"]。请注意,在本文其余部分的上下文中,“字符串”将用作“一定数量的二进制数据字节数”的同义词; 没有使用特殊的编码,也没有关于字符串内容的知识。







发表于: 3月前   最后更新时间: 3月前   游览量:297
上一条:
下一条: ECKey类源码分析 - ethereumj

评论…


  • 评论…
    • in this conversation
      提问