【问题标题】:Why use a hashing algorithm other than blake2_256 in a StorageMap when using decl_storage为什么在使用 decl_storage 时在 StorageMap 中使用 blake2_256 以外的散列算法
【发布时间】:2019-05-21 10:58:49
【问题描述】:

它说decl_storage! 是一个“过程宏”,用于存储数据以使其在后续块中可用。

它说如果用户能够设置密钥对,那么我们就不能信任密钥对,因此我们必须使用加密散列器(例如 blake2_256)来防止“存储中的其他值被泄露”。

您为什么要在StorageMap 中使用除默认blake2_256 之外的散列算法($hash)(即为什么有人会使用twox 而不是默认blake2_256)?

另外,为什么说它只是为了防止“存储中的其他值受到损害”? blake2_256不是也用来防止密钥对本身被泄露吗?

【问题讨论】:

    标签: hash rust substrate


    【解决方案1】:

    blake2_256 哈希器是一种不透明的加密哈希器,它会产生两个成本/有两个缺点:

    • 计算成本高
    • 不允许遍历存储

    因此,在您关心它们的情况下,有一些替代哈希器可以改进这些:

    • twox 哈希器的计算成本很低,因此如果区块链控制StorageMap 的输入,您可以使用它,例如使用计数器对其进行索引时。
    • blake2_128_concat 散列器将散列器的输入连接到散列的末尾,以允许迭代映射的键(和值)。

    在更新后的documentation for decl_storage中查找更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 2021-06-27
      • 2010-09-11
      • 2011-07-04
      • 1970-01-01
      相关资源
      最近更新 更多