以下一种编码任意结构的二进制数据的序列化方法。

假定可能的数据结构

其中代表字节集合。因而是所有字节的序列的集合(或者是字节数组,可以想象成树结构的叶子)。是所有类树(子)结构的集合,这里的树结构布置仅一个树叶(可以想象成一个树的分支节点)。 是所有字节数组的集合和类似结构的序列。

以分段函数定义RLP,第一段处理当x 是字节序列时的实例;第二段处理当x是其他值时

如果x是一个字节数组,包含在中,那么RLP序列产生方法有三种

  • 如果字节数组仅包含单一字节(并不是说长度8bit的一个字节数据)且字节长度小于128位,RLP输出的序列就是输入
  • 如果字节数组少于56字节,RLP输出的二进制序列就是字节数组的加上前缀,前缀是长度是字节数组长度加上128
  • 否则,输出等于输入加上长度最小字节数组的长度的前缀,当以big-endian编译时,前缀长度等于输入字节数组的长度,它本身的前缀是数字忠实编码的长度值加上183所需的字节数。(这里不知道怎么理解,直译过来的)

定位为

BE是一个函数,把正整数扩展成一个最小长度的big-endian 字节数组,点运算符表示拼接序列。

相反的,如果x是其他值,需要被转化成其他符号的序列,则RLP序列输出用以下两种方法:

  • 如果每个包含项的串联序列化长度小于56个字节,则输出等于串联字节数组加上前缀,该前缀长度等于此字节数组的长度加上192。
  • 否则,输出等于以最小长度字节数组为前缀的串联序列化当被解释为big-endian整数时,它等于拼接的serialisations字节的长度数组,其本身以忠实编码此长度值加上247所需的字节数为前缀。

定位为

如果RLP被用来编码一个标量,仅作为一个正整数(),它必须被编码为最短字节数组这样用big-endian编码时长度才会相等。因此一些正整数 的RLP可以被定义为

当译码RLP数据时,如果一段译码后的字节序列是一个标量并且以0开头,客户端会认为它是一个非典型的序列,认为它是无效RLP数据并完全丢弃它。

对于有符号数和浮点数并没有权威的编码格式

以太坊黄皮书-附录B.递归前缀长度相关推荐

  1. 以太坊黄皮书-附录A

    附录A External Actor:可以与以太坊节点交互但在以太坊世界(world of Ethereum)外部的个人或其他实体.它可以通过存储签名交易和检查区块链以及其他相关的状态交互.它有一个或 ...

  2. 以太坊-入门基础(以太坊黄皮书学习)

    文章目录 一.什么是以太坊黄皮书 二.以太坊黄皮书 1. 引言 2. 区块链范式 3. 约定 4. 区块.状态和交易 世界状态 账户状态 交易 区块 总结 5. Gas 及其支付 gasPrice 和 ...

  3. 以太坊黄皮书(1~6章)

    以太坊黄皮书(一) 引言   简单来说,在以太坊模型中,交易和智能合约的执行会改变节点的状态:可以把以太坊想象成一台计算机.因此,如果你将这个逻辑复制到分布于点对点网络中的其他节点上,并找到一种方法来 ...

  4. 以太坊黄皮书(7~)

    以太坊黄皮书------合约创建   前面的一篇一到六章的黄皮书是转载,通过作者自己对于文章的简化,对于初学者很好理解,现在以太坊黄皮书(中文版)已经发布,所以接下来的文章,我们直接都中文版.虽然都英 ...

  5. 猿哥翻译的以太坊黄皮书

    以太坊白皮书概要性地介绍了以太坊,以太坊黄皮书通过大量的定义和公式详细地描述了以太坊的技术实现.猿哥和高天露联合翻译了以太坊黄皮书. 官方以太坊黄皮书地址: https://github.com/et ...

  6. 技术沙龙|解读以太坊黄皮书,学习智能合约应用开发(北京)

    2019独角兽企业重金招聘Python工程师标准>>> 前几天HiBlock区块链社区的杨镇老师在一次访谈中再次聊到了区块链技术学习和应用的话题,杨镇老师的观点很明确,技术学习要回归 ...

  7. 深入了解以太坊虚拟机第2部分——固定长度数据类型的表示方法

    本文由币乎社区(bihu.com)内容支持计划赞助 在本系列的第一篇文章中,我们已经看到了一个简单的Solidity合约的汇编代码: contract C {uint256 a;function C( ...

  8. 以太坊-EVM第2部分——固定长度数据类型的表示方法

    在本系列的第一篇文章中,我们已经看到了一个简单的Solidity合约的汇编代码: contract C {uint256 a;function C() {a = 1;} } 该合约归结于sstore指 ...

  9. 以太坊黄皮书翻译连载2-20170829

     (接1)还有些工程建立在比特币网络基础上,充分利用比特币网络的巨大价值和它的基于共识算法的计算资源.MasterCoin项目由Willett[2013]首次提出,目标是创建一套更丰富的协议,在比 ...

最新文章

  1. [Js/Jquery]jquery插件开发
  2. 盘启动盘_[装机]推荐唯二的两个开源免费的启动盘工具,轻松创建USB启动盘
  3. 没学过python、但是还是有公司要-扎心!“我学了半年 Python,还是找不到工作”...
  4. # W3C 中文离线教程 2016 年版
  5. ajax中json和文本的区别,json格式字符串--json对象 【ajax_responseText】重点
  6. PowerDesigner中为Oracle添加自增id
  7. 智能水杯设计方案_智能水杯盖方案开发
  8. 3个月的SHELLCODE研究成果-一个最简单的Shellcode
  9. dataGruidView整行选中
  10. 为什么使用@tablename起别名产生的sql语句不能用_宜信-运维-SQL优化|一文说清Oracle Hint的正确使用姿势...
  11. 火车售票系统html模板,火车售票系统设计
  12. 《一天学懂深度学习》PPT翻译一
  13. 宝鲲:如何防范炒外汇风险
  14. word怎么拆分表格
  15. 华山论剑闲谈iOS中闪光灯的使用
  16. 随机森林 n_estimators参数 max_features参数
  17. 2021年总结 2022年展望
  18. 光遇显示服务器已满怎么办,sky光遇服务器已满怎么办_sky光遇服务器已满解决方法介绍-星芒手游网...
  19. 熊孩子乱敲键盘攻破linux桌面,“熊孩子”乱敲键盘攻破了Linux桌面 大神:17年前我就警告过...
  20. win10右键点击桌面图标闪屏,wps卸载

热门文章

  1. mybatis 项目启动时报“Result Maps collection already contains value forxxx”错误
  2. 【Codecs系列】芯片PPA问题
  3. 第二十四次CSP考试第二题,速度拿70分。
  4. Linux防火墙:iptables禁IP与解封IP常用命令
  5. MYSQL表的增删改查进阶(下)
  6. 招标服务费计算小程序(2022-2-10)重写
  7. Python处理Excel表格匹配问题
  8. 计算机等级考试网络工程师好考吗,计算机等级考试一次通过,原来是看了计算机四级网络工程师考试内容...
  9. webmatrix mysql_WebMatrix PHP MySQL
  10. 我如何在 Linux 上扫描家庭照片