R3 Corda与多个参与者共享交易

时间:2017-11-24 08:45:58

标签: corda

如何在网络中的多个参与者之间共享交易?例如A,B,C和D.我们希望将交易分享给所有参与者,其中A和D没有进一步编辑交易的选项。

1 个答案:

答案 0 :(得分:2)

你可以做两件事:

  1. 您可以编写状态对象,使A,B,C和D都列为参与者。但是,应该编写此状态对象的合同代码,使其仅允许B和C更新状态对象。一个例子可能是B和C之间的双边协议,但A和D也被列为参与者,因为他们是应该看到整个交易的监管机构。如果你采用这种方法,重要的是构造事务使得只有A和D的公钥在命令中列出,你在该状态的其他一些字段中硬编码A和D,这样你就可以在里面执行验证合同沙箱。
  2. 示例:

    data class Example(
        val A: AbstractParty,
        val D: AbstractParty,
        override val participants: List<AbstractParty>,
        override val linearId: UniqueIdentifier = UniqueIdentifier()
    ) : LinearState {
        constructor (
            A: AbstractParty, 
            B: AbstractParty, 
            C: AbstractParty, 
            D: AbstractParty
        ) : this(A, D, listOf(A, B, C ,D))
    }
    
    1. 您可以在Corda V2中使用新的可观察状态功能,该功能允许任意数量的节点观察事务的输出状态。请在此处查看示例:https://github.com/roger3cev/observable-states。在此示例中,我创建了一个群众资助活动,其中只有活动经理是参与者。但是,交易会在同一商业网络上向所有其他方广播(因此他们可以看到广告系列)。
    2. 选项二可能是更好的选择。干杯!