是否有理由在Substrate中对特定类型使用通用特征?

时间:2019-07-10 21:14:40

标签: rust blockchain substrate

我是否有理由使用Hash的{​​{1}}抽象而不是使用sr-primitivessubstrate_primitives::hash模块?

在我的代码中包括substrate_primitives::hashing(并使用相应的哈希函数)似乎比使用H256特征更容易。

1 个答案:

答案 0 :(得分:1)

基材是通用且高度可定制的。围绕Hash特性编写模块和运行时逻辑时,与运行时使用的特定类型Hash相比,模块具有通用性。

在这种情况下,您不需要依赖运行时中的特定类型,例如H256。相反,您可以编写仅依赖于Trait属性的运行时逻辑。这意味着,如果以后要实现一个不同的哈希函数(导致不同的Hash类型),则不必重写任何代码。

此外,如果您打算与他人共享您开发的模块,您将希望保持模块尽可能通用,以免迫使最终的区块链开发人员遵守您的标准。

这些抽象确实增加了一些复杂性,并且并不是使事物正常工作所必需的。但是,这是最佳做法,从长远来看,您可能会发现有好处。