希腊城邦问题与拜占庭将军问题中如何达成共识?

上回《我们一起来制作“加密数字货币”》我介绍了比特币如何记录交易流水以及为啥要用区块链打包交易流水,基本上把比特币或者大部分加密数字货币的数据存储方式给介绍完了。在文章尾巴,我提出了如何干掉阿土伯这个中心人物(中心化机构)的问题,因为只有最后实现去中心化,创建密码货币的理想才能最终实现。

关于去中心化和信任的深入思考

现在人们谈起区块链技术必然把去中心化当作其内在属性,我完全不同意这样的看法。阅读前九篇的朋友相信已经大致了解了一些基本技术原理了,区块链这种数据结构本身具备的是一种难以篡改的数据记录方式,而这种难以篡改并不是真的不能改,而是需要较大的成本才能改,尤其是时间越久,区块链条越长,更是积重难返。

区块链修改数据

如果我们再深入一点进行思考,我们会发现去中心化和中心化本身的界限就很模糊。如果说比特币是去中心化的,但是比特币交易所、比特币钱包以及比特币矿池就是某种程度中心化的。而说微信和支付宝是中心化的,但其实它们的海量数据都是采用分布式数据库,在这个层面却是去中心化的。我们经常使用的电子邮件,其源头就是一个去中心化设计,每个人其实都可以把自己的上网电脑设置成独立的邮箱,但是现在大家用的QQ邮箱、网易邮箱、google邮箱都是中心化的。所以,对于中心化和去中心化,从不同角度观察和理解的话结论可能并不一致。因此我们要说去中心化,应该是从我们关注的角度去评价,例如对于把阿土伯干掉,形成去中心化的货币(比特币)来说,我们关注这样几个问题:

1、谁在维护交易账本?

2、谁有权批准哪个交易是正当有效的?

3、谁在制造新的比特币?

4、谁在制定系统变化规则?

5、比特币是如何取得交易价值的?

(这五个问题来自普林斯顿大学Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, Steven Goldfeder等四位教授编著的网络课程教材《Bitcoin and Cryptocurrency Technologies》,特此注明,请转载者也注明出处)

还有一种说法是区块链技术实现了去中心化的信任,甚至有说是区块链技术实现了”去信任“。这里说的信任在社会科学中,被认为是一种依赖关系。值得信任的个人或团体意味着他们寻求实践政策,道德守则,法律和其先前的承诺。卢曼给信任定义为:“信任是为了简化人与人之间的合作关系。”而这种信任是有风险的,信任他人意谓着必须承受易受对方行为伤害的风险,因此,承担易受伤害之风险的意愿也是信任之核心。(这四句摘自维基百科信任辞条)“去信任”的意思就是去掉了风险的信任,也就是无条件信任。

trust

喜欢研究历史和社会制度的朋友,应该能够理解构建一个信任体系对降低整个社会运行成本有着非凡的意义。回到关于区块链技术实现了信任或者“去信任”的说法,都是想说区块链技术从技术层面实现了可以无条件相信。对此我也不完全同意。因为区块链技术解决了信息不对称造成的信任风险,但还有其他相关技术和规则的相互配套才近似的达成最大化降低信任风险。

 

关于共识的深入思考

对于比特币这个区块链技术目前最成功的应用来说,中本聪想要实现的是一个没有中心机构的,所有参与节点都是匿名身份的情况下对三个方面达成共识的目标。如果说共识是信任的基础,那么在这方面比特币几乎实现了。

这三个方面的共识是:(这三个共识来自普林斯顿大学Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, Steven Goldfeder等四位教授编著的网络课程教材《Bitcoin and Cryptocurrency Technologies》,特此注明,请转载者也注明出处)

1、关于规则的共识。这里说的规则是指包括确保交易或区块有效的机制,及比特币运行时涉及的核心协议和数据格式等内容。人们需要就这些规则达成共识,这样,比特币系统中的所有参与者才能就发生的情况相互沟通并达成协议。

2、关于历史记录的共识。参与者必须对区块链的内容,包括哪些是属于区块链,哪些是不属于区块链的内容达成共识,这样,人们才能就如何确认已发生的交易达成共识。这是比特币中最常用且技术上最复杂的一种共识。

3、关于比特币价值的共识。这要求所有参与者普遍认为比特币是有价值的,这是作为任何一种货币赖以生存的基础。

最重要的一点是这三个共识之间是相互关联的。比特币原始设计的天才之处就在于,它意识到靠自己本身很难达成这三种共识的任何一种。而比特币能活到现在(9年了),我认为有非常大的幸运成分,因为在没人关注的时候,它开始悄悄积累自己的历史共识了;在开始被人关注的时候,它开始具备一些人的价值认同了;而当历史和价值认同起步的时候,规则共识似乎先天就具备了。

