Hash 在使用decl_存储时,为什么在StorageMap中使用blake2_256以外的散列算法

Hash 在使用decl_存储时,为什么在StorageMap中使用blake2_256以外的散列算法,hash,rust,substrate,Hash,Rust,Substrate,它说是一个“程序宏”,用于存储数据,使其在后续块中可用 它说,如果用户能够设置密钥对,那么我们就不能信任密钥对,因此我们必须使用加密哈希器(如blake2_256)来防止“存储中的其他值受到损害” 为什么在a中使用除默认的blake2_256之外的散列算法($hash)(即,为什么有人会使用而不是默认的blake2_256) 另外,为什么它说这只是为了防止“存储中的其他值受到损害”?blake2_256是否也用于防止密钥对本身被泄露?blake2_256散列器是一种不透明的加密散列器,会产生两种

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

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

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


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

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

  • 计算上昂贵
  • 不允许通过存储进行迭代
因此,对于您关心的情况,有一些替代哈希器可以对这些哈希器进行改进:

  • twox
    散列器的计算成本很低,因此如果区块链控制
    StorageMap
    的输入,例如使用计数器索引时,您可以使用它
  • blake2_128_concat
    散列程序将散列程序的输入连接到散列的末尾,以允许对映射的键(和值)进行迭代
在更新的文档中查找更多信息