在 Corda 中,我可以包括一个派对作为可选签名者吗?

In Corda, am I able to include a party as an optional signer?

是否可以进行可选的交易签名?我知道该命令明确概述了 required 签名者(必须签署交易才能对其进行公证的各方),但是一方可以选择签名吗?我们如何实施?

用例是一个反洗钱实体,它将根据交易方的信任程度进行签名。

val requiredSigners = listOf<PublicKey>()
val optionalSigners = listOf<PublicKey>()

tb.addCommand(TestContract.Commands.TestCommand(), requiredSigners, optionalSigners)

以上代码无法使用现有的 SDK。

如果在创建交易时已知信任级别,我们可以在将 TestCommand() 添加到交易构建器时明确指出所需的签名者。

一旦交易被签署,它就变得不可变了。这意味着我们无法添加额外的必需签名者。

为了启用可选签名者,我们将根据交易构建器(或任何其他业务逻辑)的输入和输出来调整所需签名者的内容。然后在 Corda 合约中——我们可以根据相同的业务逻辑验证所需签名的数量。

简而言之:命令定义了谁需要签名,但是 Corda 合约中验证方法中的检查逻辑是查看包含的状态并决定哪些 public 键应该在命令中。因此,完全有可能围绕所需的签名者设置条件逻辑。