区块链先锋门户

验证

火星专栏 | 曹锋博士谈公链:从“脱欧”与“惊世DAO窃”谈区块链——论共识、分叉、去中心化与安全

曹锋

发布时间: 2018-04-08

关键字:火星专栏,区块链,曹锋

收藏

120558

2018年是公链角逐的关键一年,从比特币到以太坊,区块链公链生态一直在发生进化。区块链的技术之争归根到底,就是公链的底层技术之争——公链的优化、安全与效率之争。下面,我们追随历史事件先来普及一下“区块链的共识、分叉、去中心化与安全”等知识。

2018年是公链角逐的关键一年,从比特币到以太坊,区块链公链生态一直在发生进化。区块链的技术之争归根到底,就是公链的底层技术之争——公链的优化、安全与效率之争。下面,我们追随历史事件先来普及一下“区块链的共识、分叉、去中心化与安全”等知识。

英国脱欧和区块链项目The DAO攻击事件

距离英国完成脱欧的最后截止点(2019年3月底)只剩不到一年的时间,回溯2016年6月23日英国经过全民公投决定脱离欧盟(简称“脱欧”)的事件,整个世界政治与经济格局都随之产生了深远的变化。显然,全民公投是一种达成共识的方式。在脱欧结果公布6小时后,谷歌发布数据显示,英国人热搜的第二大问题是“欧盟是什么”,搜索量暴涨24.5倍。这说明很多人在并不知道欧盟是什么的时候,就草率地进行了投票。在重新理解“欧盟是什么”以后,他们才发现当初所做出的投票并不能真正反映本来的意愿。次日,超过百万的英国人联名希望进行第二次公投。

恶毒.jpg

同年5月,全球最高众筹纪录的区块链创业项目The DAO,仅凭白皮书就募集到约10亿元人民币的资金,这说明大家对该区块链项目有着超级乐观的前景预期。2016年6月17日,黑客发动攻击,利用The DAO中的漏洞,鲸吞超过300万个以太币(市值3.9亿元人民币)。这就是全球区块链产业发展过程中著名的Dao攻击。也正是因为这次攻击,以太坊的创始人Vitalik在软分叉与硬分叉的技术讨论和建议中变得焦头烂额,避免黑客把所盗取的以太币成功转移,引发了大量的质疑。百般无奈之下,为了挽救TheDao投资者的损失,最后决定硬分叉。

事实上,在The DAO项目众筹前、中、后期,就不断地有人指出其设计的漏洞,呼吁暂时停止项目众筹。但由于各种原因,这些警告都没有引起The DAO项目团队的足够重视,进而引发了Dao之“盗”。原本可以避免的一场盗窃,折射出了人性的贪婪。

人类社会取得共识的脱欧事件和区块链世界里The DAO攻击事件,看似无关,却正是区块链领域里讨论最激烈的“共识与分叉、中心化与去中心化”问题。作者希冀借助脱欧与The DAO事件,把这几者之间的区别与联系阐述清楚。

人类共识需要付出代价

人类的东西之所以有价值,就在于共识。人不是单独的存在,而是具有强烈的社会属性,相互之间产生着各种联系。大部分交易和交换都需要人和人之间的交流和沟通,目的很多时候就是为了达成共识。如何才能达成共识?第一个层面是语言上的共识。第二个层面是语义上的共识。第三个层面是执行上的共识。即在一致的语言环境下,在理解和认知后,人们去真正执行所达成的预期结论。但实际执行过程中通常会出现偏差,早先没有考虑到的情况频现,为此,人们需要重新形成新的共识。

脱欧公投结果公布后,许多人希望进行二次公投,因为他们并不解脱欧到底意味着什么,脱欧的影响和意义又是什么。人们需要基于一定的认知,才有可能做出真正代表自己意愿的投票,最后取得符合大家意愿的共识。所以,分歧的产生也导致共识很难达到。

通常,人类需要付出巨大的代价来形成共识。例如,全民公投脱欧相当费时、费力。首先要动员全民让人们知道此事并形成合理的认知;其次,组织人们投票;再次,对投票信息进行收集、整理、分类和计算;最后,通过投票数得出是否脱欧的结论。看似简单的全民公投,或者说取得共识的过程,其本身所需要付出的代价可能远远超出我们的想象。

区块链共识是人类共识的简化

