12个版本
0.0.13 | 2022年7月10日 |
---|---|
0.0.12 | 2022年7月1日 |
0.0.11 | 2022年6月29日 |
0.0.7 | 2022年5月25日 |
0.0.4 | 2022年4月29日 |
#28 in #integrity
74 每月下载
375KB
7.5K SLoC
霍兰链确定性完整性
lib.rs
:
霍兰链确定性完整性(HDI)是霍兰链的数据模型和完整性工具集,用于编写zomes。
霍兰链DNA的逻辑可以分为两部分:完整性和协调。完整性是hApp中定义数据类型并验证数据操作的部分。协调包括领域逻辑并实现操作数据的函数。
示例
可以在霍兰链仓库的wasm工作空间中找到具有数据定义和数据验证的完整性zome示例:https://github.com/holochain/holochain/blob/develop/crates/test_utils/wasm/wasm_workspace/integrity_zome/src/lib.rs。
数据定义
DNA的数据模型定义在完整性zome中。它们包含所有数据类型定义以及这些类型之间的关系。完整性zome仅包含定义,不包含操作数据的函数。因此,hApp的数据模型是封装的,并且完全独立于编码在协调器zome中的领域逻辑。
可以将MVC(模型、视图、控制器)设计模式用作类比。应用程序的完整性zome包含其模型层——定义数据形状的一切。在实践中,这意味着三件事
- 条目类型定义
- 链接类型定义
- 一个验证回调,它限制了可以合法调用这些类型条目和链接的数据种类(也请参阅
validate
)。
协调器zome包含应用程序的控制器层——实际写入和检索数据的代码、处理会话签名、在节点之间或细胞与其UI之间发送和接收消息。换句话说,所有zome函数、init
函数、远程信号接收器和调度器回调都将位于协调器zome中。
这种方法的优点是
- 只要完整性zome保持不变,DNA哈希值就是恒定的。DNA的节点网络与其哈希值相关联。DNA哈希值的变更将导致新的节点网络。然而,协调器zome中封装的域逻辑的变更不会影响DNA哈希值。因此,DNAs和hApps可以在不创建每个部署的新节点网络的情况下进行修改。
- 完整性zome可以在DNAs之间共享。任何协调器zome都可以导入完整性zome的数据类型并实现数据操作的功能。完整性zome和协调器zome的可组合性允许使用共享的完整性zome进行多种排列,即共享数据模型。
数据验证
完整性zome的第二部分是数据验证。对于可以在数据上执行的所有操作,可以指定一个验证规则。可以验证数据类型和数据值。所有这些验证规则都写入一个中央回调,由Holochain引擎为每个操作调用。
依赖关系
~4–15MB
~178K SLoC