【问题标题】:Transaction between 3 participants with Corda3 个参与者与 Corda 之间的交易
【发布时间】:2018-08-01 21:33:09
【问题描述】:

您有任何示例如何在参与者 A、B、C 之间执行多个交易吗?我可以在两方 A 和 B 之间轻松完成。在 Corda 官方论坛上找到相同的讨论但没有结果 Sharing transaction among multiple nodes 可能吗?你有什么例子吗?

【问题讨论】:

标签: corda


【解决方案1】:

如果您要发布一个新状态,您可以简单地更改该状态的参与者,以确保所有各方都收到新状态。这是我使用 KYC 数据创建的示例。这个例子是更新一个状态(不是发布一个新状态),但同样的原则也适用——只需改变参与者列表来控制谁将看到那个状态。 KYC 状态如下:

@CordaSerializable
data class State(val firstName: String, val lastName: String, val accountNum: String, val owner: AbstractParty,
                 override val linearId: UniqueIdentifier = UniqueIdentifier(), val banksInvolved: List<AbstractParty> = emptyList()) : QueryableState, ContractState, LinearState {

    //Each time a TD is issued with this KYC data, the bank it is issued to is added to this banks involved list, meaning the data is now stored in that banks vault
    override val participants: List<AbstractParty> get() = banksInvolved.plus(owner)

此参与者变量是将在其保管库中存储此状态的所有节点的列表(即将收到有关状态创建、更新等的通知)。您还可以在此处添加新节点,以便他们能够查看其保管库中的状态。

然后在流程中,为了通知新银行他们已收到 KYC 数据,我们只需将状态添加为输出,并将新银行添加到银行参与列表中。这将使这家新银行成为具有此状态的参与者:

 builder.addOutputState(KYCData.first().state.copy(data = KYCData.first().state.data.copy(
                banksInvolved = KYCData.first().state.data.banksInvolved.plus(issuingInstitue)))) //Same state but with a new bank involved - i.e able to view this KYC data

【讨论】:

    【解决方案2】:

    检查您的状态,您可以在此处提及交易参与者列表。

    【讨论】:

    • 就我而言,我创建了一个新状态。接下来,我必须将 3 个节点之间的这个 NEW 状态共享到一个事务中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2017-04-16
    • 1970-01-01
    相关资源
    最近更新 更多