如何部署影响两个不同DA节点的DAML代码,如何保持其完整性?

时间:2019-04-16 19:01:43

标签: daml

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

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

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

c。如果上述问题的答案是肯定的,那么如何保持DAML代码的完整性,例如如果在部署时通过P1或CA更改了DAML代码,该怎么办,以后可能会引起冲突?

1 个答案:

答案 0 :(得分:1)

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

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