如何在一个由权威机构作为中介却存在各种漏洞的世界里,安全地传递各种信息?在这个问题被解决之前,区块链无从谈起。而解决这个问题,要从一个遥远的故事说起,那就是拜占庭将军问题。
拜占庭帝国即中世纪的土耳其,拥有大量的财富,令周围10个邻邦垂涎已久。但拜占庭高墙耸立,固若金汤,没有一个邻邦能够单独入侵。如果有邻邦选择单独入侵拜占庭,那么不仅入侵行为会失败,自身也可能被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有10个邻邦中的一半以上同时进攻,才有可能被攻破。
如果其中的几个邻邦计划好一起进攻,但在进攻过程中出现背叛,那么入侵者可能都被歼灭。于是每一方都小心行事,不敢轻易相信邻国。
如何在这种信任与欺诈的环境中获胜?这就是拜占庭将军问题。
拜占庭将军问题(Byzantine Generals Problem)由Leslie Lamport与另外两人在1982年提出,这个问题困扰了计算机科学家们数十年。
在拜占庭将军问题里,最重要的事情是:所有将军如何达成共识从而攻打拜占庭帝国。
达成共识并非坐下来开个会那么简单,有的将军心机深不可测,口是心非,如果有叛徒,那么可能出现各种问题。在对拜占庭问题进行深入研究后,科学家们得出一个结论:如果叛徒的比例大于或等于1/3,那么拜占庭问题无解。
当然,如果叛徒的比例小于1/3,那么问题还是可解的。科学家们提出了口头信息和书面协议两个方案。
解决方案一——口头信息。第1个将军把自己的决定通知所有国家,第2个将军再将第1个将军和自己的决定通知所有国家,以此类推。一轮下来,所有将军便知道了所有的信息,如果有一半以上的人决定进攻,那么即使有叛徒,少数服从多数也是有利的。
解决方案二——书面协议。每个将军都派人通知其他将军,例如一起约定“某天早上六点,大家一起进攻拜占庭,同意就签个字”。一轮之后,根据所有将军返回的信息决定是否进攻。
书面协议相比口头协议更稳妥,信息都会被记录,解决了信息溯源问题,但仍然难以避免效率过低、伪造签名防伪等问题。
拜占庭将军问题就是一个简化了的网络安全问题:不通过微信、QQ,你如何使用联网设备,在不安全的网络中传递信息给其他人,还要正确快速,不被黑客篡改内容。
莱斯利·兰伯特提出了“拜占庭将军问题”,但真正解决这一难题的是中本聪。
中本聪提出的解决方案就是区块链技术。
如果10个将军中的几个人同时发起信息,势必会造成混乱,各说各的攻击时间和方案,行动难以一致。谁都可以发起进攻的信息,但由谁来发起呢?中本聪巧妙地在这个系统中加入了发送信息的成本,即一段时间内只有一个节点可以传播信息。
它投入的成本就是“工作量”:节点必须完成一个计算工作才能向各城邦传播信息,谁第一个完成工作,谁才能传播信息。
由某个节点发出统一进攻的信息,各个节点收到发起者的信息后必须签名盖章,确认各自的身份。为了确保签名不被篡改,中本聪在这里引用了我们前文提到的非对称加密技术,让签名不可伪造。
例如,将军A 想给将军B 发送信息,为防止信息泄露,A需要使用B的公钥对信息加密,B的公钥是公开的,B需要使用只有他自己知道的私钥解密。B想要在信件上声明自己的身份,他可以写一段“签名文本”,用私钥加密并广播出去,所有人可以根据B的公钥来验证该签名,确定的B的身份。
由此,一个不可信的分布式网络变成了一个可信网络,所有的参与者都可以在某件事上达成一致。
工作量证明可以简单地理解为一份证明,现实中的毕业证、驾驶证都属于工作量证明,它用检验结果的方式证明你过去做过多少工作。
在拜占庭的系统里加入工作量证明,其实就是简单粗暴地引入了一个条件:大家都别忙着发起信息,都来做个题,看谁最聪明,谁就有资格第一个发起信息。
这道题必须是绝对公平的,中本聪在设计比特币时,采用了一种叫作哈希现金的工作量证明机制,计算机需要用穷举法找到一个随机数,可以说,能不能找到全靠运气。对于各个节点来说,只有随机才是真正的公平,实现随机的最好办法是使用数学逻辑。
如果不同的将军先后解出了题并向这个网络发布信息,那么各个节点都会收到来自不同节点的表示进攻或者不进攻的信息,这时怎么办?只有最早发出的信息才是有效的。中本聪巧妙地设计了一个时间戳,将每个将军解好题的时间(出块时间)盖上时间戳。将军们又凭什么要一起做工作量证明呢?为此,中本聪又设置了奖励机制,比特币的奖励机制是每打包一个块就奖励一定量的比特币。
对了,如果出现背叛怎么办?
在这个分布式网络里,每个将军都有一份实时与其他将军同步的信息账本。账本里有每个将军的签名,可以验证将军的身份。如果出现了不一致的信息,就可以知道发出不一致信息的是哪些将军。尽管有不一致的信息,但只要超过半数同意进攻,就可以采取少数服从多数的原则,共识达成。
由此,在一个分布式的系统中,可以有坏人,坏人可以做任何事情(不受协议限制),例如不响应、发送错误信息、对不同节点发送不同决定、不同错误节点联合起来干坏事等。但是只要大多数人是好人,就完全有可能去中心化地实现共识(Consensus)。
区块链上的共识机制主要解决由谁来构造区块,以及如何维护区块链统一的问题。拜占庭容错问题需要解决的同样是由谁来发起信息,如何实现信息统一、同步的问题。
基于互联网的区块链技术,克服了口头协议与书面协议的种种缺点,使用信息加密技术,以及公平的工作量证明机制,创建了一组所有将军都认可的协议,由于这套协议的出现,拜占庭将军问题完美地得到了解决。
伟大的创新者站在前人的肩膀上,中本聪是各种前沿技术的整合创新者,古老的疑难杂症在这种整合创新下,迎刃而解。