0

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?

4

1 回答 1

0

DAML 作为一种建模语言的引人注目的特性之一是它旨在帮助解决涉及授权和委托的问题。为了实现这一点,DAML 具有Party代表独立账本参与者的第一类类型,并且账本上的每个合约都必须经过一个或多个方的授权才能创建。

模板中的signatory表达式定义了谁必须授权创建该模板的合约实例。它是根据提议的合约实例中包含的数据来这样做的——这意味着任何可以看到尝试创建合约的交易的一方也有足够的数据来验证创建是否得到了适当的授权。

在 Iou 合约的情况下:

template Iou
  with
    issuer : Party
    owner : Party
    currency : Text
    amount : Decimal
    observers : [Party]
  where
    signatory issuer, owner
  ...

希望创建 Iou 的一方必须填写记录:issuerownercurrency等。然后他们必须将该记录传递给create提交给分类帐的交易中的函数。该调用create必须由issuer和授权owner,但不需要授权,observers因为它们没有被列为签字人。

请注意,同一方是合法issuerowner。事实上,这将create是合法地直接提交给分类账的唯一方式,因为个人分类账交互只能由单方授权。更大的授权集必须作为更大交易的一部分,使用账本上已经存在的其他合约的授权。

有关这方面的更多信息,尤其是关于如何进行授权委托,请参阅 DAML 文档:https ://docs.daml.com/concepts/ledger-model/ledger-structure.html

有关工作示例,请参阅:https ://docs.daml.com/daml/patterns/initaccept.html 以及 DAML 文档的“模式”部分中的其他示例。

于 2019-06-12T08:03:02.660 回答