在DAML合同中,signatory
关键字有什么作用?例如,在Iou合同中,signatory issuer, owner
行实际上是什么意思?
这是否意味着所有者和发行者都应该相同?
答案 0 :(得分:0)
DAML作为建模语言的引人注目的功能之一是,它旨在帮助解决涉及授权和委派的问题。为了实现此DAML具有代表独立分类帐参与者的一流类型Party
,和帐簿上的每个合同都必须由一个或多个当事方授权可以创建。
模板中的signatory
表达式定义了谁必须授权创建此模板的合同实例。这样做是根据提议的合同实例中包含的数据进行的-这意味着任何能够看到试图创建合同的交易的一方,也都具有足够的数据来验证创建是否得到了适当授权。
就Iou合同而言:
template Iou
with
issuer : Party
owner : Party
currency : Text
amount : Decimal
observers : [Party]
where
signatory issuer, owner
...
希望创建借据的一方必须填写以下记录:issuer
,owner
,currency
等。然后,他们必须将该记录传递给create
函数在提交到分类帐的交易中。对create
的调用必须得到issuer
和owner
的授权,但不需要observers
的授权,因为它们没有被列为签署人。
请注意,issuer
和owner
是同一方是合法的。实际上,这是将create
合法地直接提交到分类账的唯一方法,因为单个分类账交互只能由单方授权。更大的授权集必须作为更大事务的一部分而出现,要使用总账中已有其他合同的委托授权。
有关此问题的更多信息,尤其是有关如何进行授权委派的信息,请参阅DAML文档:https://docs.daml.com/concepts/ledger-model/ledger-structure.html
有关工作示例,请参见:https://docs.daml.com/daml/patterns/initaccept.html和DAML文档的模式部分中的其他示例。