比特币大事记

比特币的出现与越来越接近成功是一个历史机缘巧合的过程,没有前20年的屡败屡战,没有中本聪的匿名(许多参与比特币专家认为因为中本聪的匿名,让专家们从心理上就没有那么强的产品技术属于谁的感觉,这其实也算是一种去中心的设计,从而让这些人在为比特币保驾护航中贡献了极其重要的智慧),没有全世界政府和金融机构前面几年疏忽大意,给了比特币积攒共识的时间,很难想象还有另外一个历史时期会出现同样的东西。

比特币大事记

2010年12月5日,在维基解密泄露美国外交电报事件期间,比特币社区呼吁维基解密接受比特币捐款以打破金融封锁。中本聪表示坚决反对,认为比特币还在摇篮中,禁不起冲突和争议。七天后的12月12日,他在比特币论坛中发表了最后一篇文章,提及了最新版本软件中的一些小问题,随后不再露面,电子邮件通讯也逐渐终止。可见,中本聪对比特币最终成功并不认为靠技术就行,还需要一定的时间生长,现在中本聪再也不出现了,近八年围绕比特币的冲突和争议有增无减,比特币去年曾经爆涨到2万美金,他的账上的比特币一直没有动用过,不知道他是不是还认为比特币还没成熟呢?还是已经成功了?

在目前关于区块链的讨论中,不管是学术论文,还是媒体文章,普遍把比特币目前实现的这三个共识当作了区块链技术实现的无风险信任体系,通过前面的介绍希望朋友们能分辨出这些误解,并对那些低估区块链应用落地的难度而大肆宣传的投资产品有理性认识。

 

关于技术层面的共识

我们现在可以说比特币所达成的三个方面的共识不能都归功于技术,更不能说归功于区块链技术。但是天才的技术发明和巧妙应用确实为比特币实现共识提供了最坚实的基础,区块链作为数据结构可以算作技术载体,与不同的数据处理技术组合就会实现不同的应用目标。作为本偏技术原理的漫谈科普系列,自然要把比特币在技术上如何构建共识要说清楚。

从技术层面看,对于中心化的系统,形成共识不是什么技术问题,而且形成共识的效率也会很高。但是对于没有中心机构或节点的系统来说(在计算机网络通讯领域称之为分布式系统),如何形成共识就是一个超级技术难题了。所以说中本聪在比特币上实现的成就意义非凡,而其中技术层面就有突破性的创造发明。

莱斯利·兰伯特(Leslie Lamport)

上面照片中头发胡须白成一片的是计算机科学史上的传奇人物莱斯利·兰伯特(Leslie Lamport)。作为研究分布式系统的先锋人物,微软研究院首席研究员,他为提升计算机系统的可靠性以及稳定性做出了杰出贡献,因此他获得了2013年图灵奖——计算机界的诺贝尔奖。他在1978年发表的论文《分布式系统内的时间、时钟事件顺序(Time, Clocks, and the Ordering of Events in a Distributed System)》成为计算机科学史上被引用最多的文献。可以说,只要你在使用建立在分布式系统上的互联网,你就该感谢这位伟大的科学家!

对于分布式系统达成共识的研究,最早的应用就是提高分布式系统的可靠性。我们熟悉的微信这些社交网络公司的后台,通常有几千台甚至几万台服务器组成了一个巨大的分布式数据库,数据库记录了这个系统发生的各种活动,而每条信息都会被记录在若干个节点上(说直白一点,就是多个备份),对于整个系统,所有这些节点必须要做到同步更新数据。但由于每个节点(服务器)有可能宕机或通讯出现问题,不能及时在线,这就需要一个机制(术语叫做算法)来解决这种情形下那么多个节点如何对数据达成共识。

兰伯特曾说,是故事让问题变得受欢迎,因此他在提出观点和问题时常用故事背景吸引眼球。他虚拟了一个叫做Paxos( 希腊西南部一个风景如画的小岛的名字)的希腊城邦,这个岛按照议会民主制的政治模式制订法律,但是没有人愿意将自己的全部时间和精力放在这种事情上。

希腊的Paxos岛(帕克西岛)

希腊的Paxos岛(帕克西岛)

所以无论是议员,议长或者传递纸条的服务员都不能承诺别人需要时一定会出现,也无法承诺批准决议或者传递消息的时间。但是只要等待足够的时间,消息就会被传到。另外,Paxos岛上的议员是不会反对其他议员提出的决议的。

