1703864965
1703864966
前面所谈到的这个办法与比特币系统有些相似之处了,但实质还是不完全一样。以上做法有几个技术上的问题:第一,达成共识一般是个难题,因为有些节点会死机或是根本就是恶意节点;第二,就比特币而言,点对点网络是不完美的,并非所有对应的节点是两两相连的,互联网链接的不良可能会造成网络问题,要执行一个所有节点都参与的共识协议好像并不现实;第三,由于交易信息是分布在整个互联网上,信息传递会有严重延迟。
1703864967
1703864968
1703864969
延迟与全球时间
1703864970
1703864971
比特币协议达成共识时必须直面两大障碍:其一是不完美网络,例如信息延迟和节点死机,其二是某些故意搞破坏的节点。
1703864972
1703864973
严重网络延迟导致的一个后果是,节点之间没有一个统一的全球时间概念。意思是,并非所有节点都能根据每个交易的时间戳来达成交易时间共识,因此,共识协议不能执行以下指令:“在第一步里发了第一个消息的节点必须在第二步里执行X。”这一做法根本无法执行,因为所有的节点对于谁在第一步中发出第一个信息有不同的看法。
1703864974
1703864975
不可能性结论
1703864976
1703864977
在全球时间上的不统一,给共识协议算法带来了很多限制。事实上,由于这些限制,许多关于分布式共识的文献都对是否能达成共识持悲观态度,有许多达成共识具备不可能性的结论已经被证实。一个经典案例就是“拜占庭将军问题”(Byzantine Generals Problem),这个经典难题是这样阐述的:拜占庭是东罗马帝国的首都,它的军队分成多个师,每个师都由一个将军统领。这些将军通过信使进行交流,来达成一个共同作战方案,有些将军可能是叛徒,想故意破坏这个过程,这会造成那些忠诚的将军也无法达成一个统一的作战计划。解决这个难题的办法就是让那些忠诚的将军在这样的情况下达成统一作战方案,而避免那些叛徒对作战方案的误导。事实证明,如果叛徒数量超过1/3时,这个难题将无法克服,那些忠臣的计划终会被叛徒们破坏。
1703864978
1703864979
还有一个更为微妙的关于不可能性的结论,这就是著名的“Fischer-Lynch-Paterson不可能结果”[1],该名称以最初的作者而命名。该结果指出,在一定的条件下(包括节点行为具有确定性特征),甚至在只有一个缺陷的过程中,达成共识都是不可能的。
1703864980
1703864981
尽管有这些“不可能性结论”,还是有文献谈到了一些共识协议。比较著名的就是Paxos算法协议。Paxos算法做了一些妥协,一方面,Paxos算法能做到不产生不一致的结果;另一方面,Paxos算法所做的妥协是,在一定条件下(虽然是不常见的情形),该协议会死机卡住,从而无法继续运行。
1703864982
1703864983
打破传统上的假设
1703864984
1703864985
但好消息是,这些所谓的“不可能性结论”都是在一些特定的模式下才成立,这些结论是针对分布式数据库的研究,这些模型不能完全套用到比特币身上来,比特币本身就打破了很多原来分布式数据库所做的假设。这些结论其实从某一方面让我们更明白了那些特定模式,由此或许可以真正对分布式共识给出解决方案。
1703864986
1703864987
具有讽刺意义的是,就目前对共识的研究来说,比特币实际运行情况下远比理论上告诉我们的要好得多,这就是比特币让专家们跌破眼镜之处。我们看到分布式共识在比特币里运行良好,但我们还没有建立理论来充分解释为什么会这样,但无论如何,完善理论对将来的发展还是十分重要的,理论结果可以使我们预测,甚至预防未来可能的攻击和问题。我们一旦具备了较强的理论依据,来解释比特币分布式共识的良好运作机制,我们才能真正地对比特币的安全性和稳定性做出保证。
1703864988
1703864989
比特币到底打破了经典模型里的哪些假设呢?第一,比特币引进了奖励的理念,这对分布式共识协议来说是一个全新的理念,这也只有在比特币里才可能实现,因为比特币也是个货币,所以人们自然而然地会为了金钱奖励而变得诚实起来。所以,比特币并没有真正解决分布式共识问题,它只是在特定货币系统下解决了这个问题而已。
1703864990
1703864991
第二,比特币体系包含随机性这个概念。在后面两节里我们将会看到,比特币的共识算法很大程度上依赖于随机性。此外,它也不再纠结于规定共识的起点与终点。相反,共识是通过一段较长的时间而达成的,在实际系统中,达成共识大约需要一个小时左右。但即使在一个小时以后,节点们也无法确定哪一个交易块应该进入总账本。但随着时间的流逝,我们对某一个块的认识与最终总体共识相吻合的概率将越来越大,观点出现分歧的概率按指数级下降。比特币在以上方面的不同,让它能够逾越传统理论关于分布式共识不可达成这一鸿沟。
1703864992
1703864993
[1]Fischer-Lynch-Paterson不可能结果,是Michael J. Fischer、Nancy A. Lynch和Michael S. Paterson在论文Impossibility of distributed consensus with one faulty process中证明的一个结论,称得上是分布式理论中最为深刻的结论,大致表述如下:“在一个多进程异步系统中,只要有一个进程不可靠,那么就不存在一个协议,此协议能保证有限时间内使所有进程达成一致。”——译者注
1703864994
1703864995
1703864996
1703864997
1703864999
区块链技术驱动金融:数字货币与智能合约技术 2.3 使用区块链达成没有身份的共识
1703865000
1703865001
在这一节里,我们将探讨比特币共识算法的技术细节。回忆一下,我们在前面曾说过,比特币中的每个节点并没有一个稳定的、长期的身份,这一点也是与传统分布式共识算法的不同之处。身份缺失的原因是,在一个点对点网络中,没有一个中央权威机构来发放身份,并保证它们没有制造节点。用技术术语来说,乱造节点就是所谓的“女巫攻击”(sybil attack)现象。女巫就是恶意黑客制造的不同节点,这些节点看起来像是对应不同的身份的人,其实是由一个人在幕后控制。另一个原因是化名制(pseudonymity),也是比特币想达到的一个目标,所以即使可以替所有节点建立唯一真实身份,我们也不想那样做。虽然比特币还是不能保证真正的匿名,一个用户用不同身份做的不同交易还是有办法被最终追踪到,但比特币的特性毕竟没有强迫大家用真实身份来加入。这是比特币的重要特性,也是比特币系统的核心理念。
1703865002
1703865003
如果所有节点都有真实身份的话,那么设计上会更加容易。有了真实身份,我们就能够以这样的方式发出协议指令,比如“编号最小的节点开始做某些动作”,在没有真实身份前提下,系统能设计的指令就受到很多限制,但设计真实身份最主要的考虑是安全上的便利。如果节点的身份可以被识别,就不能随便地制造新的节点身份出来。那样的话,我们就可以假设有恶意节点的数量,然后部署安全措施来防范。基于以上原因,缺少真实身份给比特币的共识协议带来很多难点。
1703865004
1703865005
我们可以做一个较弱的理论假设来弥补这个先天的不足。假设我们可以在系统里随意选一个节点,一个比较好的比喻是——就如同在彩票站,或是在任何一个难以辨别每个人身份的系统中,我们给每一位顾客发出彩票或是一个识别牌,之后我们就可以开始抽奖,与奖号对应的人就会中奖。现在我们想象一下在比特币的世界里,我们假设也可以做到这一点。我们再假设,这个彩票的印制过程与发放办法是足够聪明的,如果一个黑客想制造出许多女巫节点来,最后所有这些节点也只能拿到一张彩票。也就是说,这个黑客无法通过制造假的节点来增强他的力量。如果你觉得我们做的假设太多了,请不要担心,我们在以后会消除这些假设,并在后文会详细说明,在比特币系统中,与这些假设相对应的性质是如何实现的。
1703865006
1703865007
隐性共识
1703865008
1703865009
对随意节点选择的假设可以让“隐性共识”(inplicit consensus)成为可能。我们的共识协议有多个回合,每个回合都对应着区块链里的一个块。在每一个回合里,一个随机节点会被选中,然后这个节点可以提议这个链的下一个区块。这时没有共识算法,也没有任何投票过程来决定哪个区块会被选中,随机被选中的节点会直接决定区块链的下一个区块,但万一这个节点是恶意的呢?针对这个问题,还是有应对办法的,解决方法就是隐性共识。其他节点可以通过隐性地接受或是拒绝前面这个被随机选择出来的节点。如果接受,它们会在这个块之后接龙下去;如果拒绝,它们忽略这个新的区块,而是选择前一曾经接受的区块,来继续接龙下去。大家还记得,每一块都记录着前一块的哈希值。这就是节点选择在哪一块来继续接龙的技术处理方式:比特币共识算法(简化版)。
1703865010
1703865011
这个算法的简化假设是,可以随意选择一个节点,这些节点都不会受到女巫攻击的影响。
1703865012
1703865013
1.新的交易被广播到所有节点上。
1703865014
[
上一页 ]
[ :1.703864965e+09 ]
[
下一页 ]