In a DAML contract, what does the signatory
keyword do? For example, in the Iou contract, what does the line signatory issuer, owner
actually mean?
Does it mean both owner and issuer should be same?
In a DAML contract, what does the signatory
keyword do? For example, in the Iou contract, what does the line signatory issuer, owner
actually mean?
Does it mean both owner and issuer should be same?
DAML 作为一种建模语言的引人注目的特性之一是它旨在帮助解决涉及授权和委托的问题。为了实现这一点,DAML 具有Party
代表独立账本参与者的第一类类型,并且账本上的每个合约都必须经过一个或多个方的授权才能创建。
模板中的signatory
表达式定义了谁必须授权创建该模板的合约实例。它是根据提议的合约实例中包含的数据来这样做的——这意味着任何可以看到尝试创建合约的交易的一方也有足够的数据来验证创建是否得到了适当的授权。
在 Iou 合约的情况下:
template Iou
with
issuer : Party
owner : Party
currency : Text
amount : Decimal
observers : [Party]
where
signatory issuer, owner
...
希望创建 Iou 的一方必须填写记录: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 文档的“模式”部分中的其他示例。