比特币的发明,本质上是设计了一个分布式去中心化的数字货币,以期比特币不会被任何国家的央行或者企业机构所控制。但是一个分布式系统,要想步调一致地完成工作任务,就一定需要先解决“拜占庭将军问题”。
那么什么是“拜占庭将军问题”呢?我们一起来看一个小故事。
在中世纪,拜占庭罗马帝国胜极一时,有一天,国王派10位将军去围攻一座小城。这10位将军很快将小城围得铁桶一般。但是在思考何时发起总攻时,这十位将军却犯愁了。
这座城池虽然小,但是如果少于5位将军前往攻城,守军还是可以赢的。所以如果想要拿下这座城池,就必须要有多于半数的将军达成共识,共同行动才行。
但是由于10位将军都是战功赫赫,所以谁当总指挥都会有人不服从。谁都觉得自己的作战时间是最好的选择。而且,将军们中间,谁也没办法保证是否有将军已经叛国通敌了,所以也不敢随意去听从其他将军的命令。
而且还有一个最要命的问题就在于,将军们之间距离很远,他们无法坐到一起开会讨论,因为一出自己的军营,他都觉得会有叛军的刺客要谋害自己。而他们所拥有的唯一沟通手段,就是每个人的办公室都有一台电报机(在那个时代,电报机是通过卫星通信的高科技,其他人都截获不了,更不用说篡改了)。但是如果大家随时随地都拿电报机跟其他的将军说自己的想法的话,所有的电报机都忙碌起来了,情况就会变成“Alex:今晚10点,进攻”,“John:今晚3点,进攻”,“Bill:12点前不要轻举妄动。Steve附议”……场面混乱不堪。
在这种情况下,这些将军怎么通过电报机最后达成共识一起行动的问题,就叫作“拜占庭将军问题”。
在中本聪看来,任何共识的达成都是要付出代价的,在所有的将军地位平等的情况下,不可能你说了,别人就都来听你了,无组织的低成本沟通,最后的结果就是谁说的话都不会成为共识。
那么怎么办呢?让自己脱颖而出争夺话语权呗,怎么脱颖而出呢?比如10分钟之内,谁做的俯卧撑最多谁说,或者10分钟之内谁吃的肉包子最多谁说。这也就是中本聪给出的方法:“工作量证明PoW”,将军们做的俯卧撑、吃的包子都是工作量,谁的工作量最大,证明谁有话语权。中本聪的选择,是让将军们做数学题,10分钟之内,谁先做出来数学题,谁就是Boss,Boss就可以把自己的答案和命令带上,发给所有其他的将军:“晚上8点,进攻,答案是803”,其他人在收到自称Boss的那个人的电报后,先验证结果,如果结果是对的,就把自己的指纹带上,转发给所有其他将军(该电报机有传真的功能)。
最后,大家都会拿到一张带有超过半数将军指纹的电报,共识达成了。
可是凭什么大家要验证Boss的计算结果并签名呢?这是因为事成之后,所有签过名的将军会瓜分城池内的所有财宝呀,这就是中本聪设计的奖励机制。
这里面还有一个问题,就是怎么证明一条传过来的电报真的是出自某位将军的手笔呢?这就是指纹的作用啦,指纹是每个人的唯一标识,别人都无法伪造,也就防止了别有用心的人伪造其他将军的手笔了。
就这样,在中本聪给出的方案下,通过签名机制保证了信息的真实归属;通过工作量机制,降低了无效的交流,选举出了意见领袖,同时发消息的人需要很大的代价来争夺话语权,也降低了叛徒发无效意见的概率;通过奖励机制,保证了大家都愿意参与到决策过程中,并把决策传给下一个人。困惑了计算机界30年的拜占庭问题,被解决了。