如何隐藏交易历史记录的全部信息,使得交易链中最后一个参与者无法查看?

4
当将交易链式传递给多个方时,我发现最终收件方可以看到整个交易历史记录。即使我使用非验证公证人,我怀疑这是因为BroadcastTransactionFlow调用CoreFlowHandlers.NotifyTransactionHandler,后者调用subFlow(ResolveTransactionsFlow())并解决链中的最后一笔交易,从而获取最终收件方的完整历史记录。这是否准确?调用ResolveTransactionsFlow以获取依赖交易作为BroadcastTransactionFlow的一部分的设计原理是什么?作为Cordapp开发人员,有没有建议保护这些信息的方法?
1个回答

5
非常好的观点:您已经强调了分布式账本(例如Corda)和分布式数据库之间的根本区别。
使用分布式数据库时,假定节点彼此信任,因此它们可以接受群集中另一个节点发送给它们的任何数据。使用分布式账本时,我们做出非常不同的假设:我们假定不同的节点由不同的方运营,并且他们可能试图欺骗对方。
因此,如果我向您发送一笔交易,声称从我转移100万美元到您在JP摩根银行的账户上,您不能简单地相信我所说的资金存在,它是我的并且现在是您的。您还需要进行验证。您需要查看证据链,该链始于Chase发行的现金,并包括每次转移,直到到达您为止。
因此,ResolveTransactionsFlow至关重要,这对系统的完整性非常重要。这就是我向您证明我所说的话毫无疑问是真实的方式。

我在这里更深入地讨论了这个问题: https://gendal.me/2016/11/08/on-distributed-databases-and-distributed-ledgers/

然而,正如你所观察到的那样,这会导致一个问题... 你可能会了解到我不想让你知道的东西!

好消息是,Corda是迄今为止在这方面最好的分布式分类账... ResolveTransactionsFlow允许您获取所需的证据链,但不会提供更多信息... 这是所需的最小集。大多数其他平台会不加区别地将数据散布到各处... 完全破坏隐私!

此外,我们还包括诸如密钥随机化之类的技术,以便您不会了解先前参与者的任何信息。

更好的是,我们最近宣布了一项突破,将Corda的隐私保护提升到一个全新的水平:支持英特尔的SGX技术。 Mike在Corda and SGX: a privacy update文章中写到了这个问题。

所以,底线是:如果你需要一个允许互不信任的各方“信任但需核实”的平台,那么分布式账本技术就是为你准备的。如果你关心隐私,那么 Corda 是迄今为止最好的平台......而且它会变得更好 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接