指定来自另一个合同的签署人



在Daml中,我设置了一个Agent合同。这是它的downAgent.daml文件。然后我有一个提案合同(Proposal.daml),其中我导入了Agent模块。我想指定agentname是提案合同的签署人,但是编译器告诉我不存在这样的一方。

在我的Proposal合同中没有当事人,这就是为什么我从另一个合同中选择了一方。我不知道怎么解决这个问题?

这是代理合同

module Agent where

-- MAIN_TEMPLATE_BEGIN
template Agent with
agentname: Party
guarantors: [Party]
where
signatory agentname
observer guarantors

这是Proposal合同

module Proposal where
import Agent
-- MAIN_TEMPLATE_BEGIN
template Proposal with
projectdescription: Text
unitsrequired: Int
marketingcost: Int
distributioncost: Int
additionalcost: Int
where
signatory agentname
observer guarantors
-- MAIN_TEMPLATE_END
key agentname: Party   
maintainer key

需要从合同参数中计算合同的签署人。你不能引用ContractId的另一个合同并从那里获得它们。原因是另一份合同可能被存档,在这种情况下,你突然有了一份无法读取签名人的合同。

所以你的Proposal必须包含提出建议的代理:

template Proposal with
agent : Party
projectdescription: Text
unitsrequired: Int
marketingcost: Int
distributioncost: Int
additionalcost: Int
where
signatory agent
...

作为一个小题外话:Party通常不是一个人类可读的字符串,所以最好不要将它们用作"名称"。如果您想要一个人类可读的名称,请将name : Text字段添加到Agent

现在你可能想知道:我如何强制每个Proposal都存在一个Agent的约束?在Daml论坛上有一个关于这个话题的长而翔实的帖子。

相关内容

  • 没有找到相关文章

最新更新