为什么在使用 decl_storage 时在 StorageMap 中使用 blake2_256 以外的哈希算法

Why use a hashing algorithm other than blake2_256 in a StorageMap when using decl_storage

它说 decl_storage! 是一个 "procedural macro" 用于存储数据以使其在后续块中可用。

它说如果用户能够设置密钥对,那么我们就不能信任密钥对,所以我们必须使用密码哈希器,例如blake2_256来防止"other values in storage being compromised"。

为什么要在 StorageMap (i.e. why would anyone use twox 中使用默认 blake2_256 以外的哈希算法 ($hash) 而不是默认 blake2_256)?

还有,为什么说只是为了防止"other values in storage being compromised"? blake2_256不也是用来防止密钥对本身被泄露的吗?

blake2_256 哈希器是一种不透明的加密哈希器,它有两个 costs/has 两个缺点:

  • 计算量大
  • 不允许遍历存储

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

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

在更新后的 documentation for decl_storage

中查找更多信息