链就是建立共识,而这个共识就是大家都信任的标准,然后牢固地、不可更改地记录下形成共识的这一切。 区块链世界里,最长的那条链代表了真理,所有的人都会接受;其它分支都是分叉。区块链的链条形成过程中会不断有新分叉产生,分叉与分叉之间是一种竞争关系,只有最长的那支才能存活下来,并被所有人认可。这就是区块链世界里的优胜劣汰,也构成了区块链世界里的共识。

共识的反面是“分歧”。“分歧是一切问题、一切争端、一切战争的根源”。为什么会产生分歧?一是因为在达成共识的过程中,并没有真正形成内涵和外延的共识;二是即便形成共识后,人们并没有按照共识机制所产生的结论真正去执行,这些分歧则造成了非真正意义上的共识。区块链网络里的各节点运行的程序是一致或兼容的。一旦某个最新的区块生成后,便实时同步到所有或者绝大多数的节点里。也就是一旦形成共识之后,则需要保证被真正地执行下去。只有这样,才能确保所有的区块链网络永远保持共识。

随着The DAO事件的发酵,让大家越来越多地关注到分叉这个词。从技术的角度来讲,分叉又可以分为软分叉和硬分叉。使用“硬分叉”意味着将会回滚所有交易到被盗之前的某个时间点。使用“软分叉”就等于封闭所有来自攻击者地址的交易。简单来说,通过主动的分叉技术,让好人和攻击者产生分歧,让攻击者产生的恶意交易的那个分支,不被大多数(好)人所认可。 

拜占庭将军:中心化与去中心化孰优孰劣

如果更加全面和客观的角度来剖析The Dao事件,某种意义上来看The Dao是自比特币后最重要的一个社会实验。在一个所有人都习惯了中心化管理的世界中,如何实现去中心化的管理组织呢?去中心化的分布式系统终究绕不过的一个难题是“拜占庭将军问题”,它是假设拜占庭将军中好人占大多数的一个经典问题。拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:

(1)欺骗某些将军采取进攻行动;

(2)促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;

(3)迷惑某些将军,使其无法做出决定。若叛徒达到了这些目的任何一个,则攻击行动的结果都是注定要失败的,只有完全达成一致的共识才能获得胜利。

“拜占庭将军问题”是一个建立于共识机制解决的实例,涉及中心化和去中心化。如果是中心化的解决方案,无非是人们共同选出一些人作为将军,然后这些将军来讨论、投票,直到最高统帅综合各方面因素做出最后决定;而去中心化的解决方案,则是把所有的人都作为将军,每个人都直接参与最终决策。

值得注意的是,分布式与去中心化两个概念常常容易被混淆,大家甚至会片面地认为分布式等同于去中心化。事实上,分布式可能是中心化的,而集中式也可能是去中心化的。例如,要求所有选民到同一个地方进行全民公投。有趣的是,选出代表进行决策和全体人员来直接做决策,这两种方式最终得出的决策哪种更优?在不同领域和不同角度考量,答案也是值得商榷的。

中心化与去中心化下的脱欧结果

如果以上问题映射到数据挖掘和机器学习领域。“全体人员”对应的是“全样本数据”。“选出代表”对应的是经过筛选的“样本数据”。“得出的决策”对应的是“生成的模型”。我们会意外发现,基于全样本数据所生成的数据模型,其质量可能并非是最高的。反而是那些基于筛选样本学习出来的模型更为有效。原因很简单,当采用全样本时无法避免引入一些额外噪音,准确的说全样本有时并不利于算法生成符合现实数据分布的模型。当除去噪音后,学习出来的模型反而更为精准。这就是人们为什么在数据建模前经常需要做数据清洗操作的统计学原理。

这种差异性在脱欧事件中表现得尤为明显。我们可以看到,在英国北部和南部的分歧非常明显。北部的苏格兰和爱尔兰大部分地区非常支持留欧(黄色),而在南部地区的大多数人选择脱欧(蓝色)。从全体英国人(全样本)来说,选择脱欧的人占据了大多数。而在这个过程中,局部特征和全局统计之间的矛盾非常明显。如果用中心化或者去中心化的方法,得出来的结论可能完全不一样。

gfh.png

而在区块链领域,去中心化的主要优势体现在支持“点对点”的直接交易,以众多弱信任节点构建强信任关系。而在中心化的解决方案,中心往往成为整个系统的“瓶颈”,并成为系统最容易遭受攻击,牵一发而动全身的薄弱环节。为了让中心具备足够的处理能力、吞吐量、安全和可靠,人们往往需要购买非常昂贵的设备。

软硬分叉与去中心化并不矛盾

