微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Daml中将四方中的一方定义为控制方

如何解决如何在Daml中将四方中的一方定义为控制方

我有五方,即 A、B、C、D 和 E。A 方定义为签约方,其余四方为控制方,但我的要求是任何一方都可以担任控制方,但我不确切知道哪一方是控制者,我怎么能做到这一点? 我的尝试:

控制器[b,c,d,e] 可以 批准:ContractId 测试 和 ... 得到错误说需要授权人 b,e 但只给出 b

我希望四方(b、c、d、e)中的任何一方都可以选择“批准”。请帮帮我

谢谢

解决方法

controller [b,c,d,e] 要求所有四方都是控制者,而不是四方之一。为了允许后者,您可以使用名为 flexible controllers 的功能。这允许您使用范围内的选择参数定义控制器。然后您可以检查选择本身,该派对是您想要的四个之一。这是一个完整的示例,请注意我们明确地让其他方观察者,controller 语法通常会为您隐式执行此操作,但此处使用的灵活语法不会自动执行此操作。

module Main where

import Daml.Script

template T
  with
    a : Party
    b : Party
    c : Party
    d : Party
    e : Party
  where
    signatory a
    observer [b,e]
    choice Approve : ()
      with
        actor : Party
      controller actor
      do assert (actor `elem` [b,e])
         pure ()

test = script do
  a <- allocateParty "a"
  b <- allocateParty "b"
  c <- allocateParty "c"
  d <- allocateParty "d"
  e <- allocateParty "e"
  cid <- submit a $ createCmd (T a b c d e)
  submit b $ exerciseCmd cid (Approve b)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?