漫谈比特币(4)拜占庭将军问题的绝妙解答
上期留给大家的疑问是,中本聪最初发明比特币的触发因素是什么呢?如果比特币是一个天才极客的社会实验,那么它所针对的又是什么场景?要解决怎样的问题呢?
拜占庭将军问题(Byzantine Generals Problem)——从这个问题的名字上看,很多人会以为所谓“拜占庭将军问题”是源自五世纪的东罗马战场,而实际上这和古罗马帝国并没有直接的关系。 这个问题最早由一位美国的计算机科学家Leslie Lamport 于1982 年提出,只是借用这个虚拟的概念,形象的说明在计算机通讯学上的一致性问题模型。
拜占庭是古代东罗马帝国的首都。强大的拜占庭将军协商一同围攻一个敌人。n个将军包围着这个敌人,他们需要协商一个一致的时间,同时对敌人发起总攻,才能确保战争的胜利。但其中一些背叛的将军可能会通过发送错误的消息造成混乱,干扰忠诚的将军同时发起总攻。如果同时发起进攻的将军数量少于m个,可怕的后果就是,拜占庭将军不仅不足以歼灭敌人,反而有可能被敌人歼灭。怎样才能保证至少有m个将军在同一时间一起发起进攻呢?
聪明的读者此刻一定已经意识到这个所谓的拜占庭问题不仅仅应用在战争的场景下,事实上,人类社会中一切依赖信息传递达成共识并组织协同工作的场景,都或多或少的会存在拜占庭将军问题,即网络中的一个或多个节点可能会出现问题。而一旦出现“叛变的拜占庭将军”,节点与节点之间的沟通可能会被扰乱,导致人们难以达成共识,进而会阻碍人与人之间的协同工作。
每一个“叛变”节点,其所发生的差错可能是故意的,也可能是无意的。错误的手段和呈现方式也可能多种多样,例如:不响应;发送错误信息;对不同节点发送一致的信息;多个错误节点联合造假或攻击其他节点等等。这种情况在越大范围的协同工作场景中,风险越高。
在现实的社会场景中,只要我们把“叛变的拜占庭将军”替换成如下任何一种场景,该问题都将成立:
• 一个有故障的计算机不停向网络上其他计算机和服务器发出错误消息;
• 一台被黑客劫持的服务器,在网络中散发虚假信息;
• 一名徇私舞弊的银行职员,企图通过制造虚假的交易骗取利益;
• 一个假货生产厂商,试图采用仿制的包装等手段,以假乱真;
• 一个应聘者试图伪造自己的学历证明和工作经验,以获取某个职位
• 某个个人或机构,为了商业利益而抄袭或盗取别人的知识产权或专利
类似的场景还有很多。这类场景的共同之处在于,协作是在一群互相之间没有绝对信任的个体或机构之间展开。讲到这里,大家应该已经意识到,拜占庭将军问题远非只是一个数学上的虚拟问题,而是一个有着非常重要的社会意义的问题。它其实已经触及了人类社会运作和经济运行的核心,即信任和共识。
数学界对拜占庭将军问题作出的推理和证明是:当叛变者不超过三分之一时,存在有效的算法,不论叛变者如何折腾,忠诚的将军们总能达成一致的结果。但是如果叛变者过多,则无法保证能达到一致性。
但是从这个理论证明出发,想要构造出一个完美的、可以解决“拜占庭将军问题”的容错系统是一个不小的挑战。很多数学家和计算机领域的天才,都在尝试建立这样的系统。这些实验性的系统有很多在建立后不久就被证明是不完美的,这些天才们在无数次的失败中一次次的总结经验教训,对系统做出优化和改进,期待着那个最终的完美系统诞生。
2008 年 10 月 31 日,在众多的实验中,有一个所谓P2P(点对点)的的e-Cash(电子现金)支付系统的构想,在美国MIT(麻省理工学院)的密码学邮件讨论组中引起了一些关注。这位化名 Satoshi Nakamoto (中本聪)的人发表了一篇论文,题目是:《 Bitcoin: A Peer-to-Peer Electronic Cash System. 》,中文即:《比特币白皮书:一种点对点的电子现金系统》。这篇论文在论坛发布后,引起了一段持续的讨论。
一位澳大利亚的企业家James A Donald(詹姆斯·A. 唐纳德)对此系统提出了质疑,认为它并不能够真正解决拜占庭将军问题。詹姆斯在针对此系统的邮件中挑剔地说道:“我们的确真的非常非常需要这个系统,但我所担忧的并不是信任的问题,而是如何获取一个全局共享的图景,借由此点而获取一致性的问题。每个人都知道X,这并不足够。我们需要让每个人都知道‘每个人都知道X’。而每个人都知道‘每个人都知道X’就是‘拜占庭将军问题’中,分布式的数据处理最难解决的问题。尤其是当X是非常庞大的数据时……”
詹姆斯的言下之意是,这个系统构想的提出者并不懂得拜占庭将军问题的核心所在,而他的系统自然也不能够真正解决其中的信任和共识问题。
然而在第二天,詹姆斯就收到了该构想原作者的回复。他用一个“将军们暴力破解国王的Wi-Fi”的问题为比喻,形象地描述了整个系统的工作原理,以及该系统是如何巧妙的解决拜占庭将军问题,确保在一个包含大量节点的网络内建立信任和共识机制的。
这个系统引入了两个巧妙的机制:
1、工作量证明机制:分布式网络内的所有节点都被要求解答一个非常困难的数学难题,平均需要耗时约10分钟左右;
2、每个工作量证明即每次解题的过程证明都被头尾相接连接起来,形成一个不可逆、不可篡改的链条。
这封回复邮件头上的包含如下的信息:
日期和时间:2008年11月14日06:56:55
邮件作者签名:Satoshi Makamoto(中本聪)
随后,该设想的提出者中本聪更进一步,将其设想付诸实践,并在 2009 年公开了最初的实现代码。而按照此机制运作挖出的第一批“创世”比特币(50个)也于 2009 年 1 月 3 日 18:15:05 生成。这套系统,就是如今大名鼎鼎的比特币,是所有加密货币的始祖,不仅登顶数字黄金的宝座,更是被币圈、链圈的无数粉丝奉为信仰顶礼膜拜。
中本聪在比特币白皮书中设计的机制,让后世的数学家、密码学家和计算机专家惊为天作,越研究越觉得其中设计之精妙。而其创立的比特币,在没有任何中心化机构运营维护的情况下,稳定运行到现在已达9年之久,连接了数以百万计的节点。系统中作为奖励机制的“比特币”更是身价一路高涨,虽然经历各种大大小小的劫难,十几次被权威宣布死刑,却总能化险为夷,浴火重生,直到2017年12月到达每个比特币20000美元的巅峰。
那么,中本聪究竟是何方神圣?我们找到他了吗?让我们下期与你一起继续探讨其中的奥秘......