java实现拜占庭将军_什么是拜占庭将军问题(一)

如果你刚接触区块链,会发现经常被一堆PoW,PoS搞得头晕晕的,特别是哪个项目对应哪个机制的时候,就会处于一种懵逼ing状态。

ba0e2b46236008e18d5cbbf44673e7b3.png

要了解PoW,PoS,那就要从拜占庭将军问题说起。

拜占庭将军问题是Leslie Lamport(论文排版系统 LaTeX 的开发者。2013年的图灵讲得主)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子。

这个例子大意是这样的:

拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。这10支军队在分开的包围状态下同时***。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队(一半以上)同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵骑马相互通信来协商进攻意向及进攻时间。

困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间,来破坏行动。

简化一下问题,就是,如何能在有叛徒的情况下,所有忠诚的将军都能让别的将军收到自己的真实意图,最终保持正确的一致行动。

问题的重点的并不是“进攻”、“撤退”的发送,而是“消息1”、“消息2”、“消息3”等信息的发送。

分布式计算中,不同的计算机通过通讯交换信息达成共识而按照同一套协作策略行动。但有時候,系统中的成员计算机可能出错而发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同结论,从而破坏系统一致性。

所以说:拜占庭将军问题被认为是容错性问题中最难的问题类型之一。

这个问题的根本是“一致性”和“正确性”的算法问题。算法针对的是忠诚的将军们,干扰因素是叛徒(叛徒可以做出任何超出约定的判断)。

所以我们需要在有叛徒干扰的情况下,找到抗干扰算法,解决这个问题。

嗨,你还在看吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值