在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论坛上有一个关于这个话题的长而翔实的帖子。