【问题标题】:Why does ethereum uses RLP encoding为什么以太坊使用 RLP 编码
【发布时间】:2018-02-28 07:35:57
【问题描述】:

为什么以太坊使用 RLP 编码来序列化数据我的意思是有特定的原因不使用现有的格式?除了 RLP 非常紧凑且节省空间。

【问题讨论】:

    标签: encoding blockchain ethereum smartcontracts data-serialization


    【解决方案1】:
    1. 实现简单,基于 ASCII 编码。
    2. 保证绝对字节完美的一致性。尤其是 Key/Value Map 数据结构,我们可以将其表示为[[k1, v1], [k2, v2], ...],但是 key 的排序并不稳定,这意味着在不同的实现中使用相同的 value(Map) 会输出不同的结果。所以 RLP 保证了以太坊 tx 哈希需要的一致性。

    【讨论】:

    • 还有计算效率,因为 EVM 是一个非常受限制的环境,有气体限制。
    【解决方案2】:

    RLP 是确定性方案,而其他方案 对于相同的输入可能会产生不同的结果,这绝对是 在区块链上是不可接受的。即使是很小的变化也会导致完全 不同的哈希值,会导致数据完整性问题 整个区块链都没用。

    【讨论】:

      【解决方案3】:

      RLP(Recursive Length Prefix)的目的是对二进制数据的任意嵌套数组进行编码,而RLP是以太坊中用于序列化对象的主要编码方式。看到这个RLP

      RLP 只是您提到的一种选择,可能有人熟悉这种格式而其他人不熟悉,但是一旦您选择了这种技术,最好在一个项目中保持一致,以免混淆其他项目。

      【讨论】:

        猜你喜欢
        • 2018-12-26
        • 2021-05-27
        • 1970-01-01
        • 1970-01-01
        • 2021-05-06
        • 2019-06-14
        • 2016-02-28
        • 2018-05-27
        • 2018-12-09
        相关资源
        最近更新 更多