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

Download history 76/week @ 2024-03-31 3/week @ 2024-04-07

74 每月下载

Apache-2.0

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