为什么以太坊使用 RLP 编码来序列化数据我的意思是有特定的原因不使用现有的格式?除了 RLP 非常紧凑且节省空间。
问问题
391 次
3 回答
1
- 实现简单,它建立在 ASCII 编码之上。
- 保证绝对字节完美的一致性。特别是对于 Key/Value Map 数据结构,我们可以将其表示为
[[k1, v1], [k2, v2], ...]
,但是 key 的排序并不稳定,这意味着在不同的实现中使用相同的 value(Map) 会输出不同的结果。所以 RLP 保证了以太坊 tx 哈希需要的一致性。
于 2021-07-28T02:53:56.630 回答
1
RLP 是一种确定性方案,而其他方案可能对相同的输入产生不同的结果,这在区块链上是绝对不能接受的。即使是很小的变化也会导致完全不同的哈希值,并导致数据完整性问题,从而使整个区块链变得无用。
于 2021-10-16T02:47:13.837 回答
0
RLP(Recursive Length Prefix)的目的是对任意嵌套的二进制数据数组进行编码,而RLP是以太坊中用于序列化对象的主要编码方式。看到这个RLP
RLP 只是您提到的一种选择,有人可能熟悉这种格式而其他人不熟悉,但是一旦您选择了这种技术,最好在一个项目中保持一致,以免混淆其他项目。
于 2018-10-14T04:07:21.193 回答