以太坊RLP编码规则
链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
区块链中以太坊RLP编码规则! RLP(Recursive Length Prefix,递归长度前缀)编码算法,是以太坊中数据序列化/反序列化的主要方法。
RLP(Recursive Length Prefix,递归长度前缀)编码算法,是以太坊中数据序列化/反序列化的主要方法。以太坊区块链中的区块、交易等数据结构在持久化时会先经过 RLP 编码后再存储到数据库中。
RLP 编码只处理两类数据:
●字符串 e.g. this is string
●列符表 e.g. [“cat”,“horse”,[[]],“pig”,[""],“sheep”]
其他数据类型的数据需要转换成以上的两类,转换的规则不是 RLP 编码定义的,可以根据自己的规则转换,例如struct可以转换成列表,int 可以转换成二进制(属于字符串一类),以太坊中整数都以大端形式存储。
- RLP编码规则 1 -
对于单个字节,如果它的值范围是0x00,0x7f,它的 RLP 编码就是它本身。
如:a à [0x61] (字符)
100 à 0x64
- RLP编码规则 2 -
字符串长度是0-55字节,它的 RLP 编码包含一个单字节的前缀,后面跟着字符串的长度,再接着字符串本身。这个前缀的值0x80加上字符串的长度。由于被编码的字符串最大长度是55=0x37,因此单字节前缀的最大值是0x80+0x37=0xb7,即编码的第一个字节的取值范围是[0x80,0xb7]。
字符串长度小于55字节的RLP 编码例子:
“dog” à [0x83, ‘d’, ‘o’, ‘g’]
其中0x83 = 0x80 + 3(“dog”字符串的长度)
- RLP编码规则 3 -
字符串长度大于55个字节,它的 RLP 编码包含一个单字节的前缀,后面跟着字符串的长度,再接着字符串本身。这个前缀的值是0xb7加上字符串长度的二进制形式的字节长度。由于被编码的字符串长度的二进制长度最少是1个字节,最大是8个字节,前缀的取值范围是[0xb8,0xbf]。
字符串长度大于55字节的 RLP 编码例子:
字符串:
“Lorem ipsum dolor sit amet, consectetur adipisicing elit”
字符串长度:
56字节,其二进制形式为:00111000。其二进制形式的长度为8位,也就是1个字节长度。
前缀:0xb7 + 1 = 0xb8
字符串长度的16进制表示:56 à 0x38
该字符串的 RLP 编码形式为:
[0xb8, 0x38, ‘L’, ‘o’, ‘r’, ‘e’, ‘m’, ’ ', … , ‘e’, ‘l’, ‘i’, ‘t’]
相关文章:

openjudge-NOI 2.6基本算法之动态规划 专题题解目录
1、1759 最长上升子序列 2、1768 最大子矩阵 3、1775 采药 4、1808 公共子序列 5、1944 吃糖果 6、1996 登山 7、2000 最长公共子上升序列 8、2718 移动路线 9、2728 摘花生 10、2985 数字组合 11、2988 计算字符串距离 转载于:https://www.cnblogs.com/xqmmcqs/p/5979056.html…

js query复习
jquery:js框架; 主要区别在dom的操作 jq需要引入文件并且引入顺序在最上面; 找元素 操作元素 js:doucument.getElementById..classname,tagname,name jq:$(选择器) dom是js对象 jqDom是jquery对象 操作内容 js:dom.innerHTML(非表单元素) dom.value(表单元素) jq:jqDom.html(…

python 进程池 freeze_support_Python 多进程并发操作中进程池Pool的实例
在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,10几个还好&#…

区块链技术如何改变我们对DNA的看法
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 试想一下,有人得到了你的一些最私人的信息,并用它来攻击你,窃取你的身份,实施诈骗。这对于你来说特别…

input样式和修改
$(.input_class).on(focus,function(event){ if(event.keyCode 13){goSearch()}});input::-webkit-input-placeholder {color:#999; } .input_class{color:#333;border:none;vertical-align: .08rem;background: #F5F5F5;font-size:.65rem; } 转载于:https://www.cnblogs.com/…

python uwsgi_python Web开发你要理解的WSGI uwsgi详解
WSGI协议首先弄清下面几个概念:WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web server如何与web application通信…

接口设计文档_app端接口用例设计方法和测试方法(一)
前言接口测试作为测试的重要一环,重点关注的是数据层面的输入输出,今天小编介绍一种常用的接口测试用例设计方法和测试方法,希望对大家有所帮助,由于内容较多,分三次给大家讲解,今天先介绍“请求层面的用例…

一个在raw里面放着数据库文件的网上例子
https://www.cnblogs.com/yutingliuyl/p/6880103.html转载于:https://www.cnblogs.com/strongdady/p/9052046.html

as3绕过策略文件给视频截图
接上篇 http://www.cnblogs.com/DarkMaster/p/5973593.html 这篇同样是在老外博客上找到的,分享给大家,再次感叹老外牛逼啊。 原文地址:http://gamespoweredby.com/blog/2014/11/netstream-playnull-bitmapdata-workaround/ 老规矩直接上关键…

数据库和区块链的异同
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 前几日有好友询问我关于数据库和区块链的异同,我觉得这个问题非常好,今天刚好有空把当时的聊天情况回忆了一下,可…

java并发编程实战:第十六章----Java内存模型
一、什么是内存模型,为什么要使用它 如果缺少同步,那么将会有许多因素使得线程无法立即甚至永远看到一个线程的操作结果 编译器把变量保存在本地寄存器而不是内存中编译器中生成的指令顺序,可以与源代码中的顺序不同处理器采用乱序或并行的方…

子div超出父div_菜鸟学 react props 子到父
我们都知道在 vue 中可以使用事件将子组件的数据传递给父组件,也可以通过拿到父组件的实例直接调用父组件的方法先来个子组件class ChildCom extends React.Component {constructor(props) {super(props)this.state {msg: 这是子元素的数据 hello ChildCom}}sendCh…

Linux笔记:使用Vim编辑器
Vi编辑器是Unix系统上早先的编辑器,在GNU项目将Vi编辑器移植到开源世界时,他们决定对其作一些改进。 于它不再是以前Unix中的那个原始的Vi编辑器了,开发人员也就将它重命名为Vi improved,或Vim。 为了方便使用,几乎所有…

实现中心钱包系统
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 很多业务上去中心化的应用上,需要很多中心化的管理,例如交易所,每秒交易量非常大,这都是 比特币&…

南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题
问题 A: 割点与桥 时间限制: 1 Sec 内存限制: 5 MB提交: 475 解决: 34提交 状态 算法问答 题目描述 给出一个无向连通图,找到所有的割点和桥输入 第一行:点的个数,如果点个数是n,他们的编号为0 ~ n-1 余下的行:每行…

小程序生命周期_来,简单说说小程序的生命周期?
简单说说小程序的生命周期?在小程序中生命周期分为三大类应用生命周期页面生命周期组件生命周期应用生命周期onLaunch(){ console.log(onLaunch监听小程序初始化);}onShow(){ console.log(onShow监听小程序显示);}onHide() { console.log(onLaunch监听小程序隐藏);}页面生命周…

模板引擎:VelocityFreeMarker(转)
Velocity,名称字面翻译为:速度、速率、迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts(Taglib和Tiles)是如何联系?在技术上Velocity要比Struts Struts(…

去中心化的尺度
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 摘要:有些人因为其底层技术而对区块链感兴趣, 另外一些人对它的商业可能性着迷, 还有一些人关心它的社会和政治影…

在tomcat中用jndi配置数据源启动java web程序
1.在web.xml中添加: <resource-ref> <res-ref-name>jdbc/MTSDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 2.在tomcat的context.xml中配置数据源:…
centOS7.4服务器 yum安装 搭建lamp环境
// 红色加粗是linux命令安装gcc和gcc-cyum -y install gcc gcc-cyum list httpd*安装apcheyum -y install httpd.x86_64 httpd-devel.x86_64 httpd-tools.x86_64开启服务/bin/systemctl start httpd.service停止服务/bin/systemctl stop httpd.service设置Apache服务开机启动sy…

好想学python怎么猜人_学手艺我好想学个手艺哦可是脑子怎么想也想 – 手机爱问...
2009-03-25学点东西学什么好呢?我今年快40了建议:你以前一直当销售,销售这个职业最大的特点就是说、说、说,跟人打交道最多。那么:(1)如果你厌倦了跟人打交道,厌烦了每天不停跟陌生人说说说的,建…

用Python从零开始创建区块链
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 前言 如果你还没有听说过 3 点钟区块链群,说明你还不是链圈的人;如果你还没有加入 3 点钟区块链群,说明你还不是…

动态添加跨行表格_学会这2招,轻松搞定数据透视表动态更新,效率猛增一倍...
私信回复关键词【福利】,获取丰富办公资源,助你高效办公早下班!Hello,大家好,我是最近在研究数据透视表的小爽~最近,我收到了一个学员的求助:简单归纳一下,这个问题就是:…

alpha阶段个人总结(201521123031林庭亦)
一、个人总结 第一部分:硬的问题 第二部分:软的问题,在成长路上学到了什么? 1 当你看到不靠谱的设计、糟糕的代码、过时的文档和测试用例的时候,不要想 “既然别人的代码已经这样了,我的代码也可以随便一点…

python统计列表内元素个数
代码如下: list01 [a,b,c,a,c] set01 set(list01)print(set01)dict01 {}for item in set01:dict01.update({item:list01.count(item)}) print(dict01)结果: c, b, a} {c: 2, b: 1, a: 2}转载于:https://www.cnblogs.com/zhangyux/p/5999109.html

比特币的货币属性是什么?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 作为比特币被设计之初的用意就是作为交易的一种支付手段。作为全新的货币形式,比特币本身的性质就是其去中心化的特性能够和传统的货币很…

病虫害模型算法_基于深度学习的目标检测算法综述
sigai 基于深度学习的目标检测算法综述导言目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一。由于各类物体有不同的外观,形状,姿态,加上…

windows 常用命令
一. 工具类 calc 启动计算器 mspaint 画图板 write 打开写字板 notepad 打开记事本 mstsc 远程桌面连接 regedt32 注册表编辑器 osk 打开屏幕键盘 magnify 放大镜 eudcedit 造字程序二. 系统和用户类 compmgmt.msc 计算机管理 devmgmt.m…

良好的用户体验应该...
这篇文章只有一个图片,原创的,谢谢! 转载于:https://www.cnblogs.com/saper/p/9064601.html

区块链知识点简解
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。 分布式存储:是一种数据存储技术,通…