Corda 真的需要公证人来达成唯一性共识吗?
Does Corda really require a notary to achieve uniqueness consensus?
Corda introduction to consensus 说 "uniqueness consensus is provided by notaries."
我们是说,如果没有公证人,A 有可能说服 B 将涉及状态 X 作为输入的交易提交到其账本,同时或稍后说服 C 提交一个涉及 X 的不同 笔交易?
在这种情况下,A 的分类帐将与 C 的分类帐不一致(或 B 或两者都取决于它选择提交的交易,如果有的话)并且 A 会造成现在不一致的情况并且可以永远不要在 A、B 和 C 之间变得一致。
想必Corda框架是尽量杜绝这种事情发生,难道这就是诚实吗? IE。我们在谈论 A 完全颠覆自己的基础设施的情况,即没有按预期使用 Corda,并且在它发送给其他方的所有消息中?
更新:最初提出这个问题是因为我错误地认为公证人是 Corda 系统的一个可选元素。他们不是,但对于特定交易,他们的参与可能是可选的,例如那些不涉及输入状态的(因此就其性质而言没有双花问题)。
@joel 在他的回答中明确指出的重要一点是,即使各方相互信任,双花问题也可能是一个问题,即预计不会有恶意行为。
一旦 Corda 中的一方确定已就交易达成有效性共识,它可以立即将交易提交到自己的分类账中,即它不会首先尝试与其他各方达成某种额外的拜占庭容错式共识他们可以而且肯定会把交易提交到他们各自的分类账中。
所以在上面的场景中,A 可以 honestly/mistakenly 向 B 和 C 提出两个不同的交易。B 和 C 都会就各自的交易达成有效性共识,并将它们提交到自己的分类账中,而 A 只会面对当它随后尝试将两笔交易中的第二笔交易提交到自己的账本时,会出现双花问题。
公证人会避免这种情况(无论是否出于恶意)。
您需要公证人的原因有两个:
- 恶意节点:节点故意从其保险库中提取消费状态,在另一笔交易中消费,并将交易发送给没有看到原始交易的交易对手
- 竞争条件:两个节点同时提出消耗相同状态的交易
Corda introduction to consensus 说 "uniqueness consensus is provided by notaries."
我们是说,如果没有公证人,A 有可能说服 B 将涉及状态 X 作为输入的交易提交到其账本,同时或稍后说服 C 提交一个涉及 X 的不同 笔交易?
在这种情况下,A 的分类帐将与 C 的分类帐不一致(或 B 或两者都取决于它选择提交的交易,如果有的话)并且 A 会造成现在不一致的情况并且可以永远不要在 A、B 和 C 之间变得一致。
想必Corda框架是尽量杜绝这种事情发生,难道这就是诚实吗? IE。我们在谈论 A 完全颠覆自己的基础设施的情况,即没有按预期使用 Corda,并且在它发送给其他方的所有消息中?
更新:最初提出这个问题是因为我错误地认为公证人是 Corda 系统的一个可选元素。他们不是,但对于特定交易,他们的参与可能是可选的,例如那些不涉及输入状态的(因此就其性质而言没有双花问题)。
@joel 在他的回答中明确指出的重要一点是,即使各方相互信任,双花问题也可能是一个问题,即预计不会有恶意行为。
一旦 Corda 中的一方确定已就交易达成有效性共识,它可以立即将交易提交到自己的分类账中,即它不会首先尝试与其他各方达成某种额外的拜占庭容错式共识他们可以而且肯定会把交易提交到他们各自的分类账中。
所以在上面的场景中,A 可以 honestly/mistakenly 向 B 和 C 提出两个不同的交易。B 和 C 都会就各自的交易达成有效性共识,并将它们提交到自己的分类账中,而 A 只会面对当它随后尝试将两笔交易中的第二笔交易提交到自己的账本时,会出现双花问题。
公证人会避免这种情况(无论是否出于恶意)。
您需要公证人的原因有两个:
- 恶意节点:节点故意从其保险库中提取消费状态,在另一笔交易中消费,并将交易发送给没有看到原始交易的交易对手
- 竞争条件:两个节点同时提出消耗相同状态的交易