rust - 是否有理由在 Substrate 中对特定类型使用通用特征?
问题描述
我有什么理由使用Hash
抽象sr-primitives
而不是使用substrate_primitives::hash
andsubstrate_primitives::hashing
模块?
H256
只是在我的代码中包含(并使用相应的散列函数)似乎比使用Hash
特征更容易。
解决方案
Substrate 被构建为通用且高度可定制的。当您围绕Hash
trait 编写模块和运行时逻辑时,您将获得模块通用而Hash
不是运行时中使用的特定类型的好处。
在这种情况下,您不需要依赖运行时中的特定类型,例如H256
. 相反,您可以编写仅依赖于 Trait 属性的运行时逻辑。这意味着,如果在以后的某个时间点,您想要实现一个不同的散列函数,从而产生不同的Hash
类型,您就不必重写任何代码。
此外,如果您计划与他人共享您开发的模块,您将希望使您的模块尽可能通用,以免最终区块链开发人员遵守您的标准。
这些抽象确实增加了一些复杂性,并且并不是使事情正常工作所必需的。但是,这是最佳实践,从长远来看,您可能会发现某些东西会带来红利。
推荐阅读
- azure - 将 azure 虚拟机操作系统从 windows 更改为 ubuntu。我如何更改操作系统?
- google-apps-script - 谷歌表格应用脚本设置公式/值 onEdit
- reactjs - Relay/Apollo 碎片应该有多细?
- php - 更改金额的值
- neo4j - 如何规范化 PageRank 分数
- java - 在 EC2 上公开 Spring Boot 应用程序
- c# - 如何使 readfield 读取下一个字段
- c++ - 使用仅使用一次的变量调用的复制构造函数。这可能是通过调用移动构造函数来进行编译器优化的情况吗?
- python - Python - Pandas(在中间插入新行但不覆盖现有行)
- ios - 我可以在 Swift (4) 的视图控制器中获得隐式解包选项的编译时检查吗?