如何部署影响两个不同 DA 节点的 DAML 代码,以及如何维护其完整性?



我正在寻找DA关于在生产级解决方案中编写和部署DAML代码和对象(.daml和.dar)的建议/最佳实践。 让我们举一个场景 - 中央机构 (CA) 操作节点可以通过编写简单的 DAML 代码根据合同向参与者 1 (P1) 颁发新角色,以下是与 DAML 部署相关的几个问题 –

一个。 假设 DAML 代码将由 CA 编写,我们是否可以说只有 CA 需要在其节点上拥有此代码及其构建,并且 CA 将简单地执行合同工作流,允许 P1 节点上的一方简单地接受/拒绝角色,而不必知道 DAML 代码的内容(业务逻辑和其他合同模板)由 CA 编写?

二. CA 节点编写的 DAML 代码文件 (.daml) 是否需要传输到参与者 1 (P1) 节点,以便 P1 可以验证并同意 DAML 文件代码(合同模板、参与方和选择),并将代码及其构建 (.dar) 也放入其节点中?

三. 如果上述问题的答案是肯定的,那么如何维护 DAML 代码的完整性,例如,如果在部署时 P1 或 CA 更改了 DAML 代码,这可能会在以后引起冲突怎么办?

必须将dar文件形式的协定模型提供给参与在该dar文件中建模的工作流的所有节点。 一个dar文件可以包含多个 DAML"包",每个包都由其名称和哈希标识。 在账本上,合约类型(称为template)是完全限定的,包括包哈希。如果您更改模板,包哈希会发生变化,因此账本认为新模板与旧模板完全不同。 若要更改现有合同模型,必须使用 DAML 工作流升级现有合同。当然,现有合同的所有签署方都需要同意升级工作流程。您只能单方面升级您完全控制的数据。在加密货币世界中,您可以将所有矿工视为签名者。他们要么都同意升级,要么硬分叉,导致同一货币的两种略有不同的模型。

DAML 中的这种模型升级过程在此处进行了详细说明:https://github.com/digital-asset/ex-upgrade

最新更新