我正在寻找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代码,该怎么办,以后可能会引起冲突?
答案 0 :(得分:1)
必须将dar
文件形式的合同模型提供给所有参与以该dar
文件建模的工作流的节点。
dar
文件可以包含多个DAML“程序包”,并且每个程序包都由其名称和哈希标识。
在分类帐上,合同类型(称为template
)是完全合格的,包括程序包哈希。如果更改模板,则包哈希会更改,因此分类帐将新模板视为与旧模板完全不同。
要更改现有合同模型,您必须使用DAML工作流程升级现有合同。当然,现有合同的所有签署方都需要同意升级工作流程。您只能单方面升级您完全控制的数据。在加密货币世界中,您可以将所有矿工视为签字人。他们要么都同意升级,要么是硬分叉,导致使用相同货币的两种型号略有不同。
此处详细描述了DAML中的这种模型升级过程:https://github.com/digital-asset/ex-upgrade