Corda真的需要公证人来达成独特的共识吗?

时间:2018-03-13 15:29:02

标签: corda consensus

Corda introduction to consensus表示"唯一性共识由公证人提供。"

我们是否说过没有公证人说A有可能说服B将事务提交到涉及状态X作为输入的分类账,同时或稍后说服C提交 X涉及其分类帐的不同事务?

在这种情况下,A的分类帐将与C(或B或两者的分类帐)不一致,具体取决于它选择提交的事务(如果有的话),并且A会创建一个现在不一致的情况,并且永远不会成为A,B和C之间保持一致。

据推测,Corda框架试图尽可能地防止这种事情,所有这些都是关于诚实的吗?即我们在谈论A完全颠覆自己的基础设施,即没有按照预期使用Corda,并且在其发送给其他各方的所有消息中的情况?

更新:这个问题最初被问到,因为我错误地认为公证人是Corda系统的可选元素。它们不是,但它们的参与对于特定交易可能是可选的,例如那些不涉及输入状态的(因此本质上没有双重支出问题)。

@joel在答案中明确指出的重要一点是,即使所有各方都相互信任,双重花费问题也可能成为一个问题,即不会出现恶意行为。

一旦Corda的一方确定已达成交易的有效性共识,它就可以立即将交易提交给自己的分类账,即它不会首先尝试与其他方达成某种额外的BFT风格共识。能够并且肯定会将交易提交给各自的分类账。

所以在上面的场景中,A可以诚实地/错误地向B和C提出两个不同的交易.B和C都会就各自的交易达成有效共识并将它们交给他们自己的分类账,A只面对双重交易。在事后尝试将两个交易中的第二个交易到其自己的分类账时花费问题。

公证人避免了这种情况(无论是否是恶意的结果)。

1 个答案:

答案 0 :(得分:5)

您需要公证人有两个原因:

  • 恶意节点:节点有目的地从其保管库中提取消费状态,在另一个交易中使用该消息,并将交易发送给未看到原始交易的交易对手
  • 竞争条件:两个节点同时建议使用相同状态的交易