2

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

它说如果用户能够设置密钥对,那么我们就不能信任密钥对,因此我们必须使用诸如 blake2_256 之类的加密哈希来防止“存储中的其他值受到损害”。

为什么要使用除 a 中的默认值以外的散列算法 ( ) $hash(即为什么有人会使用而不是默认值)?blake2_256StorageMaptwoxblake2_256

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

4

1 回答 1

5

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

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

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

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

在更新的文档中查找更多信息decl_storage

于 2020-08-19T10:15:11.363 回答