初接触数字货币/加密货币的时候,偶尔会遇一个非常特别的名词:「拜占庭容错机制」,而这个名词总与「共识机制」同时出现。

这看似与地名有关的名词,到底是什么其实这是一个非常经典的信息逻辑问题,而又与数字货币的发展息息相关。

拜占庭将军问题:如何依靠分散的个体去确保信息正确

要了解「拜占庭容错机制」,首先要知道什么是「拜占庭将军问题」(Byzantine Generals Problem),这是一个由硅谷科学家Robert Shostak于1978年提出的情境难题。内容是这样的:

古代某个大城市「拜占庭」正经历一场战争,四位将军散落在城内各处,必须在短时间内决定进攻还是撤退。条件在于,不论进攻或撤退,都必须四位将军一致同意,才能保证最后胜利。

四位将军决定各自写信予其他三人,告知相关决定。当每位将军都寄出信息,又同时收到其他三名将军的来信后,就会知道决定是否一致,到底是进攻还是撤退。

听来很简单对吧但问题是--

如何防止其中一位将军叛变又或者,其中一位将军已被暗杀,寄信的其实是间谍又或者,寄出信件后被敌方截取,篡改成相反的内容,从而阻止四位将军达成共识

现代版的拜占庭将军问题:办公室午餐共识问题

如果仍然觉得难以理解的话,可以尝试从现代的生活环境去设想。假设某公司中有四位女同事决定要一同午餐,在选择餐厅的时候,必须要征得一致同意才可以去吃饭。

我们故且假设四位女同事分布在四个楼层,工作繁忙而且无法以群组沟通,每一人必须各自告知其他三位女同事心仪的餐厅,但又如果有第五位女同事出于某种原因(可能是积怨在先),希望破坏这场午餐,她即可以截取其中一人的其中一封通信,又篡改成相反的内容,就可令四位女同事无法达成共识,无法出外午餐了。

这就是拜占庭将军问题的本质:在没有中心化通讯机制的前题下,如何保证某一团队/情境下的相互信息验证功能--如何在去中心化的同时,找出密码学的「唯一事实」(single truth)

拜占庭容错机制:少数服从多数

拜占庭容错机制(Byzantine Fault Tolerance, BFT)正是解决这个情境题的经典解答,所以,我们常听见的「拜占庭容错机制」其实是答案,背后要解决的,是上述的「拜占庭将军问题」。

拜占庭容错机制的做法,就是基于团队会忠诚执行指令的前题下,所有人只需要执行最大多数的共同指示即可。以上述「女同事午餐问题」为例,那就是最后四人一同选择占大多数的餐厅提案即可--说穿了,就是少数服从多数,将错误的信息预计在内,再加以排除。

如果将同样情况,套用于复杂的电脑信息及区块链验证当中,就会发现「拜占庭容错机制/BFT」比我们想象来得更重要。试想想,如果没有任何机制确保去中心化信息的正确性﹐又没有一个方案能够容许少数错误的情况下仍然确保系统运作,那么整个区块链都都会寸步难行。

没有共识机制就没有去中心化

看到这里,你一定会问,如果所谓的「容错」,只是执行多数决定,那么,如果敌人占了大多数呢如果更多的信息被篡改又如何呢如对女同事积怨的不只是一个人呢

拜占庭容错机制所提供的,只是在逻辑/数学上最经典的答案,背后所延伸出来的,是所有去中心化机制都要面对的最核心问题:共识&容错机制。

「共识机制」顾名思义,就是能够寻求可行共识的机制,在去中心化的世界里,如何订立这项机制、如何执行这项机制、这项机制的速度、扩展性、私密度、容错度,将会决定每一项去中心化系统的价值。

比特币的中本聪协议,就是一个比经典的BFT(少数服从多数)更进一步的解决方案,透过将信息重度加密,再要解密者以极高难度的蛮力去计算数学题,从而获得答案。这项验证方式要大量高难度数学计算,所以又名为「工作量证明」(Proof-of-work, PoW)

其他的区块链亦有更先进机制去应对容错/共识问题,不论是以太坊,Solana,Cardano,Avalanche,也同样在追求更有效率的方式,去获得「唯一事实」(single truth)。

看到这里,你就会发现为何拜占庭容错机制会一再出现。因为任何的区块链,其实都需要先解决拜占庭将军问题,亦可以说,每一项新发明的共识机制,其实都是拜占庭容错机制的进阶版,或直接推翻再创新。

验证的形式与速度=区块链的价值基础

现实世界当中,一群没有中心领导的个体,要集中统一行动,追求最大利益,第一件事就要找出符合所有人利益的「唯一事实」。

这同样是密码学的最终目的,如何在充满密钥的世界里,找出可行而高效的解密方案,传输及保存「唯一事实」。

当这个概念套用于区块链,就变成所有区块链节点能够互相以密钥验证,再具有能够防止恶意攻击的容错,从而达成共识机制。

共识机制的诞生过程中,就要解决速度及可扩展性的问题。比特币长年为人诟病之处,即中本聪共识机制「工作量证明」需要消耗非常多资源与时间,对于以太坊及其他公链后起之秀,已显得太过高成本,设计上更无法与以太坊等公链互通。

时至今天,已有各种方案去解决拜占庭将军的问题/女同事午餐问题。中本聪的「工作量证明」PoW只是其中一个方案,其他如公链 Solana 的「PoH(Proof-of-History,历史证明)」,Luna 的「PoS(Proof-of-Stake,权益证明)」,Avalanche的「雪崩共识」,或更多进阶共识机制,都是旨在解决拜占庭将军问题的本质:

独立去中心化的计算器,如何可以自我容错运算,互相以单一事实验证。

最复杂的计算,往往是为了解决最简单的问题。当我们认真了解拜占庭将军问题/拜占庭容错机制,其实已经足以了解区块链,以至数字货币世界的本质。