分歧或者分叉与去中心化是一种什么样的关系呢?二者之间的确没有必然联系。从The DAO事件上来看,由于分叉的建议是Vitalik为代表的以太坊基金会呼吁的。所以,人们可能会认为“这不是形成了新中心吗?”值得注意的是,这种呼吁和倡导与真正意义上的中心化是有本质区别的。人们是否真的进行软分叉或硬分叉,取决于在所有参与建设和运营以太坊网络中的每一个人。正如Vitalik在公开回应中所表达的,“我不会阻止也不会反对另一方在公开场合宣传他们的观点,甚至是游说矿工来抵制这个软分叉。在这件事情上,我会坚决的不与任何站在相对的另一方的人进行争辩。”

其次,在The DAO事件的过程中,有非常多的关于“以太坊区块链是不是它所标榜的去中心化网络”,甚至有“以太坊区块链停止”的传闻。因为,比特币矿机和矿池的出现,让原本去中心化的比特币设计,出现了算力中心。这些算力中心对于比特币网络的影响巨大。所以,以太坊希望进行一种新设计,考虑更多去中心化的手段,降低未来有人专门设计、制造以太坊矿机的可能性。它采用的原理非常简单,就是让基于以太坊区块链的区块计算必须基于比较大的内存。现有的,可直接在比特币系统上进行Hash计算的矿机都没有办法进行这样的大内存计算。从而,让制造以太坊矿机的成本变得非常高,尽量避免中心化的挖矿方式。

当然我们必须得客观地看到比特币和以太坊的生态体系对比,比特币还是占据了压倒性优势。从Hash算力角度,比特币当前网络的平均算力约为1,500,000TH/S,以太坊算力为4TH/S,有4百万倍的差距。对于比特币来说有矿池过于集中的问题,有国内专家很乐观地看待这件事情。另一个事实是,绝大多数的比特币矿池建设在中国。这对于中国提高在比特币虚拟世界的影响力是有帮助的。个人认为,绝对的中心化和绝对的去中心化都是不可取的,需要根据具体的场景找到一个适当的平衡。尤其是,现在火热的区块链,更多的都不是基于比特币现有的区块链设计。比特币的价格回归,某种角度来说是由于人们对区块链技术的前景看好。

The DAO的安全警示在中间层和应用层

The DAO事件中人们最关注的话题就是安全性问题,所有的安全性都是需要分层次的。从下图可以看出,在以太坊生态体系中,最底层是以太坊虚拟机EVM。中间层是支持应用编程所需要的编程语言或脚本,像Solidity、Python、Go,等等。最上层就是由Solidity等语言所编写的各种应用程序。例如,The DAO就是属于一个以太坊的应用程序。这个架构类比到我们现在所熟悉的IT生态体系,最底层是人们所熟悉的各种操作系统Windows、Linux、UNIX,等等。例如,如果是手机生态系统,其对应的是苹果的IOS和安卓的Android系统。中间层是各种各样的编程语言,比如Java、C++、Python,等等。最上层是各种应用程序,比如,像淘宝、微信等。

rr.png

层次划分后就很容易追溯问题。The DAO被盗和以太坊EVM之间没有必然的联系。正如在使用淘宝或者微信时出了一个安全性问题,突然莫名其妙的死机了,我们并不一定能够直接怪罪到Windows或者IOS上。当然,由于底层系统自身的漏洞,也会造成上层应用程序的安全性问题。所幸的是,在The DAO事件里,安全漏洞并没有出现在底层的EVM,而是基于Solidity编程语言的一个递归调用漏洞。就像Java语言上出了一个bug,而导致淘宝或者微信程序的死机,这个安全性问题与Windows或者IOS并没有关系。

结语

综上所述,公链当前面临的最大问题是安全和效率的矛盾,即如何在去中心化和效率之间找到平衡,这不仅比拼技术,更考验系统整体设计能力。有些项目先天架构就有问题,开发一段时间后积重难返,要改变很难,除非重构整个系统。从公有链层面来说,它摆脱了中间机构的限制,建立了一种点对点的信任范式。从联盟链角度下,它的共识方式更多的是基于拜占庭容错机制,由于它是多中心的,互相之间有制衡,通过建立分布式账本,参与方任何一方要篡改记录的可能性就很小。


本文为火星财经原创稿件,版权归火星财经所有,未经授权不得转载,转载须在文章标题后注明“文章来源:火星财经”,若违规转载,火星财经有权追究法律责任。

本文来源: 火星财经

相关新闻
相关新闻