区块链与分布式系统一致性解决方案
分布式系统中的节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。基于消息传递通信模型的分布式系统,不可避免的会发生以下错误:进程可能会慢、被杀死或者重启,消息可能会延迟、丢失、重复。分布式系统面临的这个问题就是拜占庭将军问题,对于拜占庭将军问题,不同系统给出了不同的解决方案。拜占庭将军问题提现在区块链系统中就是:对于一笔合规交易如何让大家能够达成一确认;在其他分布式系统中是如何保证数据一致性。
拜占庭将军问题
拜占庭将军问题最早由图灵奖得主 Leslie Lamport 老爷子于 1982 年提出:一组拜占庭将军分别各率领一支军队共同围困一座城市。为了简化问题,将各支军队的行动策略限定为进攻或撤离两种。因为部分军队进攻部分军队撤离可能会造成灾难性后果,因此各位将军必须通过投票来达成一致策略,即所有军队一起进攻或所有军队一起撤离。因为各位将军分处城市不同方向,他们只能通过信使互相联系。在投票过程中每位将军都将自己投票给进攻还是撤退的信息通过信使分别通知其他所有将军,这样一来每位将军根据自己的投票和其他所有将军送来的信息就可以知道共同的投票结果而决定行动策略。
系统的问题在于,可能将军中出现叛徒,他们不仅可能向较为糟糕的策略投票,还可能选择性地发送投票信息。假设有9位将军投票,其中1名叛徒。8名忠诚的将军中出现了4人投进攻,4人投撤离的情况。这时候叛徒可能故意给4名投进攻的将领送信表示投票进攻,而给4名投撤离的将领送信表示投撤离。这样一来在4名投进攻的将领看来,投票结果是5人投进攻,从而发起进攻;而在4名投撤离的将军看来则是5人投撤离。这样各支军队的一致协同就遭到了破坏。
映射到计算机领域:
- 在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。
现实映射案例:
- 区块链系统:合规交易如何达成全网确认 <

本文探讨了分布式系统中的一致性问题,重点关注拜占庭将军问题及其在区块链系统中的体现。介绍了共识算法的重要性,如PoW、PoS等,并提及Paxos和Raft算法在解决一致性问题上的角色。

365

被折叠的 条评论
为什么被折叠?



