distributed-computing - 拜占庭将军

标签 distributed-computing distributed-transactions

所以我正在阅读 Lamport 关于拜占庭将军的论文,其中他证明了对于 T 个恶意将军,你需要 2T+1 个将军在一个组中才能阅读共识。但是我不明白怎么做。如果有T个恶意节点编造东西,你只需要T+1票就可以击败他们。为什么事实并非如此?

最佳答案

a section on Wikipedia about this :

One solution considers scenarios in which messages may be forged, but which will be Byzantine-fault-tolerant as long as the number of traitorous generals does not equal or exceed one third. The impossibility of dealing with one-third or more traitors ultimately reduces to proving that the 1 Commander + 2 Lieutenants problem cannot be solved, if the Commander is traitorous. The reason is, if we have three commanders, A, B, and C, and A is the traitor: when A tells B to attack and C to retreat, and B and C send messages to each other, forwarding A's message, neither B nor C can figure out who is the traitor, since it isn't necessarily A – the other commander could have forged the message purportedly from A. It can be shown that if n is the number of generals in total, and t is the number of traitors in that n, then there are solutions to the problem only when n is greater than or equal to 3t + 1

关于distributed-computing - 拜占庭将军,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13068223/

相关文章:

database-design - 如何学习设计高度事务性的系统?

nosql - 关于分布式计算的阅读内容

messaging - Lamport 时钟和状态机

java - 计算每个重叠间隔数的最佳 MapReduce 算法

computer-science - 分布式系统中的逻辑顺序和全序示例

spring-boot - 如何在两个微服务之间进行两阶段提交( Spring 启动)?

ado.net - 为什么 Azure 数据库在事务方面表现更好

microservices - 对微服务的 XA 支持

algorithm - 为什么或者为什么不在 Raft 实现中使用 RequestVote RPC 作为心跳?

java - 分布式作业调度、管理和报告