区块链是一种去中心化的、不可篡改的、可信的分布式账本,它提供了一套安全、稳定、透明、可审计且高效的记录交易以及数据信息交互的方式,其特点如下(参见图1-12):
(1)高度安全,不可篡改的分布式账本。
(2)存在于互联网,向所有用户公开。
(3)帮助人与人、物与物之间实现点对点的交易和互换。
(4)无需第三方的介入即可完成价值的交换。
图1-12 区块链的特点
区块链可以存储数据,也可以运行应用程序。目前区块链技术主要应用在存在性证明、智能合约、物联网、身份验证、预测市场、资产交易、文件存储等领域,如图1-13所示。随着区块链技术的快速演变,新的技术在不断结合,从而创造出更有效的应用解决方案。
图1-13 区块链的应用领域
2008年,化名为中本聪的人发表了论文《比特币:一种点对点的电子现金系统(Bitcoin: A Peer-to-Peer Electronic Cash System)》,首次提出了区块链的概念。
2009年,比特币开始在一个开源的区块链上运行,这是人类历史上的第一个区块链。比特币是区块链的首个应用。
2012年,瑞波(Ripple)系统发布,利用数字货币和区块链进行跨国转账。
2013年9月,美卡币(MEC)区块链发生断裂,在数据更新中断1天后,发布了新版本,重新接回一条区块链,艰难复活。
2014年4月,奥斯汀·希尔(Austin Hill)和亚当·贝克(Adam Back)披露,开始在比特币区块链的基础上打造侧链(Sidechain);5月,Storj宣布将采用区块链技术为客户提供去中心化的存储服务;6月,搜索引擎DuckDuckGo接入区块链查询;8月,Coinbase收购区块链信息浏览服务商Blockr.io,区块链API服务提供商Chain获950万美元A轮投资;10月,Tilecoin团队发布首个集成区块链技术的物联网实验设备。
2015年,大量银行和传统金融机构开始测试区块链技术,包括在内部系统上使用比特币区块链系统和瑞波币系统。
Melanie Swan在其著作 Blueprint for a New Economy 中将区块链的应用范围划分成3个层面,分别称其为区块链1.0、2.0和3.0。
(1)区块链1.0:可编程货币
区块链技术伴随比特币的产生而产生,其最初的应用范围完全聚集在数字货币上。比特币的出现第一次让区块链进入了大众视野,而后产生了莱特币、以太币、狗狗币等“山寨”数字货币。可编程货币的出现,使得价值在互联网中直接流通成为可能。区块链构建了一种全新的、去中心化的数字支付系统,随时随地进行货币交易、毫无障碍的跨国支付以及低成本运营的去中心化体系,都让这个系统变得魅力无穷。这样一种新兴数字货币的出现,强烈地冲击了传统金融体系。
(2)区块链2.0:可编程金融
受到数字货币的影响,人们开始将区块链技术的应用范围扩展到其他金融领域。基于区块链技术可编程的特点,人们尝试将“智能合约”的理念加入到区块链中,形成了可编程金融。有了合约系统的支撑,区块链的应用范围开始从单一的货币领域扩大到涉及合约功能的其他金融领域。彩色币、比特股、以太坊、合约币等新概念的出现,让区块链技术得以在包括股票、清算、私募股权等众多金融领域崭露头角。目前,许多金融机构都开始研究区块链技术,并尝试将其运用于现实,现有的传统金融体系正在被颠覆。
(3)区块链3.0:可编程社会
随着区块链技术的进一步发展,其“去中心化”功能及“数据防伪”功能在其他领域逐步受到重视。人们开始认识到,区块链的应用也许不仅局限在金融领域,还可以扩展到任何有需求的领域中去。于是,在金融领域之外,区块链技术又陆续被应用到了公证、仲裁、审计、域名、物流、医疗、邮件、鉴证、投票等其他领域中来,应用范围扩大到了整个社会。在这一应用阶段,人们试图用区块链来颠覆互联网的最底层协议,并试图将区块链技术运用到物联网中,让整个社会进入智能互联网时代,形成一个可编程的社会。
借鉴Melanie Swan的思路,区分了区块链1.0、2.0和3.0,但其实这3个层面并非区块链技术发展程度上的变化,而仅仅是应用范围的逐步扩展。区块链技术本身在所有的应用中均有体现,发挥了各自领域应有的作用。
因为区块链是去中心化的数据结构,所以不同副本之间不能总是保持一致。区块有可能在不同时间到达不同节点,导致节点有不同的区块链视角。解决的办法是,每一个节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就是最长的或最大累计难度的链。节点通过将记录在每个区块中的难度汇总起来,得到建立这个链所要付出的工作量证明的总量。只要所有的节点选择最长累计难度的区块链,整个比特币网络最终会收敛到一致的状态。
分叉 [20] 即在不同区块链间发生的临时差异。当更多的区块添加到某个分叉后,这个问题便会迎刃而解。
在接下来的图例中,读者可以了解到网络中发生分叉的过程。图例代表简单的全球比特币网络,在真实的情况下,比特币网络的拓扑结构不是基于地理位置组织起来的,而是在同一个网络中相互连接的节点。这些节点可能在地理位置上相距遥远,此处采用基于地理的拓扑是为了能更加简洁地描述分叉。在真实比特币网络里,节点间的距离按“跳”而不是按照真实位置来衡量的。为了便于描述,不同的区块被标示为不同的线型,传播这些区块的节点网络也被不同的线型标示。
在图1-14中,网络有一个统一的区块链视角,以实线区块为主链的“顶点”。当有两个候选区块同时想要延长最长区块链时,分叉事件就会发生。正常情况下,分叉发生在两名矿工在较短的时间内,各自都算得了工作量证明解的时候。两个矿工在各自的候选区块一发现解,便立即传播自己的“获胜”区块到网络中:先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。如果该节点在随后又收到了另一个候选区块,而这个区块又拥有同样的父区块,那么节点就会将这个区块连接到候选链上。其结果是,一些节点收到了一个候选区块,而另一些节点收到了另一个候选区块,这时两个不同版本的区块链就出现了。
图1-14 形象化的区块链分叉事件:分叉之前
在图1-15中,可以看到两个矿工几乎同时挖到了两个不同的区块。这两个区块是顶点区块——实线区块的子区块,可以延长这个区块链。为了便于跟踪这个分叉事件,此处设定有一个被标记为虚线的、来自加拿大的区块,还有一个被标记为点划线的、来自澳大利亚的区块。
图1-15 形象化的区块链分叉事件:同时发现两个区块
假设有这样一种情况,一个在加拿大的矿工发现了“虚线”区块的工作量证明解,在“实线”的父区块上延长了块链。几乎同一时刻,一个澳大利亚的矿工找到了“点划线”区块的解,也延长了“实线”区块。那么现在就有了两个区块:一个是源于加拿大的“虚线”区块;另一个是源于澳大利亚的“点划线”区块。这两个区块都是有效的,均包含有效的工作量证明解并延长同一个父区块。这两个区块可能包含了几乎相同的交易,只是在交易的排序上有些许不同。
当这两个区块传播时,一些节点首先收到“虚线”区块,一些节点首先收到“点划线”区块。如图1-16所示,比特币网络上的节点对于区块链的顶点产生了分歧,一派以虚线区块为顶点,而另一派以点划线区块为顶点。
图1-16 形象化的区块链分叉事件:两个区块的传播将网络分裂
从那时起,比特币网络中邻近(网络拓扑上的邻近,而非地理上的)加拿大的节点会首先收到“虚线”区块,并建立一个最大累计难度的区块,“虚线”区块为这个链的最后一个区块(实线-虚线),同时忽略晚一些到达的“点划线”区块。相比之下,离澳大利亚更近的节点会判定“点划线”区块胜出,并以它为最后一个区块来延长区块链(实线-点划线),而忽略晚几秒到达的“虚线”区块。那些首先收到“虚线”区块的节点,会即刻以这个区块为父区块来产生新的候选区块,并尝试寻找这个候选区块的工作量证明解。同样地,接受“点划线”区块的节点会以这个区块为链的顶点开始生成新块,并延长这个链。
分叉问题几乎总是在一个区块内就被解决了。网络中的一部分算力专注于以“虚线”区块为父区块,并在其之上建立新的区块;另一部分则将算力专注于“点划线”区块上。即便算力在这两个阵营中平均分配,也总有一个阵营抢在另一个阵营前发现工作量证明解并将其传播出去。在这个例子中,假如工作在“点划线”区块上的矿工找到了一个“箭头”区块,延长了区块链(实线-点划线-箭头),他们会立刻传播这个新区块,整个网络会都会认为这个区块是有效的,如图1-17所示。
图1-17 形象化的区块链分叉事件:新区块延长了分支
所有在上一轮选择“点划线”区块为胜出者的节点会直接将这条链延长一个区块。然而,那些选择“虚线”区块为胜出者的节点现在会看到两个链:“实线-点划线-箭头”和“实线-虚线”。如图1-18所示,这些节点会根据结果将“实线-点划线-箭头”这条链设置为主链,将“实线-虚线”这条链设置为备用链。这些节点接纳了新的更长的链,被迫改变了原有对区块链的观点,这就叫做链的重新共识。因为“虚线”区块做为父区块已经不在最长链上,导致了他们的候选区块已经成为“孤块”,所以现在任何原本想要在“实线-虚线”链上延长区块链的矿工都会停下来。全网将“实线-点划线-箭头”这条链识别为主链,“箭头”区块为这条链的最后一个区块。全部矿工立刻将他们产生的候选区块的父区块切换为“箭头”区块,来延长“实线-点划线-箭头”这条链。
从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。然而,这种情况发生的概率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。
图1-18 形象化的区块链分叉事件:全网在最长链上重新共识
比特币系统将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁的区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。
比特币系统的共识机制指的是,被矿工(或矿池)试图使用自己的算力实行欺骗或破坏的难度很大,至少理论上是这样。就像前面讲的,比特币的共识机制依赖于这样一个前提:绝大多数的矿工,出于自己利益最大化的考虑,都会通过诚实地挖矿来维持整个比特币系统。然而,当一个或者一群拥有了整个系统中大量算力的矿工出现之后,他们就可以通过攻击比特币的共识机制来达到破坏比特币网络的安全性和可靠性的目的。
值得注意的是,共识攻击 [20 ]只能影响整个区块链未来的共识,或者说,最多能影响不久的过去几个区块的共识(最多影响过去10个区块)。而且随着时间的推移,整个比特币块链被篡改的可能性越来越低。理论上,一个区块链分叉可以变得很长,但实际上,要想实现一个非常长的区块链分叉需要的算力非常之大,而随着整个比特币区块链的逐渐增长,过去的区块基本可以认为是无法被分叉篡改的。同时,共识攻击也不会影响用户的私钥以及加密算法(ECDSA)。共识攻击也不能从其他的钱包那里偷到比特币、不签名地支付比特币、重新分配比特币、改变过去的交易,或者改变比特币持有记录。共识攻击能够造成的唯一影响是影响最近的区块(最多10个),并且通过拒绝服务来影响未来区块的生成。
共识攻击的一个典型场景就是“51%攻击”。想象这么一个场景,一群矿工控制了整个比特币网络51%的算力,他们联合起来打算攻击整个比特币系统。由于这群矿工可以生成绝大多数的块,因此他们就可以通过故意制造块链分叉来实现“双重支付”,或者通过拒绝服务的方式来阻止特定的交易,或者攻击特定的钱包地址。区块链分叉/双重支付攻击指的是攻击者通过不承认最近的某个交易,并在这个交易之前重构新的块,从而生成新的分叉,继而实现双重支付。有了充足算力的保证,一个攻击者可以一次性篡改最近的6个或者更多的区块,从而使得这些区块包含的本应无法篡改的交易消失。值得注意的是,双重支付只能在攻击者拥有的钱包所发生的交易上进行,因为只有钱包的拥有者才能生成一个合法的签名用于双重支付交易。攻击者只能在自己的交易上进行双重支付攻击,但只有当这笔交易对应的是不可逆转的购买行为时,这种攻击才是有利可图的。
下面看一个“51%攻击”的实际案例吧。假如Alice和Bob之间使用比特币完成了一杯咖啡的交易。咖啡店老板Bob愿意在Alice给自己的转账交易确认数为0的时候就向其提供咖啡,这是因为这种小额交易遭遇“51%攻击”的风险和顾客购物的即时性(Alice能立即拿到咖啡)比起来,显得微不足道。这就和大部分的咖啡店对低于25美元的信用卡消费不会费时费力地向顾客索要签名是一样的,因为和顾客有可能撤销这笔信用卡支付的风险比起来,向用户索要信用卡签名的成本更高。相应的,使用比特币支付的大额交易被双重支付的风险就高得多了,因为买家(攻击者)可以通过在全网广播一个和真实交易的UTXO一样的伪造交易,以达到取消真实交易的目的。双重支付可以有两种方式:要么发生在交易被确认之前,要么由攻击者通过块链分叉来完成。进行51%攻击的人,可以取消在旧分叉上的交易记录,然后在新分叉上重新生成一个同样金额的交易,从而实现双重支付。
再举个例子:攻击者Mallory在Carol的画廊买了描绘伟大的中本聪的三联组画,Mallory通过转账价值25万美金的比特币与Carol进行交易。在等到1个而不是6个交易确认之后,Carol放心地将这幅组画包好,交给了Mallory。这时,Mallory的一个同伙,一个拥有大量算力的矿池的人Paul,在这笔交易写进区块链的时候,开始了51%攻击。首先,Paul利用自己矿池的算力重新计算包含这笔交易的块,并且在新块里将原来的交易替换成了另外一笔交易(比如直接转给了Mallory的另一个钱包而不是Carol的),从而实现了“双重支付”。这笔“双重支付”交易使用了跟原有交易一致的UTXO,但收款人被替换成了Mallory的钱包地址。然后,Paul利用矿池在伪造的块的基础上,又计算出一个更新的块,这样,包含这笔“双重支付”交易的块链比原有的块链高出了一个块。至此,高度更高的分叉区块链取代了原有的区块链,“双重支付”交易取代了原来给Carol的交易,Carol既没有收到价值25万美金的比特币,原本拥有的3幅价值连城的画也被Mallory白白地拿走了。在整个过程中,Paul矿池里的其他矿工可能自始至终都没有觉察到这笔“双重支付”交易有什么异样,因为挖矿程序都是自动在运行的,并且不会时时监控每一个区块中的每一笔交易。
为了避免这类攻击,售卖大宗商品的商家应该在交易得到全网的6个确认之后再交付商品。或者,商家应该使用第三方的多方签名的账户进行交易,并且也要等到交易账户获得全网多个确认之后再交付商品。一条交易的确认数越多,越难被攻击者通过51%攻击篡改。对于大宗商品的交易,即使在付款24小时之后再发货,对买卖双方来说使用比特币支付也是方便并且有效率的。而24小时之后,这笔交易的全网确认数将达到至少144个(能有效降低被51%攻击的可能性)。
共识攻击中除了“双重支付”攻击,还有一种攻击场景就是拒绝对某个特定的比特币地址提供服务。一个拥有了系统中绝大多数算力的攻击者,可以轻易地忽略某一笔特定的交易。如果这笔交易存在于另一个矿工所产生的区块中,该攻击者可以故意分叉,然后重新产生这个区块,并且把想忽略的交易从这个区块中移除。这种攻击造成的结果就是,只要这名攻击者拥有系统中的绝大多数算力,那么他就可以持续地干预某一个或某一批特定钱包地址产生的所有交易,从而达到拒绝为这些地址服务的目的。
需要注意的是,51%攻击并不是像它的命名里说的那样,攻击者需要至少51%的算力才能发起,实际上,即使其拥有不到51%的系统算力,依然可以尝试发起这种攻击。之所以命名为51%攻击,只是因为在攻击者的算力达到51%这个阈值的时候,其发起的攻击尝试几乎肯定会成功。本质上来看,共识攻击,就像是系统中所有矿工的算力被分成了两组,一组为诚实算力,另一组为攻击者算力,两组人都在争先恐后地计算块链上的新块,只是攻击者算力算出来的是精心构造的、包含或者剔除了某些交易的块。因此,攻击者拥有的算力越少,在这场角逐中获胜的可能性就越小。从另一个角度讲,一个攻击者拥有的算力越多,其故意创造的分叉块链就可能越长,可能被篡改的最近的块或者受其控制的未来的块就会越多。一些安全研究组织利用统计模型得出的结论是,算力达到全网的30%就足以发动51%攻击了。
全网算力的急剧增长已经使得比特币系统不再可能被某一个矿工攻击,因为一个矿工已经不可能占据全网哪怕1%的算力。但是中心化控制的矿池则引入了矿池操作者出于利益而施行攻击的风险。矿池操作者控制了候选块的生成,同时也控制了那些交易会被放到新生成的块中。这样一来,矿池操作者就拥有了剔除特定交易或者双重支付的权力。如果这种权利被矿池操作者以微妙而有节制的方式滥用的话,那么矿池操作者就可以在不为人知的情况下发动共识攻击并且获利。
但是,并不是所有的攻击者都是为了利益。一个可能的场景就是,攻击者仅仅是为了破坏整个比特币系统而发动攻击,而不是为了利益。这种意在破坏比特币系统的攻击者需要有巨大的投入和精心的计划,因此可以想象,这种攻击很有可能来自政府资助的组织。同样的,这类攻击者或许也会购买矿机,运营矿池,通过滥用矿池操作者的上述权力来施行拒绝服务等共识攻击。但是,随着比特币网络的算力呈几何级数快速地增长,上述这些理论上可行的攻击场景,实际操作起来已经越来越困难。近期比特币系统的一些升级,比如旨在进一步将挖矿控制去中心化的P2Pool挖矿协议,也都正在让这些理论上可行的攻击变得越来越困难。
毫无疑问,一次严重的共识攻击事件势必会降低人们对比特币系统的信心,进而可能导致比特币价格的跳水。然而,比特币系统和相关软件也一直在持续改进,所以比特币社区也势必会对任何一次共识攻击快速做出响应,以使整个比特币系统比以往更加稳健和可靠。
数字货币、虚拟货币的圈子里永远不乏争吵。比特币社区中早已为扩容问题吵得不可开交,将区块链技术从中脱离开来后,关于使用何种类型的区块链,公有链和私有链孰优孰劣的争执,一时也甚嚣尘上。这里我们就好好地来场华山论剑,看看到底谁是“链中之王”。
本节要对比的区块链形态有3种:公有链、联盟链、私有链。联盟链介于公有链和私有链之间,实质上仍属于私有链的范畴,因此公有链的支持者对另外两者持一致的反对态度。在他们眼里,这就是无需许可VS需要许可。
下面先来介绍这3种部署方式不同的区块链。
●公有链:任何人都能读取区块链信息,发送交易并能被确认,参与共识过程的区块链,是真正意义上的去中心化分布式区块链,比特币区块链即是公有链最好的代表。
●联盟链:根据一定特征所设定的节点能参与、交易,共识过程受预选节点控制的区块链。它被认为是“部分去中心化”或“多中心化”的区块链。R3组成的银行区块链联盟要构建的就是典型的联盟链。
●私有链:写入权限仅在一个组织手里,读取权限可能会被限制的区块链。私有链没有去中心化特点,但具有分布式特点。私有链对公司政府内部的审计测试以及银行机构内的交易结算有很大价值。
它们之间的主要差异如表1-4所示。
表1-4 不同区块链的主要差异
可以看出,联盟链和私有链与公有链相比,中心化程度不断提高,权限越收越紧。和完全开放、无许可必要的比特币公有链不同,联盟链和私有链在信息公开程度和中心控制力度方面有所限制,这些限制可以帮助区块链满足不同类型的应用需求。
公有链和私有链在其他方面也有着共同的优点 [21] 。尽管随着范围的缩小,私有链的安全性受到怀疑,但两者基于共识机制来保证的系统安全性仍然十分可信。区块链的不可篡改性和可追溯性特点在公有链和私有链上都有所体现。
公有链具有开放、成功经验、潜力和乌托邦等优势。
如互联网一样,公有链不设读取和交易权限,面向全球开放。互联网的成功已经告诉人们,突破性的技术通常都是建立在一个公平竞争的开放协议层中的,任何人都可以对其进行创新。网络的开放性让一切皆有可能。历史证明,开放的技术总是能够战胜封闭式花园的做法,是共识合并孤岛,而非孤岛自成大陆。
开放还从另一方面维护了系统的安全性。如此大规模的公有链可有效抵御双花攻击。以比特币为例,在当前情况下,要进行双花攻击需花费的资金总额在50亿美金以上,因此,从经济的角度说,实施任何攻击的收益都低于这个数额,且攻击收益随着比特币算力的增长而越来越低,攻击变得没有任何意义。
以比特币为例,今年是比特币问世的第8年,8年来这场“人类历史上最大的社会经济实验”并没有崩溃,没有双花,没有宕机,没有一笔交易出错。这足以证明公共区块链的稳定。在银行业看来,无间断运行的特性正是比特币区块链中最具参考价值的因素之一。有了这些基于比特币的开发工作,加上比特币区块链自身也存在后续变革,在吸收新兴区块链的优点,同时弥补自己的不足,公共区块链基础设施将变得更加可靠和可扩展。
在隐私、扩展性和交易速度等方面,公有链还有很大潜力可挖。公共区块链的隐私将通过使用“零知识证明”得到进一步提升。零知识证明指的是,证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方为完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。除了声明的有效性,这个验证方法并不会透露出其他的信息。
未来,在公共区块链上构建私有业务也是有可能的,就好像现在能通过网络来构建安全的电子商务交易一样。随着未来区块链上智能合约的发展,区块链的扩展性将会有质的提升,届时公有链将会成为全球范围内的下一个互联互通的网络。
公有链完全公开、不受控制,并通过加密经济来保证网络的安全,这是很多追求自由的人心中的乌托邦。有人会嘲笑追求完全去中心化的信徒们,但公有链的确给了美梦成真的机会。因此它也会吸引那些不满足当下监管和中心化的金融市场,或者缺乏相关服务的人群和爱好者。但是也应看到,公有链也存在着分化严重和匿名带来的监管以及隐私保护等问题亟待解决。
矿池算力占全网算力比例的不断上升,使得比特币的共识机制蒙上了阴影。区块扩容的方案也几乎使比特币社区分裂,这一规则更改的过程也让许多人明白了:所谓去中心化的比特币,在重大议题上还是需要顾及核心开发者和算力大的矿池,而这就偏离了去中心化的初衷。
公有链在存储容量和能耗上对各个节点的影响很大。由于区块链需要所有节点备份整个账本,公有链的大范围此时便成了绊脚石。区块链本身存储效率偏低且检索效率不高,全网交易数据的增加以及今后智能合约的执行,都会增加对节点内存和存储空间的压力。这会对面向大众的公有链的发展产生影响,当然这也是私有链需要解决的问题。确认时间长和能量消耗大是工作量证明(PoW)带来的两个问题。尤其是因为对全球网络广播,公有链的交易确认时间一般情况下会比私有网络更长。此外,为了实现共识而产生的大量能耗,也削弱了公有链降低成本方面的优势。上交所专家朱立曾在评价区块链在金融交易层面的前景时说,公有链的应用方面,区块链的低吞吐量、高时延问题可能将长期存在,无法支撑海量的证券交易、信用卡转账等实际金融业务的规模。
完全匿名会带来监管的问题,成为滋生犯罪的温床。因为具有隐蔽性强、不可追踪的特点,比特币往往和外汇转移、恐怖组织融资、逃税等行为有紧密联系。这种联系也让各国监管层对其颇为警惕。例如,匿名性强的比特币能够在被称为“暗网”的网络集市上进行敲诈勒索,购买毒品和雇佣杀手等行为。著名暗网黑市“丝绸之路”上的大多数交易都使用比特币支付,难以追查,留下了监管黑洞。匿名性也有可能为反洗钱工作带来更大的挑战,因为区块链去中心化的性质并不符合传统的监管模式。公有链机制难以成为金融机构的解决方案,原因就是像比特币区块链这样的公共区块链,是不可能在发行链下的资产方面既具有免审查性又具有法律权威性的。
与匿名问题相对的是隐私问题。尽管每个节点背后的身份是匿名的,但是节点与节点之间的交易是全网公开并向全网广播的。这就带来一个问题,当匿名问题被解决后,交易双方的记录就完全暴露在全世界的公网中,这令人很难接受。这也意味着区块链上一个智能合约中的非参与者可以囤积或者卖掉某一资产,因为他们获得了智能合约上公开的信息。
此外,交易信息的公开也会影响金融交易,失去了信息不对称的优势将大大削弱金融机构的盈利能力。在华尔街的银行家眼中,真正“去中心化”的清算模式,将会让他们失去在“信息不对称”情况下所带来的优势,也随之失去“左手倒右手”的赚钱能力。
相比于公有链,私有链具有前景广阔、博采众长、减少威胁、灵活等优势。
区块链为建立一个成本很低且能够防止篡改的公共数据库提供了完美的解决方案。区块链作为金融机构结算、追溯等问题的解决方案,发展前景广阔,甚至会有颠覆性的影响。基于区块链的支付系统更快、更安全、性价比更高。通过区块链的应用,从技术上讲同样可以加强监督,提高透明度,而在金融机构等需要权限设置的场合,私有链能更好地契合金融界人士的痛点。在公证、审计、物联网甚至投票等方面,私有链都可以给出解决方案。
私有链仍保留着区块链真实性和部分去中心化的特性,并且在此基础上可以创造出访问权限控制更为严格,修改甚至是读取权限仅限于少数用户的系统,兼有去中心化和中心化的特点。由于存在权限设定和准入机制,区块链的节点基本可以确保无害,相对透明的熟人圈减少了作假和攻击区块链的可能性,权限控制也能减少风险。
不同于公有链的全网公开,私有链参与者即便拥有整套加密账本,通过加密私钥也只能浏览与其相关的交易并确保安全——所有交易会以加密的形式登录,包括时间、日期、参与者等。交易一旦入账,不可被删除、撤销或修改。
针对不同的应用场景,不同的私有链可以灵活调节自身。读取权限、交易权限和验证权限可根据需要进行修改,以应对隐私、追溯、管理的问题;各个节点可以自定义,由于接入节点少,可适当加大区块链对节点的负担,以提高可拓展性和安全性;经济激励机制在有些场合可以省略,挖矿机制也可以被其他方法取代以减少能耗,提高效益。
但私有链比较封闭,创新能力令人怀疑,存在信任等问题。
历史选择了各节点平等的互联网,因此,从私有链不同节点间权限不同这一角度看,很容易招致反感。从私有链覆盖的范围看,互联网的规律是共识合并孤岛,而不是孤岛自成大陆。私有链单独自成体系会引起互联网的抵制。
垄断的机构、企业不思进取,疏于改革,转身缓慢是很多人看衰的地方。除了创新动力不足外,金融界在对自身改革上也有着先天不足,一方面金融监管和银行间合作困难,另一方面银行创新速度慢,无法迅速整合资源。
私有链的技术障碍,例如隐私问题,只有通过所有参与者的高度协作才能解决。不过,在高度竞争的金融市场,要实现这一点并不容易。
尽管银行可能会尽量朝着区块链技术方向发展,但是他们会发现,传统的信息传递系统对结算策略执行所需的信息保密性、高吞吐量和可靠传输的要求还是可以满足的,这时他们就可能缺乏了运用区块链创新的动力。考虑到不断拖延的时间表以及各种巨大的障碍,可能会存在这样的风险:银行会对区块链失去兴趣,并决定追求一些没那么耀眼的技术,或者继续故步自封。
当参与区块链的节点数减少,节点身份被预置,节点权限不一,很多人就会担忧私有链的诚实问题。是否会存在联合起来控制私有链,影响区块链的信任程度的可能性?
尽管区块链被视作“信任的机器”,但一旦它的成员中出现一个控制率非常高的团体,或一组串通勾结的团体,区块链就会开始有问题。因此很有可能仍需要引入传统的信任/监管机制,这将会大大削弱区块链的效率。此外,规模较小的私有链很难证明没有“隐藏的可替代区块链”的存在,难以抵御双花攻击。
区块链的核心特性是去中心化、去中介化、无须信任系统、不可篡改性和加密安全性。当参与范围、权限大小被控制限定,会随意更改区块链的规则,那么以上的几个特性是否依旧存在就要打上一个问号了。学界甚至有专家将私有链看作是“共享式数据库一个令人困惑的别名而已”。
分布式交易总账需要在尽可能短的时间内做到安全、明确及不可逆,便于提供一个最坚实且去中心化的系统。在实践中,该流程分为两个方面:一是选择一个独特的节点来产生一个区块,二是使交易总账不可逆。目前主流的共识机制有工作量证明(POW)、股权证明(POS)、授权股权证明(DPOS),还有瑞波和恒星的共识协议,以及以太坊的共识协议等。
比特币系统使用工作量证明机制,即所谓的挖矿,使更长总账的产生具有计算性难度。该机制通过与或运算,寻找一个满足特定规则的随机数,即可获得本次记账权,发出本轮需要记录的数据,在全网其他节点验证后一起存储。
工作量证明机制就像乐透游戏,平均每10分钟有一个节点找到一个区块。如果两个节点在同一时间找到区块,那么网络将根据后续节点的决定来确定以哪个区块构建总账。从统计学角度讲,一笔交易在6个区块(约1小时)后被认为是明确确认且不可逆的。然而,核心开发者认为,需要120个区块(约1天)才能充分保护网络不受来自潜在的更长的已将新产生的币花掉的攻击区块链的威胁。尽管出现更长的区块链会变得不太可能,但任何拥有巨大经济资源的人都仍有可能制造一个更长的区块链或者具备足够的哈希算力来冻结用户的账户。
工作量证明机制的优点是,完全去中心化,节点自由进出。其缺点也很明显,首先,目前比特币已经吸引了全球大部分的算力,其他再用工作量证明共识机制的区块链应用很难获得相同的算力来保障自身的安全;其次,挖矿也造成大量的资源浪费;再次,共识达成的周期较长,不适合商业应用。
股权证明机制就是直接证明所有者持有的份额,虽有很多不同的变种,但基本概念都是产生区块的难度应该与所有者在网络里所占的股权(所有权占比)成比例。除了混合性的点点币(PPC)之外,真正的股权证明(POS)币是没有挖矿过程的,也就是在创世区块内就写明了股权证明,之后的股权证明只能转让,不能挖矿。到目前为止,已有两个系统开始运行,即点点币(Peercoin)和未来币(NXT)。点点币使用一种混合模式,用所有者的股权来调整相应的挖矿难度。未来币使用一个确定性算法,以随机选择一个股东的方式来产生下一个区块。未来币的算法基于所有者的账户余额来调整其被选中的可能性。未来币和点点币都分别解决了由谁来生产下一个区块的问题,但它们没有找到在适当的时间内使区块链具备不可逆的安全性的方法。根据笔者能找到的信息,要做到这点,点点币需要至少6个区块(约1小时),未来币需要10个区块。笔者找不到在10个区块后未来币能提供什么级别的安全性的根据。
基于交易的股权证明机制(Transactions as Proof of Stake,TaPOS)在每笔交易中都包含区块链中前一个区块的哈希值。通过该系统,对任何人而言,网络变得越来越安全而不可逆,因为最终每个区块都通过了股东投票。然而,TaPOS并没有定义谁来产生下一个区块。
在现实世界中,股权证明很普遍,最简单的就是股票。股票是用来记录股权的证明,同时代表着投票权和收益权。股票被创造出来以后,除了增发外,不能增加股权数量,要获得股票只能转让。在纯POS体系中(如未来币),没有挖矿过程,初始的股权分配已经固定,之后只是股权在交易者之间流转,非常类似于现实世界中的股票。股权从创世区块中流出,被交易者买卖而逐渐分散化。
瑞波共识算法是指,使一组节点能够基于特殊节点列表达成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由51%的该俱乐部会员投票通过。共识遵循这核心成员的51%权力,外部人员没有影响力。由于俱乐部由“中心化”开始,因此它将一直是“中心化”的。与比特币及点点币一样,瑞波系统将股东们与其投票权隔开,并因此比其他系统更中心化。
当使用去中心化自治公司(Decentralized Autonomous Company,DAC)这一说法时,去中心化表示每个股东按其持股比例拥有影响力,51%股东投票的结果将是不可逆且有约束力的,其挑战是通过及时而高效的方法达到51%批准。为达到这个目标,每个股东可以将其投票权授予一名代表,获票数最多的前100位代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。如果一个平均水平的区块含有100股作为交易费,一名代表将获得10股作为报酬。网络延迟有可能使某些代表没能及时广播他们的区块,而这将导致区块链分叉。然而,这不太可能发生,因为制造区块的代表可以与制造前后区块的代表建立直接连接。这种建立与你之后的代表(也许也包括其后的那名代表)的直接连接是为了确保你能得到报酬。该模式可以每30秒产生一个新区块,并且在正常的网络条件下区块链分叉的可能性极其小,即使发生也可以在几分钟内得到解决。
股份授权证明机制DPOS(Delegate Proof of Stake)是一种新的保障加密货币网络安全的算法。它在尝试解决比特币采用的传统工作量证明机制以及点点币和未来币所采用的股份证明机制的问题的同时,还能通过实施科技式的民主以抵消中心化所带来的负面效应。
通过引入“受托人”这个角色,DPOS可以降低中心化所带来的负面影响。一共有101位受托人通过网络上的每个人经由每次交易投票产生,他们的工作是签署(生产)区块。通过去中心化的投票过程,DPOS能让网络比别的系统更加民主。与其要让我们完成在网络上信任所有人这个不可能完成的任务,不如让DPOS通过技术保护措施来确保那些代表网络来签署区块的人们(受托人)能够正确地工作。除此之外,在每个区块被签署之前,必须先验证前一个区块已经被受信任节点所签署。像DPOS这样的设计,实际上缩减了必须要等待相当数量的未授信节点进行验证后才能够确认交易的时间成本。