和百度百科里不一样的拜占庭讲解

  先来个小科普(网上摘抄的)

        拜占庭将军问题首先是由Leslie Lamport等人在1982年提出,被称为The Byzantine Generals Problem或者Byzantine Failure。

基本上我在网上查到的是这样的:

      拜占庭帝国想要进攻一个强大的敌国,为此帝国派出了10支军队去包围这个帝国。这个敌人虽然不如拜占庭帝国强大,但也足以抵御5支常规拜占庭军队的同时袭击。由于某些原因,这10支军队无法聚合在一起进行攻击,必须分散然后根据统一的指令一起进攻或者撤退。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。



        看完这段什么感觉,我相信大多数人刚开始接触拜占庭问题时都会看到这个故事。我也相信大家看完基本都是一脸迷茫。感觉看来一个小故事,然后,就没有然后了。这和计算机,区块链有什么关系?下文,我尽可能按我的理解来给读者讲清楚。

希望对大家有所帮助!

        在分布式系统中,由于硬件错误,网络拥堵或者中断以及遭到攻击等原因,节点(计算机)做出异常行为(不诚实的行为,也就是叛军做的事)。这也就很像我们所说的拜占庭问题。那么有谁来发消息呢?谁来确定具体进攻时间,也就是计算机中我们说发送消息的节点。总不能都各自写各自的吧?那不乱透了。我们要达成共识(共识机制),但是各位将军都不愿意听别的将军,怎么办?于是中本聪就非常巧妙的设计一个机制,这个机制很重要。在我看来,在区块链中起到非常重要的作用,POW机制(工作量证明机制,属于共识机制的一种)。也就是说,那位将军(节点)要发消息,就要先解开一道数学题,然后才能发送消息。换句话说,就是计算机,要做一到数学题,然后把答案发送到区块链上面,并且签字(这里涉及到时间戳一词在POW机制里会有讲),服务器确认正确后才有资格发送消息。好了,这会,将军们(计算机)说:我厉害,我解开题了。我来确定什么时候进攻。


        这里的数学题,所指的是计算机需要用高计算能力的CPU(当然现在已经不用这东西算了),其pow内部运用的哈希函数,迫使计算机暴力计算。然后会浪费很多电,计算机需要一直计算好久好久好久。


        但是,如果将军不愿意做题呢?所以中本聪说,我给你们奖励,这也就是我们俗称的挖矿奖励。你们做题,攻下城以后,瓜分利益。


        还有问题,叛军呢?那个叛军(坏计算机)就是不同意。咋办?脑补画面就是,大部分都要攻城(诚实节点亦或者叫好的计算机)的。他们最终会发现那个是叛军,然后他们攻下城后,瓜分奖励不给叛军便是。然后,,,就和本文没有关系。 自己脑补吧。


        除了这些,还有一些机制,是解决共识问题的。比如口头算法,书面算法,以及riple,等等。而中本聪就是利用Pow机制。


(至于POW机制内部具体是如何做的。本文不做阐述,大体就是利用经济刺激奖励的方法让矿工去维护这东西。)

推荐阅读更多精彩内容