【发布时间】:2018-02-28 07:35:57
【问题描述】:
为什么以太坊使用 RLP 编码来序列化数据我的意思是有特定的原因不使用现有的格式?除了 RLP 非常紧凑且节省空间。
【问题讨论】:
标签: encoding blockchain ethereum smartcontracts data-serialization
为什么以太坊使用 RLP 编码来序列化数据我的意思是有特定的原因不使用现有的格式?除了 RLP 非常紧凑且节省空间。
【问题讨论】:
标签: encoding blockchain ethereum smartcontracts data-serialization
[[k1, v1], [k2, v2], ...],但是 key 的排序并不稳定,这意味着在不同的实现中使用相同的 value(Map) 会输出不同的结果。所以 RLP 保证了以太坊 tx 哈希需要的一致性。【讨论】:
RLP 是确定性方案,而其他方案 对于相同的输入可能会产生不同的结果,这绝对是 在区块链上是不可接受的。即使是很小的变化也会导致完全 不同的哈希值,会导致数据完整性问题 整个区块链都没用。
【讨论】:
RLP(Recursive Length Prefix)的目的是对二进制数据的任意嵌套数组进行编码,而RLP是以太坊中用于序列化对象的主要编码方式。看到这个RLP
RLP 只是您提到的一种选择,可能有人熟悉这种格式而其他人不熟悉,但是一旦您选择了这种技术,最好在一个项目中保持一致,以免混淆其他项目。
【讨论】: