【问题标题】:R3 Corda: How is the validity of a transaction input checked with non-validating notaries without revealing the history of the transaction?R3 Corda:如何在不透露交易历史的情况下通过非验证公证人检查交易输入的有效性?
【发布时间】:2019-09-23 23:39:51
【问题描述】:

我想将 Corda 包含在我的一个项目中,以管理大量参与者之间的多项资产。在我的用例中,对资产历史保密是一项关键要求。

Corda 文档提供了一个很好的概述,但我仍然不明白如何在不向参与交易的另一方显示资产历史的情况下与非验证公证人达成共识。

示例: 假设 Alice 从 Charlie 那里收到了 10 美元的交易 A,现在想在交易 B 中给 Bob 20 美元。非验证公证人记录了交易 A,但不知道交易的价值是 10 美元(如果我理解正确的话,https://docs.corda.net/key-concepts-notaries.html)。现在 Alice 在交易 B 中使用交易 A,公证人可以验证它之前没有被使用过。但是是什么阻止爱丽丝告诉鲍勃她在交易 A 中从查理那里收到了 20 美元? Bob 必须查看交易链来验证 Alice 是否真的可以花费 20 美元。因此,Bob 会知道现金的历史。

我想知道我是否误解了文档,或者这确实是一个问题。

谢谢!

【问题讨论】:

    标签: transactions corda consensus


    【解决方案1】:

    Corda 中的共识发生在两个层面:

    • 有效性共识
    • 唯一性共识

    https://docs.corda.net/key-concepts-consensus.html

    有效性共识涉及交易各方运行合同,并以签名的形式提供交易结果的协议。

    唯一性共识,另一方面,由公证人负责,检查双重支出。

    因此,在您的示例中,公证人只会检查涉及 Alice 向 Bob 支付 20 美元的交易中使用的输入,公证人(非验证)无法检查共识的有效性部分,它只检查输入是否使用在交易中是否已经花费。

    有效性部分,即 20 美元付款实际有效的地方,必须由双方在合同级别进行检查。他们需要检查输入状态的现金数量是否应该等于交易的输出状态的现金数量。

    然而,这将要求 Bob 验证整个交易链,Corda 中的任何交易也是如此,这是必需的,因为 Bob 不知道有问题的状态,因为他过去从未必须声明来验证它确实有效。

    这可能是隐私泄露,因此查理可以使用机密身份进行交易,这将在交易链中隐藏他的身份,因此鲍勃只会知道爱丽丝从匿名实体收到 10 美元的交易,而查理的身份不会被泄露。

    在 Corda 的未来版本中,节点可能只会交换 SGX 加密形式的交易链。然后,这些交易链将在节点上的 SGX enclave 内进行验证。这将阻止节点查看他们正在验证的交易的内容(请参阅此处的博文:https://www.corda.net/2017/06/corda-sgx-privacy-update/)。这甚至可能只允许节点查看他们正在签署的交易的某些部分。

    希望这能回答你的问题。

    【讨论】:

    猜你喜欢
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多