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

How will the DAML Code affecting two distinct DA Nodes be deployed and how will its integrity maintained?

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

一个。假设 DAML 代码将由 CA 编写,我们是否可以说只有 CA 需要此代码及其在其节点上的构建,并且 CA 将简单地执行合约工作流,允许 P1 节点上的 Party 简单地 accept/reject 角色而无需了解CA编写的DAML代码(业务逻辑和其他合约模板)的内容?

b。是否需要将CA Node编写的DAML代码文件(.daml)传输给Participant 1(P1)节点,让P1验证同意DAML文件代码(合约模板,parties and choices)并将代码及其也将 (.dar) 构建到它的节点中?

c。如果上述问题的答案是肯定的,那么如何维护 DAML 代码的完整性,例如如果DAML代码在部署的时候被P1或者CA改了,以后可能会发生冲突怎么办?

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

这里详细描述了 DAML 中的这种模型升级过程:https://github.com/digital-asset/ex-upgrade