Corda - 具有不同参与者集的多状态交易

Corda - multi-state transactions with different participant sets

我有一个场景,我想向网络发布多个状态,但这些状态有不同的参与者

例子

val state1 = ExampleState(ALICE, BOB)
val state2 = ExampleState(BOB, CHARLIE)

val command = Command(ExampleCommand.Issue(), ...participants?)

val transaction = TransactionBuilder(NOTARY)
    .addOutputState(state1, EXAMPLE_CONTRACT_ID)
    .addOutputState(state2, EXAMPLE_CONTRACT_ID)
    .addCommand(command)

观察结果 第一个状态需要ALICE和BOB签名,但是第二个状态需要BOB和CHARLIE签名

是否可以进行这种交易;即单笔交易有多个状态,每个状态可能有不同的参与者?

是的,您不需要做任何特别的事情。

  • 命令指定谁需要签名的公钥。
  • 各州参与者指定各州的分发列表。

Commands中列出的PublicKeys通常是交易状态参与者列表中PublicKeys的子集。

请记住,交易的分发列表将是每个州所有参与者的集合。