这是临时决定吗?为什么是RLP?它特别适合什么东西吗?
发布于 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略差。
https://ethereum.stackexchange.com/questions/19092
复制相似问题