Corda 真的需要公证人才能达成唯一性共识吗?

2024-04-17

科达共识简介 https://docs.corda.net/releases/release-V2.0/key-concepts-consensus.html说“唯一性共识是由公证人提供的。”

我们是说,如果没有公证人,A 有可能说服 B 将一笔交易提交到其账本,其中涉及状态 X 作为输入,并同时或稍后说服 C 提交一笔交易不同的涉及 X 的交易到其分类账?

在这种情况下,A 的账本将与 C 的账本不一致(或 B 或两者都不一致,具体取决于它选择提交的事务(如果有的话)),并且 A 将创建一种现在不一致的情况,并且永远无法在 A 之间变得一致、B 和 C。

想必 Corda 框架试图尽可能地防止这种事情发生,那么这就是诚实吗? IE。我们谈论的是 A 完全颠覆了自己的基础设施的情况,即没有按预期使用 Corda,并且存在于它向其他方发送的所有消息中?


Update:最初提出这个问题是因为我错误地认为公证人是 Corda 系统的可选元素。它们不是,但对于特定交易来说,它们的参与可能是可选的,例如不涉及输入状态(因此本质上不存在双花问题)。

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

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

因此,在上述场景中,A 可以诚实/错误地向 B 和 C 提出两笔不同的交易。B 和 C 都会就各自的交易达成有效性共识,并将其提交到自己的分类账中,而 A 仅在以下情况下面临双花问题:随后,它尝试将两笔交易中的第二笔提交到自己的分类账中。

公证人会避免这种情况(无论是否出于恶意)。


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

  • 恶意节点:节点有目的地从其保管库中提取已消耗的状态,在另一个交易中消耗它,并将交易发送给没有看到原始交易的对手方
  • 比赛条件:两个节点同时提出消耗相同状态的交易
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Corda 真的需要公证人才能达成唯一性共识吗? 的相关文章

随机推荐