本篇看点:中本聪是如何解决拜占庭将军问题的?他又是从什么时候开始设计比特币的呢?
前情回顾:
【连载】比特币史话 | 拜占庭将军(3)
【连载】比特币史话 | 拜占庭将军(4)
【连载】比特币史话 | 拜占庭将军(5)
正文:
在2008年10月31日中本聪向密码学邮件列表投递比特币白皮书不久,一个叫詹姆斯·唐纳德(James A. Donald)的人回复说“保持一致性很棘手”,并请中本聪详细解释一下他是如何做到的。11月8日,中本聪回信说,“工作量证明链就是同步问题的解决方案,无需信任任何人就能知道全局共享视图是什么。”[1][公众号:刘教链]
他继续解释交易的广播,“一个交易将在整个网络中快速传播,因此,如果在十分接近的时间发出了同一交易的两个版本,那么具有先发优势的一个版本将具有较大的优势,可以首先到达更多的节点。节点将只接受他们看到的第一个交易,拒绝第二个到达的,因此较早的交易将有更多的节点在一起努力将其合并到下一个工作量证明中。实际上,每个节点通过将交易包含在工作量证明中来对它先看到哪个交易的观点进行投票支持。”[公众号:刘教链]
并解释了如何解决冲突,“如果交易确实是同时到达的,并且是平分秋色,那么就扔硬币决定让哪一个先进入工作量证明,然后决出哪个是有效的(交易)。”[公众号:刘教链]
“当一个节点找到工作量证明时,新区块将在整个网络中传播,每个人都将其添加到链中,并开始在其后的下一个区块上工作。拥有另一个交易的任何节点都将停止尝试将其包含在一个区块中,因为根据已被接受的链,该交易现在无效了。”[公众号:刘教链]
最后,中本聪总结道,“工作量证明链本身就是其来自于全局共享视图的不证自明的证据。只有网络的多数(节点)总体拥有足够的CPU算力,才能生成如此困难的一条工作量证明链。任何用户,基于接收到的工作量证明链,都可以知道网络的多数(节点)已经批准了什么。一旦交易被哈希进了链上若干环之前的某一环(link),它就被牢牢地铭刻在全局历史之中。”[公众号:刘教链]
在中本聪2008年11月13日的邮件中,他又进一步地阐述了工作量证明链是如何解决拜占庭将军问题的[2]。以下是中本聪的邮件原文:[公众号:刘教链]
“工作量证明链就是拜占庭将军问题的解。我来尝试在拜占庭将军问题的语境下对此重述一下。”[公众号:刘教链]
“有一些数量的拜占庭将军,每个人都拥有一台计算机,并想合作起来暴力破解国王的WiFi密码。他们知道WiFi密码是一定长度的字符。一旦激发网络生成数据包,他们就必须在有限的时间内破解密码,侵入系统并清除日志,否则他们将被发现并陷入麻烦。只有大多数人在同时发起攻击,他们才能有足够的CPU算力以够快的速度破解密码。”[公众号:刘教链]
“他们并不特别在乎在什么时间发动攻击,只要他们都同意(这个时间)就可以。已经决定的是,任何愿意参与的人都可以宣布一个时间,而首先听到的时间将是正式的攻击时间。问题在于,网络(数据同步)不是瞬时的,如果两名将军在十分接近的时间内宣布了不同的攻击时间,则有些人可能首先听到其中的一个意见,而另一些人则首先听到另一个意见。”[公众号:刘教链]
“他们使用工作量证明链来解决这个问题。一旦每个将军收到他首先听到的任何攻击时间,他就设置计算机去解决一个极其困难的工作量证明问题,该问题在其哈希中包含了攻击时间。工作量证明是如此之困难,以至于他们全部一起工作,也需要花费10分钟之久,才能有一个人找到一个解。一旦有一位将军找到工作量证明,便将其广播到网络,每个人都更改其当前的工作量证明计算,以将该工作量证明包含在他们正在工作的哈希中。如果有人正在不同的攻击时间上工作,他们会切换到这一时间,因为它的工作量证明链现在更长了。”[公众号:刘教链]
“两个小时之后,有一个攻击时间应该被一条包含12个工作量证明的链所哈希。每个将军,只需要验证工作量证明链的难度,就可以估算出每小时有多少并行的CPU算力花费在这条链上,并明白了这需要大多数的计算机才能在指定时间内产生那么多的工作量证明。所有人都应该已经明白了这一点,因为工作量证明正是他们在这上面工作的证明。如果工作量证明链展示出的CPU算力足以破解密码,那么他们就可以在一致同意的时间安全地发起攻击。”[公众号:刘教链]
“工作量证明链正是你所提出的所有同步性问题、分布式数据库问题以及全局视图问题的解决方法。”[公众号:刘教链]
显然,中本聪是知道拜占庭将军问题的。那么他必然也会知道莱斯利·兰伯特(Leslie Lamport) 1982年的论文,也一定知道1999年的PBFT算法等前人提出过的一系列拜占庭容错算法。[公众号:刘教链]
但是,更显然地,中本聪认为这些*BFT类的算法统统不堪大任,根本不具有支撑比特币规模的去中心化网络的能力。更有趣的是,中本聪在比特币的白皮书里,对于“拜占庭将军问题”只字未提,莱斯利·兰伯特的著名论文以及其他知名的分布式计算论文,没有一篇出现在比特币白皮书的参考文献里。[公众号:刘教链]
也许在中本聪看来,他根本就不是冲着解决什么分布式计算问题去的,也没有使用任何该领域曾经出现过的一致性算法,而解决掉这个分布式计算难题,不过是创造出一个去中心化的时间之矢之后的“顺手牵羊”而已。[公众号:刘教链]
也许是近二十年互联网商业化的巨大成功,让分布式计算领域的研究重心也纷纷从去中心化网络转向了中心化集群,毕竟后者更有市场,难度也更低。[公众号:刘教链]
所幸,还有密码朋克奋力前行。[公众号:刘教链]
中本聪所做的课题,加密货币,是密码学领域的课题。但要做好这个课题,要解决的最关键问题,是分布式计算领域的问题,是去中心化的分布式共识问题。而解决这个问题,却又不是用分布式计算领域25年间所研究过的方法,而是又回到了密码学领域,逆向使用密码学技术,利用密码学技术难以被破解的特点,构造出了解决方案。[公众号:刘教链]
随着后面的逐步揭秘,我们会发现,中本聪所运用的,还有博弈论和经济学的原理,若非如此,只靠计算机技术,是无论如何也不能完全解决去中心化共识这个问题的。[公众号:刘教链]
中本聪在2010年6月18日发表的、回答网友提问“什么时候开始设计比特币”的论坛帖子中如此写道[3]:[公众号:刘教链]
“从2007年开始的。在某个时间点,我变得确信,有一种方法可以不需要任何必需的信任就可以做到(去中心化支付和电子现金系统)。我无法拒绝继续思考这件事。大部分工作都是设计,而不是编码。”[公众号:刘教链]
“幸运的是,到目前为止,所有出现的问题都是我之前考虑和计划到的。”[公众号:刘教链]
【未完待续】(公众号:刘教链)
————————————————
原文链接:https://blog.csdn.net/blockcoach/article/details/107479172