可以进行可选的交易签名吗?我知道该命令明确概述了所需签名者(必须签署交易才能进行公证的各方),但是一方可以选择签名吗?我们如何实现呢?
用例是一个反洗钱实体,它将根据交易方的信任程度进行签名。
val requiredSigners = listOf<PublicKey>()
val optionalSigners = listOf<PublicKey>()
tb.addCommand(TestContract.Commands.TestCommand(), requiredSigners, optionalSigners)
使用现有的SDK无法使用以上代码。
答案 0 :(得分:1)
如果在创建事务时知道信任级别,则在将TestCommand()
添加到事务构建器时,我们可以明确指出所需的签名者。
一旦交易被签名,它就变得不可变。这意味着我们无法添加其他必需的签名者。
要启用可选的签名者,我们将根据交易构建器(或任何其他业务逻辑)的输入和输出来调整所需签名者的内容。然后在Corda合同中-我们可以基于相同的业务逻辑来验证所需签名的数量。
简而言之:命令定义了需要签名的人,但是Corda合同的verify方法中的检查逻辑是查看包含的状态并确定命令中应包含哪些公钥的逻辑。因此,完全有可能在所需签名者周围使用条件逻辑。