解读丨拜占庭将军问题和比特币的由来

解读

在币圈如果不知道“拜占庭将军问题”,那说明您还没有发现问题的本质。但是要想理解这个问题,如果没有点高等数学和计算机编程基础,也不是非常简单的事情。我们这里就从八卦讲起,扒扒这个概念的由来,然后对照比特币的解决办法,引出亿书机制的实现。

拜占庭将军问题

(1)比特币是怎么来的?

这里咱也八卦一下,猜猜比特币如何诞生的。在学习一门新技术的时候,我们通常会好奇,发明这项新技术的人,他是怎么想到要进行这项发明的呢?同样,对于比特币,我也曾经好奇,中本聪怎么想到要发明比特币的呢?这大量高科技的应用,可不是个小工程,一定要有明确的目的才行。这种好奇,始终督促我不断研究下去。

算法是解决问题的理论基础,拜占庭将军问题就是针对分布式共识算法提出来的,而这个问题也是比特币等加密货币的核心问题。根据比特币白皮书(更像一篇科技论文吧)内容描述,大量篇幅提到诚实节点、攻击者等问题,类似于古代战场攻防对战,很多人猜测中本聪或许就是一位专门研究这个方向的大学老师或研究人员,他解决了这个问题,推出了相关论文,并根据研究成果写出了产品原型——比特币。所以,才会说比特币仅仅是一项实验。

显然,这种猜测,纯属马后炮,由结果找原因,毫无历史根据。网上搜索了一下,各种猜测还真不少。姑且避开八卦内容,其中比较有价值的,是一篇比特金(Bit Gold)白皮书,因为它与比特币有惊人的相似之处,因此其开发者尼克·萨博(Nick Szabo)被认为最有可能是中本聪本人。比特金比比特币要早,它的目标就是实现一种不需要(只需极小的)信用中介的电子支付系统,与比特币的目标基本一致。

可见,通过使用点对点网络、加密解密等技术实现加密货币的研究由来已久,可以肯定的是,比特币的初衷绝非单纯为了解决拜占庭将军问题那么简单。相反,为了实现没有中介的电子支付系统而设计倒是更加合情合理,只不过附带完美的解决了拜占庭将军问题而已。事实上,比特币算是解决拜占庭将军问题的一个完美实现。

(2)什么是拜占庭将军问题?

但不管怎么说,拜占庭将军问题是比特币无法逾越的问题。该问题最早是由Leslie Lamport解决,为了提高宣传效果,老先生在研究论文里编造了这么一个故事,事实证明非常成功,这个故事被广泛传播。故事内容是这样的:拜占庭是东罗马帝国的首都,为了防御外敌入侵,周边驻扎了军队,而且每个军队都分隔很远,相互独立,将军与将军之间只能靠信差传递消息。在战争的时候,拜占庭军队内所有将军必需达成一致的共识(进攻或撤退),才有胜算把握。但是,在军队内部有可能存在叛徒,左右将军们的决定。这时候,在已知有成员叛变的情况下,其余忠诚的将军如何达成一致的协议,拜占庭问题就此形成。Lamport 证明了在理想状态下,背叛者为m或者更少时,将军总数只要大于3m,忠诚的将军就可以达成一致。

从技术上理解,拜占庭将军问题是分布式系统容错性问题。加密货币建立在P2P网络之上,是典型的分布式系统,类比一下,将军就是P2P网络中的节点,信使就是节点之间的通信,进攻还是撤退的决定就是需要达成的共识。如果某台独立的节点计算机拓机、掉线或攻击网络搞破坏,整个系统就要停止运行,那这样的系统将非常脆弱,所以容许部分节点出错或搞破坏而不影响整个系统运行是必要的,这就需要算法理论上的支撑,保证分布式系统在一定量的错误节点存在的情况下,仍然保持一致性和可用性。

我非常赞同把拜占庭将军问题与两军问题分开,两个问题的本质不同,后者重在研究信差的通信问题,类似于TCP协议的握手操作,原则上是没有解的。而拜占庭将军问题是假定信差没有问题,只是将军出现了叛变等问题,所以二者本质有区别。不过,在实际的加密货币系统里,信差的问题,比如通信中断、被劫持等,都可以归为将军(节点)出了问题,理解到这一点就可以了,因此可以说比特币是完美解决了这两个问题。关于两者的区别,请看这篇文章《拜占庭将军问题深入探讨》(见附件),作者下了不少功夫,值得一读。

(3)比特币是如何解决拜占庭将军问题的?

Lamport 给出了理想状态下的答案,但现实是复杂的,比特币是如何解决的呢?事实上,比特币通过“工作量证明”(PoW)机制,简单的规范了节点(将军)的动作,从而轻松解决这个问题:

首先,维持周期循环,保证节点步调一致。这个世界上,最容易达成的就是时间上的共识,至少“几点见面”、“什么时候谈判”这样的问题很好解决吧,不然其他的都不用谈了。比特币有一个算法难度,会根据全网算力自动调整,以保证网络一直需要花费10分钟来找到一个有效的哈希值,并产生一个新区块。在这10分钟以内,网络上的参与者发送交易信息并完成交易,最后才会广播区块信息。拜占庭将军问题复杂在将军步调不一致,比特币杜绝了节点(将军们)无限制、无规律的发送命令的状态。

其次,通过算力竞赛,确保网络单点广播。将军们如果有个“带头大哥”,事情就好办了。这里的“带头大哥”可以简单的竞争得来,举个极端的例子,说好的8点钟谈判,那么先到的就是“带头大哥”,可以拟定草稿,等其他人到了签字画押就行了。 “工作量证明”就是一种竞赛机制,算力好的节点,会最先完成一个新区块,在那一刻成为“带头大哥”。它把区块信息立即广播到网络,其他节点确认验证就是了。比特币通过时间戳和电子签名,实现了这样的功能,确保在某一个时间点只有一个(或几个,属于分叉行为)节点传输区块信息,改变了将军们互相传送的混乱。

最后,通过区块链,使用一个共同账本。对于单个区块,上述两条已经可以达成共识了。但现在的问题是,有一个叛徒(不诚实节点)修改了前面区块的信息,计划把钱全部划归自己所有,当它广播新区块的时候,其他节点如何通过验证?如果大家手里没有一份相同的账本,肯定无法验证,问题就会陷入僵局。基于P2P网络的BT技术是成熟的,同步一个总帐是很简单的事情。网络中的节点,在每个循环周期内都是同步的,这让每个节点(将军)做决策的时候就有了共同的基础。如果每个节点都独立维护自己的账本,问题的复杂性将无法想象,这是更广泛基础上的共识。

上述三点内容是比特币“工作量证明”(PoW)机制解决拜占庭将军问题的答案,也为其他竞争币提供了重要参考。事实上,无论你采取什么样的方式,只要保证时间统一、步调一致、单点广播、一个链条就能解决加密货币这种分布式系统的拜占庭将军问题。

猜你喜欢

转载自blog.csdn.net/itstar_ge/article/details/80738055