对应于分布式系统,议员对应于各个节点,制定的法律对应于系统的状态或某节点增加修改删除信息的提议。一致性要求对应于法律条文只能有一个版本。议员和服务员的不确定性对应于节点和消息传递通道的不可靠性。这种模型与前面说的社交网络后台的分布式数据库非常相似,兰伯特在 1990年提出的这种基于消息传递且具有高度容错特性的一致性算法——Paxos算法,并且用数学证明了这个算法。这个算法及其变种在大型系统中大大有名,应用非常广泛。可是这种算法应对的场景仅考虑了节点和通讯的可靠性问题,并没有考虑节点有可能是叛徒会故意捣乱。

加入节点可能会故意捣乱这个假设,那么Paxos算法就不管用了,而这种场景可以说是分布式系统最严格的模型,兰伯特在研究这个难题时又编出的一个故事,就是著名的拜占庭将军问题。他是这么说故事的:

拜占庭将军问题

一组拜占庭将军分别各率领一支军队共同围困一座城市。为了简化问题,将各支军队的行动策略限定为进攻或撤离两种。因为部分军队进攻部分军队撤离可能会造成灾难性后果,因此各位将军必须通过投票来达成一致策略,即所有军队一起进攻或所有军队一起撤离。因为各位将军分处城市不同方向,他们只能通过信使互相联系。在投票过程中每位将军都将自己投票给进攻还是撤退的信息通过信使分别通知其他所有将军,这样一来每位将军根据自己的投票和其他所有将军送来的信息就可以知道共同的投票结果而决定行动策略。

这个问题难点在于,首先将军中可能出现叛徒,他们不仅可能向较为糟糕的策略投票,还可能选择性地发送投票信息。假设有9位将军投票,其中1名叛徒。8名忠诚的将军中出现了4人投进攻,4人投撤离的情况。这时候叛徒可能故意给4名投进攻的将领送信表示投票进攻,而给4名投撤离的将领送信表示投撤离。这样一来在4名投进攻的将领看来,投票结果是5人投进攻,从而发起进攻;而在4名投撤离的将军看来则是5人投撤离。这样各支军队的一致协同就遭到了破坏。

其次是由于将军之间需要通过信使通讯,叛变将军可能通过伪造信件来以其他将军的身份发送假投票。而即使在保证所有将军忠诚的情况下,也不能排除信使被敌人截杀,甚至被敌人间谍替换等情况。因此很难通过保证人员可靠性及通讯可靠性来解决问题。

研究对应这种模型的算法,目标是假始那些忠诚(或是没有出错)的将军仍然能通过多数决定来决定他们的战略,便称达到了拜占庭容错。故事映射到计算机系统里,将军便成了计算机,而信差就是通信系统。我们说在社交网络后台的分布式数据库中的服务器,都是由公司统一部署运维的,所以在那个模型里不用考虑节点(服务器)的忠诚问题。而在互联网上实现一个虚拟货币,还要把阿土伯给去掉,那如何能形成共识的算法就是一个极端严格的拜占庭将军问题,类似的那些有高度安全要求的系统中,如波音777或者航天飞机的系统中,就需要用这样的假设并要求证明错误能在一个合理的档次下被排除。

可惜的是针对拜占庭问题的深入研究后,科学家们得出一个结论:如果叛徒的数量大于或等于1/3,拜占庭将军问题不可解。

今天我们从去中心化说到拜占庭将军不可解,科普了数学在各种领域的重要性,没有数学理论的支持,我们很难对一个事物能够有足够的信心。密码学的基础是有严格的数学证明,可是分布式系统的共识在遇到严格的拜占庭将军问题时出现了不可解,在如此背景下,大神中本聪明知山有虎,偏向虎山行,发明出来的比特币技术架构在解决分布式共识方面让专家们大跌眼镜。9年以来,比特币的分布式共识运行良好,实际运行情况远比理论上告诉我们的要好很多。这在于中本聪打破了经典模型中的一些假设,其一是引入的奖励机制,其二是比特币体系整体包含随机性这个概念。(这部分将是本系列第二季的重点)1

但是对于加密数码货币这样的模型我们还没有建立起完备的数学理论去解释这一切(包括为何比特币能运行如此良好),无论如何,完善理论对将来的发展还是十分重要的。因此,我认为现在区块链热不应该集中在投资热和颠覆行业热上,这反映出的是一种投机与焦虑,我认为应该有更多的人去探索背后的理论,因为理论可以让我们预测甚至防范未来可能遇到的攻击和问题。

 

 

(本篇首发于2018年3月28日微信公众号geekszone

 

注释:

1、本系列开始作者计划先写10篇,所以当时把前十篇当作第一季。


Warning: printf(): Too few arguments in /home/geekszon/public_html/wp-content/themes/simplelin/inc/template-tags.php on line 76

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据