1.2 计算模式的演变
在计算机出现以后,计算技术领域经历了3个重要阶段:以大型机等主机为主的集中式计算模式,以微型机为主的桌面计算模式和以网络为主的分布式计算模式 [2]。计算模式随着计算机科学技术的发展而演进,同时也推动了人类社会由工业革命时代迈向信息革命时代。
1.2.1 分布式计算的出现
20世纪60年代,大型计算机的出现开启了信息化革命的前奏。信息革命的深入使得成本昂贵的中央计算模式不能满足经济发展所需要的广泛信息处理需求。随后在20世纪80年代,个人电脑分散计算模式登上历史舞台,极大地推动了信息化技术和应用的普及。客户/服务器计算模式出现后,个人电脑分散计算模式就从当初的主要计算能力提供者降低为网络客户终端的计算能力提供者。个人电脑的计算能力有限,加上在可靠性、可管理性和安全性等方面都存在很大问题,使其不能适应信息社会发展的需要。用户迫切需要将分散的计算资源连成网络,以较低成本共享计算资源与处理能力,实现大范围协同工作。在这种情况下,分布式计算技术受到关注并得到很大发展,使得计算模式又一次发生变革——从个人电脑的分散计算模式进入了分布式计算模式。
和集中式中心化计算以及个人电脑分散式计算模式不同的是,分布式计算将一个任务拆分成多个任务,放在多个节点上并行执行,这样大大提升了运行效率。但分布式计算也带来一些问题,我们将在下面讨论。
1.2.2 分布式计算的挑战
分布式计算系统面临的挑战是:网络环境下,故障情况发生是常态——网络可能会断网,节点可能宕机,特别是公共互联网上还存在着蓄意破坏的节点或者被木马、病毒植入的节点。在这种经常发生故障的环境里面,需要分布式共识算法来解决系统的一致性问题,以保障分布式系统中各节点能够协作。从20世纪80年代开始,计算机科学家们就已经开始了分布式共识算法的研究。科学家们发现,在任何一个有故障节点存在的异步通信网络环境中,理论上找不到一个确定性的共识算法,能在有限时间内让所有非故障节点达成一致。这个看上去非常严苛的理论限制并不能停止科学家们研究共识算法的步伐。相反,科学家们根据实际的应用场景,特别是把异步通信的条件放宽,引入同步、半异步、消息认证机制等网络通信条件,设计出了不同的实用共识算法。
之后科学家也发现,在一个可能发生故障的分布式网络中,不可能同时达到一致性、可用性和分区容错性的目标。
分布式系统的这些局限使得架构师在设计分布式系统的时候,往往需要根据实际情况做权衡取舍。一般来说,传统企业计算强调强一致性,因此所设计的分布式系统需要牺牲可用性以换取强一致性和分区容错性。谷歌GFS系统的设计就采用了这个思路。而另一方面,在互联网那样对可用性和扩展性要求高的分布式环境中,传统计算模式中强一致性至关重要,往往需要弱化成“最终一致性”。例如亚马逊AWS的Dynamo分布式数据库,就牺牲了强一致性来换取可用性和分区容错性。
因此,共识算法也分为“强一致性”共识算法和“最终一致性”共识算法。“强一致性”共识算法又分成可以容忍宕机或宕机恢复故障的Paxos家族共识算法,和可以容忍任意节点故障(也称为拜占庭故障)的BFT共识算法。“最终一致性”共识算法容忍网络状态的暂时性不一致,例如比特币的PoW共识机制。例如在某一时间,比特币网络可以有暂时性的分叉,但随着时间的推移,其协议设计思路是正常的节点会跟随最长的链条,从而解决暂时性不一致的分叉问题。
科学家在分布式共识算法上所取得的成果,加上在密码学和P2P网络上的研究进展,奠定了后面区块链架构的技术基础。
1.2.3 比特币“突围”
1.比特币的诞生与传播
2008年9月,以雷曼兄弟的倒闭为开端,金融危机在美国爆发并向全世界蔓延。为应对危机,各国政府采取“量化宽松”等措施,救助由于自身过失陷入危机的大型金融机构。这些措施带来了广泛的质疑,并一度引发了“占领华尔街”运动。
2008年10月31日纽约时间下午2点10分,在一个普通的密码学邮件列表中,几百个成员均收到了自称是“中本聪”的人发的名为《比特币:一种点对点的电子现金系统》(Bitcoin: A Peer-to-Peer Electronic Cash System)[3]的电子邮件,其中描述了一个新的货币体系。同年11月16日,中本聪放出了比特币代码的先行版本。
2009年1月3日,中本聪在位于芬兰赫尔辛基的一个小型服务器上挖出了比特币的第一个区块——创世区块(Genesis Block),并获得了首个区块奖励——50个比特币。在创世区块中,中本聪写下这样一句话:
“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”(“2009年1月3日,财政大臣站在第二次救助银行的边缘”)
这句话是当天《泰晤士报》头版的标题。中本聪将它写进创世区块,不但清晰地展示着比特币的诞生时间,还表达着对旧体系的嘲讽。正是比特币的出现使得区块链正式进入了公众视野。
如今,比特币已经成为数字货币领域的翘楚,拥有数千亿美元的市值,但中本聪却于2010年12月选择隐退。中本聪是谁?这是每一个开始了解比特币的人都感兴趣的话题。从《纽约客》到《新闻周刊》,媒体们找到了数个自称是中本聪,或者被认为是中本聪的人。但无一例外,这些发现都因为可信度不足,受到公众的质疑。中本聪是谁,也许我们永远不得而知。
2.比特币价值发展历程
比特币创始之初,在很长时间内只在技术工程师之间以娱乐为目的进行流通,只能属于一种“玩具货币”。第一笔比特币交易发生于2009年1月12日,中本聪发送了10比特币给密码学专家哈尔·芬尼。2010年5月21日,佛罗里达程序员用1万比特币购买了价值25美元的比萨优惠券,随着这笔交易诞生了比特币第一个公允汇率。自此以后,比特币与实物的交换以这种间接模式慢慢开始。据CoinDesk估算,目前全球大约有60000个商家接受比特币。表1-1概括了比特币的发展历程。
表1-1 比特币的发展历程
3.比特币的交易
比特币使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为。图1-1是中本聪在其比特币白皮书中的示例。图中,每笔交易的输入都来自过去未花费的某笔交易的输出(比特币里叫UTXO),该笔输出有接收人的地址。当所有者2要将他的比特币转给所有者3时,他首先将他从所有者1那里接收到的比特币作为输入,然后将所有者3的地址放在交易的输出部分,最后在交易中有自己的私钥签名,并附上自身的公钥。在交易验证的时候,矿工将检查所有者2的签名是否和他的公钥匹配。由于每笔交易单都记录了该笔资金的前一个拥有者、当前拥有者以及后一个拥有者,我们就可以依据交易单实现对资金的全程追溯。这也是比特币的典型特征之一。最后,当每一笔交易完成时,系统都会向全网进行广播,告诉所有用户这笔交易的实施。
图1-1 比特币的交易过程示意图
由于每笔交易是相对分散的,为了更好地统计交易,比特币系统创造了“区块”这一概念。每个区块均包含以下3种要素:一是本区块的ID(哈希值);二是若干交易单;三是前一个区块的ID(哈希值)。比特币系统大约每10分钟创建一个区块,其中包含了这段时间里全网范围内发生的大部分交易。每个区块中也包含了前一个区块的ID,这种设计使得每个区块都能找到其前一个区块,如此可一直倒推至起始区块,从而形成一条完整的交易链条。因此,从比特币的诞生之日起,全网就形成了一条唯一的主区块链,其中记录了从创世区块诞生以来的所有交易记录并以每10分钟新增一个区块的速度扩展。这条主区块链在每添加一个区块后,都会向全网广播,从而使得每个参与比特币交易的主节点上都有一份拷贝。在现实世界里,每笔非现金交易都由银行系统进行记录,一旦银行计算机网络崩溃,所有数据都会遗失。而在互联网世界里,比特币的所有交易记录都保存在全球上万台计算机中,只要全球有一台装有比特币程序的计算机还能工作,这条主区块链就可以被完整地读取。如此高度分散化的交易信息存储,使得比特币区块链上交易完全遗失的可能性变得微乎其微。
1.2.4 比特币的局限
比特币的区块链系统自2009年在互联网上开源运行以来,有成功的地方,但也显示出一些难以克服的内在缺陷。
1)按中本聪的设计,比特币约每10分钟出块,每个块的容量定为1MB,因此理论上每秒只能确认7笔交易,这和大部分的商用系统所要求的交易吞吐率有很大的差距。对比之下,Visa的网络系统每秒最快可处理10000笔交易,支付宝的记录是2014双11购物节每秒80000笔。因此,当比特币使用者增多时,交易排队等待打包的时间会很长。
2)比特币当初的设计是“每个CPU一票”,强调公平,但随着比特币价格的攀升,挖矿成了暴利行业,矿机厂商开始推出专用芯片(ASIC),通用CPU或GPU挖矿被淘汰,个人挖矿已经无利可图,矿池越来集中,到现在全球70%的算力集中在前五个最大的矿池中。矿池算力的过度集中使得原来中本聪去中心化的设计名存实亡,因为矿池主的话语权大增,他们可以随意分叉比特币。2017年比特大陆支持的比特现金(BCH)分叉就是一个典型的例子。
3)比特币的挖矿是高能耗产业。据统计,目前比特币挖矿的一年耗电量,已经超过爱尔兰整个国家一年的耗电量。挖矿行为演变为“军备竞赛”增加了比特币体系的资源消耗。随着时间的推移和竞争的加剧,整个比特币产业链将成为极端资本密集型行业。
4)由于比特币的PoW共识机制是“最终一致性”共识机制,因此比特币的交易确认基于概率,缺乏最终确认性。在破坏者算力超过50%时候,比特币的交易有可能被推翻,比特币有可能被“双花”。这就是常说的比特币存在所谓的“51%算力攻击”的威胁。在矿池算力高度集中的今天,这个威胁并不遥远。
5)比特币加大了金融监管的难度。在传统金融监管过程中,几乎所有国家都非常依赖银行系统来查验交易的资金进出。而比特币独立的支付网络则有效地躲开了这种追查途径,使得国家监管资金动向非常困难。由于其匿名特性,比特币成为犯罪资金的主要载体,在许多非法网站上,甚至成为唯一的支付手段。