【问题标题】:How to implement an atomic commit of a multi-party transaction如何实现多方事务的原子提交
【发布时间】:2019-05-14 00:54:58
【问题描述】:

在同一交易的交易对手之间部分隐藏/屏蔽数据的最佳方法是什么?例如。爱丽丝想给鲍勃 5 美元,给查理 3 美元。这必须是一个单一的原子交易,但她不希望 Bob 和 Charlie 知道 对方是谁,也不希望 承诺什么。

我的理解是,我会以公共数据作为附件形成交易,然后将交易的各个部分作为相应交易对手的单独输出,然后......?

从阅读文档看来,FilteredTransaction 似乎是这样做的方法,但我看不出如何将签名整理回要提交给 FinalityFlow 的事务中。

【问题讨论】:

  • 使用过滤交易的问题是任何一方都不想签署它,因为他们不知道隐藏了什么。例如,您可以过滤掉显示所有现金都转移给您的状态。所以他们不能盲人签到。如果 tx 元数据可以以某种方式提供保证(例如,过滤掉的状态不属于您),这可能有效,但尚未实现。
  • @joel 感谢您的回答!我了解这种方法的信任问题,所以我的问题更多是在技术实施层面上。从您对stackoverflow.com/questions/48529134/… 的回答中使用 AnonymousParty 有帮助吗?
  • AnonymousParty 会隐藏参与者的身份,但不会隐藏交易的内容(例如,两笔现金被转移的事实)。
  • 那么 AnonymousParty 隐私保护与 FilteredTransaction 保护隐私相结合?
  • 但正如我上面提到的,我认为过滤交易不起作用,因为你怎么知道你部分签署的交易不涉及从你那里转移 100,000 美元给交易对手?跨度>

标签: corda


【解决方案1】:

乔尔提出了一个非常有效的观点。使用过滤后的交易隐藏部分交易会让您有可能签署您不打算签署的状态的所有权。

我还没有完全考虑清楚这一点,但您可以研究使用两个不同的密钥加密每个状态中传输的值并将这些密钥分别发送给 Bob 和 Charlie 的含义(和潜在的好处)。

您的合约代码必须允许 Bob 和 Charlie 将加密的值状态交换回正常状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2011-08-25
    • 2018-03-12
    • 2018-06-18
    • 1970-01-01
    相关资源
    最近更新 更多