首页 > 解决方案 > 是否有理由在 Substrate 中对特定类型使用通用特征?

问题描述

我有什么理由使用Hash抽象sr-primitives而不是使用substrate_primitives::hashandsubstrate_primitives::hashing模块?

H256只是在我的代码中包含(并使用相应的散列函数)似乎比使用Hash特征更容易。

标签: rustblockchainsubstrate

解决方案


Substrate 被构建为通用且高度可定制的。当您围绕Hashtrait 编写模块和运行时逻辑时,您将获得模块通用而Hash不是运行时中使用的特定类型的好处。

在这种情况下,您不需要依赖运行时中的特定类型,例如H256. 相反,您可以编写仅依赖于 Trait 属性的运行时逻辑。这意味着,如果在以后的某个时间点,您想要实现一个不同的散列函数,从而产生不同的Hash类型,您就不必重写任何代码。

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

这些抽象确实增加了一些复杂性,并且并不是使事情正常工作所必需的。但是,这是最佳实践,从长远来看,您可能会发现某些东西会带来红利。


推荐阅读