我是否有理由使用Hash
的{{1}}抽象而不是使用sr-primitives
和substrate_primitives::hash
模块?
在我的代码中包括substrate_primitives::hashing
(并使用相应的哈希函数)似乎比使用H256
特征更容易。
答案 0 :(得分:1)
基材是通用且高度可定制的。围绕Hash
特性编写模块和运行时逻辑时,与运行时使用的特定类型Hash
相比,模块具有通用性。
在这种情况下,您不需要依赖运行时中的特定类型,例如H256
。相反,您可以编写仅依赖于Trait属性的运行时逻辑。这意味着,如果以后要实现一个不同的哈希函数(导致不同的Hash
类型),则不必重写任何代码。
此外,如果您打算与他人共享您开发的模块,您将希望保持模块尽可能通用,以免迫使最终的区块链开发人员遵守您的标准。
这些抽象确实增加了一些复杂性,并且并不是使事物正常工作所必需的。但是,这是最佳做法,从长远来看,您可能会发现有好处。