建议和反馈

请填写你的反馈内容

以太坊区块链技术解析-RLP编码

2019-12-02 ·849次阅读 ·读完需要3分钟

Recursive Length Prefix, 递归长度前缀编码。在以太坊中所有的区块以及交易都需要先经过RLP编码之后才存到数据库里,是以太坊数据序列化的主要方法。主要用于编码具有嵌套结构的二进制数据,之所以是用新的数据结构,是因为它比之XML、JSON之类的序列化方法更为简洁,更适用于区块链环境下容量有限的区块;同时,它可以解决结构体的编码问题,区块链应该要求数据结构尽量单纯,对原子数据类型(比如,字符串,整数型,浮点型)的编码则交给更高层的协议,这也有利于区块链的安全。

方式:

rlp编码的对象有一个byte、string与string list三种。

一个空的string是一个item,“cat”也是一个item。包含任意个string的list(例如,["cat",["puppy","cow"],"horse",[[]],"pig",[""],"sheep"])也是一个item。

原理如下:

 1.对于byte

 如果一个字节在[0x00, 0x7f],那么这个字节的rlp编码就是本身。


2.对于string

 2.1如果是一个0-55字节的字符串str,rlp编码由prefix+str两部分表示,prefix占一个字节,内容是(0x80+字符串长度);str是字符串。由于str的长度是[0,55],所以前面的prefix取值范围就是[0x80,0xb7]。

 2.2如果是一个大于55个字节的字符串str,rlp编码由prefix+length+str三部分表示。prefix占一个字节,内容是(0xb7+length占几个字节);length是str的长度;str是字符串。举个例子,1024字节的字符串的length是0x0400,占两个字节,preifix就是0xb7+2=0xb9,最后的前缀就是0xb9 0x04 0x00。prefix取值范围是[0xb8,0xbf]。


3.对于string list:

 3.1如果string list中所有string编码后的长度总和(也叫payload)为0-55个字节,rlp编码由totalprefix+[prefix1+str1]+[prefix2+str2]...。totalprefix占一个字节,内容是(0xc0+payload长度);后面的prefix+str与上面string中的情况1一致。举个例子,RLP([“cat”,“dog”])= [ 0xc8, 0x83, 'c', 'a', 't', 0x83,

'd', 'o', 'g' ]。totalprefix范围是[0xc0,0xf7]。

 3.2如果一个list的payload的长度大于55,其RLP编码是list的item的RLP编码的串联,前面加上一个表示payload长度的字节,前面再加上一个payload长度的二进制表示的字节长度。

评论(0)问答(0)
请先登录或注册

请先登陆或注册

相关推荐

币圈小蝶:币圈几千个币,99%可能是垃圾……

 1、努力学习,重点是2方面:一是区块链基础知识,二是金融交易的基础知识。第一块内容是让你进一步了解这个行业,熟悉这个行业的规律,甚至找到一些其它的盈利模式。第二块内容是给那些致力于通过二级......
ofkings95币圈 · 2019-12-11
155阅读 · 0赞赏 · 0问答

炒币机器人:在币圈你真的知道该怎么屯币吗?

短线操作、追涨杀跌、加大杠杆、焦虑难安...这都是散户很难在这个市场上获得财富的原因。  那么普通人,到底应该如何避开这些坑,真正去享受到比特币带来的财富增长呢?方式有很多,今天要聊的是其中......
ofbing88 · 2019-12-10
403阅读 · 0赞赏 · 0问答

币圈小蝶:币圈现在的行情适合定投么?

 定投是什么?定投首先是建立在对一个币种的共识价值和潜力预期基础上的,进行的时间和价格上两种形式的定向投资。什么意思,比如btc,这个币永远都会有人认可,那么他就是有共识价值的,说白就是不会......
ofkings95币圈 · 2019-12-10
441阅读 · 0赞赏 · 0问答

三两谈币:币圈追求财富自由的几种姿势?

有人说币圈一日,股市一年,币圈在不断演绎创富神话的同时,也会让人一夜返贫。如果说币圈里面,什么是最吸引眼球的字眼,别说什么科技,也别说什么信仰,最最吸引眼球的是四个字“财富自由”。不同的币圈众人用不同......
ofbing88 · 2019-12-09
636阅读 · 0赞赏 · 0问答

李向午:主流币处于震荡上行状态,多头可区间内操作

李向午:主流币处于震荡上行状态,多头可区间内操作  比特币行情分析  昨日比特币价格如笔者所料上行至7600后遇阻回调以7500附近收盘得阳。近日来比特币还是未能脱离震荡区间。今日价格继续在7300-......
李向午 · 2019-12-08
613阅读 · 0赞赏 · 0问答

李向午:保持短空间内操作,狭道亦可获利

李向午:保持短空间内操作,狭道亦可获利  比特币行情分析  比特币上行突破7500点,在触及7600上方位置后触顶回弹。日线图中,布林带呈收口状态,价格在布林带上行通道运行,布林带中轨在7500位置给......
李向午 · 2019-12-07
631阅读 · 0赞赏 · 0问答

wind

1859

LK币

23

粉丝

29

笔记

感谢"wind"

这篇精彩的笔记,目前已经帮助

  • 0
  • 0
  • 8
  • 4
  • 9
喜欢0
链客社群 加入

微博进入

商务合作>

广告投放>

公司名称:北京链客行科技有限公司

联系方式:010-67707199

ICP备案号:京ICP备18032136号

Copyright:链客区块链技术问答社区 版权所有

感谢您的提问,问题被社区永久收入以便新人查看。一定要记得采纳最佳答案哦!加油!

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!