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

假定可能的数据结构

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

以分段函数定义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. Cisco实战——不让坏人登陆设备
  2. saltstack配置管理之YAML(二)
  3. LeetCode 402. 移掉K位数字 中等难度
  4. Machine Learning week 4 quiz: programming assignment-Multi-class Classification and Neural Networks
  5. 掌门教育微服务体系 Solar 第 3 弹:Nacos 企业级落地下篇
  6. 6、Actor,Stage的学习
  7. WSAGetLastError() 返回的错误
  8. Oracle自增主键的添加[sequence]--表数据已存在
  9. 3D移动translate3d(CSS3)
  10. org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.demo.pojo.IdCard
  11. 【Wannafly挑战赛14 E】无效位置(并查集思想+线性基合并)
  12. 计算机仿真是北大核心期刊,计算机仿真 北大核心期刊统计源期刊 CSCD核心期刊...
  13. 程序员秃顶算工伤吗?
  14. android时光轴相册,Android之RecyclerView实现时光轴效果示例
  15. 政府主办!百万奖金!大厂offer!山东省数据应用创新创业大赛等你来!
  16. [渝粤教育] 西南科技大学 园艺作物高产栽培 在线考试复习资料
  17. IterNet: Retinal Image Segmentation Utilizing Structural Redundancy in Vessel Networks
  18. supervisor的使用教程
  19. 【转】计算机词汇简繁体对照表
  20. 数分可视化笔记整理4 - 2017年内地电影和票房数据情况(条形图)

热门文章

  1. python turtle库一些基本函数
  2. 计算机专业去电视台,计算机网络与多媒体技术在电视台中的发展前景
  3. 红旗linux超级管理员root 密码恢复,修改redflag启动级别
  4. 云计算是如何赋能智慧社区加速落地的?
  5. 【智慧消防】安科瑞智慧消防综合管理云平台解决方案
  6. Autodesk Autocad 3ds Max 2019 Crack 破解版
  7. 【力扣LeetCode】22 括号生成
  8. Ofbiz 入门教程
  9. XP系统70个小技巧
  10. iOS 越狱之后无法查看private、var等文件