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

Geo*_*ins 2 consensus corda

Corda 对共识的介绍说"公证人提供了唯一性共识".

我们是否说过没有公证人说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只会面临双重支出问题.之后它尝试将两笔交易中的第二笔交易提交给自己的分类账.

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

Joe*_*oel 5

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

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