首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么选择RLP作为底层协议编码算法?

为什么选择RLP作为底层协议编码算法?
EN

Ethereum用户
提问于 2017-06-29 19:42:31
回答 1查看 3.8K关注 0票数 16

这是临时决定吗?为什么是RLP?它特别适合什么东西吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2017-06-29 20:21:27

选择RLP是因为(1)实现简单,(2)保证绝对字节完美一致性。

源是以太:

RLP是一种高度简约的序列化格式;它唯一的目的是存储嵌套的字节数组。与protobuf、BSON和其他现有解决方案不同,RLP不试图定义任何特定的数据类型,例如布尔值、浮点数、双值甚至整数;相反,它只是以嵌套数组的形式存储结构,并由协议来确定数组的含义。键/值映射也没有得到明确的支持;支持键/值映射的半官方建议是表示[K1,v1,K2,v2,.]等映射。k1,k2..。使用字符串的标准排序进行排序。RLP的替代方法可能是使用现有的算法,如protobuf或BSON;但是,我们更喜欢RLP,因为(1)实现简单,(2)保证绝对字节完美一致性。许多语言中的键/值映射没有明确的排序,浮点格式有许多特殊情况,可能导致相同的数据导致不同的编码,从而导致不同的散列。通过在内部开发一个协议,我们可以确信它的设计考虑到了这些目标(这是一个普遍的原则,也适用于代码的其他部分,例如。( VM)。请注意,BitTorrent使用的bencode可能为RLP提供了一个可通过的替代方案,尽管它对长度的十进制编码的使用使其比二进制RLP略差。

票数 15
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/19092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档