- 區塊鏈解密:構建基于信用的下一代互聯網
- 黃步添 蔡亮
- 13349字
- 2019-10-31 17:52:52
1.2 區塊鏈
1.2.1 區塊鏈是什么
區塊鏈是一種去中心化的、不可篡改的、可信的分布式賬本,它提供了一套安全、穩定、透明、可審計且高效的記錄交易以及數據信息交互的方式,其特點如下(參見圖1-12):

圖1-12 區塊鏈的特點
(1)高度安全,不可篡改的分布式賬本。
(2)存在于互聯網,向所有用戶公開。
(3)幫助人與人、物與物之間實現點對點的交易和互換。
(4)無需第三方的介入即可完成價值的交換。
區塊鏈可以存儲數據,也可以運行應用程序。目前區塊鏈技術主要應用在存在性證明、智能合約、物聯網、身份驗證、預測市場、資產交易、文件存儲等領域,如圖1-13所示。隨著區塊鏈技術的快速演變,新的技術在不斷結合,從而創造出更有效的應用解決方案。

圖1-13 區塊鏈的應用領域
1.2.2 區塊鏈歷史
1 重要里程碑
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年,大量銀行和傳統金融機構開始測試區塊鏈技術,包括在內部系統上使用比特幣區塊鏈系統和瑞波幣系統。
2 發展歷史
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個層面并非區塊鏈技術發展程度上的變化,而僅僅是應用范圍的逐步擴展。區塊鏈技術本身在所有的應用中均有體現,發揮了各自領域應有的作用。
1.2.3 分叉問題
因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈視角。解決的辦法是,每一個節點總是選擇并嘗試延長代表累計了最大工作量證明的區塊鏈,也就是最長的或最大累計難度的鏈。節點通過將記錄在每個區塊中的難度匯總起來,得到建立這個鏈所要付出的工作量證明的總量。只要所有的節點選擇最長累計難度的區塊鏈,整個比特幣網絡最終會收斂到一致的狀態。
分叉[20]即在不同區塊鏈間發生的臨時差異。當更多的區塊添加到某個分叉后,這個問題便會迎刃而解。
在接下來的圖例中,讀者可以了解到網絡中發生分叉的過程。圖例代表簡單的全球比特幣網絡,在真實的情況下,比特幣網絡的拓撲結構不是基于地理位置組織起來的,而是在同一個網絡中相互連接的節點。這些節點可能在地理位置上相距遙遠,此處采用基于地理的拓撲是為了能更加簡潔地描述分叉。在真實比特幣網絡里,節點間的距離按“跳”而不是按照真實位置來衡量的。為了便于描述,不同的區塊被標示為不同的線型,傳播這些區塊的節點網絡也被不同的線型標示。
在圖1-14中,網絡有一個統一的區塊鏈視角,以實線區塊為主鏈的“頂點”。當有兩個候選區塊同時想要延長最長區塊鏈時,分叉事件就會發生。正常情況下,分叉發生在兩名礦工在較短的時間內,各自都算得了工作量證明解的時候。兩個礦工在各自的候選區塊一發現解,便立即傳播自己的“獲勝”區塊到網絡中:先是傳播給鄰近的節點而后傳播到整個網絡。每個收到有效區塊的節點都會將其并入并延長區塊鏈。如果該節點在隨后又收到了另一個候選區塊,而這個區塊又擁有同樣的父區塊,那么節點就會將這個區塊連接到候選鏈上。其結果是,一些節點收到了一個候選區塊,而另一些節點收到了另一個候選區塊,這時兩個不同版本的區塊鏈就出現了。

圖1-14 形象化的區塊鏈分叉事件:分叉之前
在圖1-15中,可以看到兩個礦工幾乎同時挖到了兩個不同的區塊。這兩個區塊是頂點區塊——實線區塊的子區塊,可以延長這個區塊鏈。為了便于跟蹤這個分叉事件,此處設定有一個被標記為虛線的、來自加拿大的區塊,還有一個被標記為點劃線的、來自澳大利亞的區塊。

圖1-15 形象化的區塊鏈分叉事件:同時發現兩個區塊
假設有這樣一種情況,一個在加拿大的礦工發現了“虛線”區塊的工作量證明解,在“實線”的父區塊上延長了塊鏈。幾乎同一時刻,一個澳大利亞的礦工找到了“點劃線”區塊的解,也延長了“實線”區塊。那么現在就有了兩個區塊:一個是源于加拿大的“虛線”區塊;另一個是源于澳大利亞的“點劃線”區塊。這兩個區塊都是有效的,均包含有效的工作量證明解并延長同一個父區塊。這兩個區塊可能包含了幾乎相同的交易,只是在交易的排序上有些許不同。
當這兩個區塊傳播時,一些節點首先收到“虛線”區塊,一些節點首先收到“點劃線”區塊。如圖1-16所示,比特幣網絡上的節點對于區塊鏈的頂點產生了分歧,一派以虛線區塊為頂點,而另一派以點劃線區塊為頂點。

圖1-16 形象化的區塊鏈分叉事件:兩個區塊的傳播將網絡分裂
從那時起,比特幣網絡中鄰近(網絡拓撲上的鄰近,而非地理上的)加拿大的節點會首先收到“虛線”區塊,并建立一個最大累計難度的區塊,“虛線”區塊為這個鏈的最后一個區塊(實線-虛線),同時忽略晚一些到達的“點劃線”區塊。相比之下,離澳大利亞更近的節點會判定“點劃線”區塊勝出,并以它為最后一個區塊來延長區塊鏈(實線-點劃線),而忽略晚幾秒到達的“虛線”區塊。那些首先收到“虛線”區塊的節點,會即刻以這個區塊為父區塊來產生新的候選區塊,并嘗試尋找這個候選區塊的工作量證明解。同樣地,接受“點劃線”區塊的節點會以這個區塊為鏈的頂點開始生成新塊,并延長這個鏈。
分叉問題幾乎總是在一個區塊內就被解決了。網絡中的一部分算力專注于以“虛線”區塊為父區塊,并在其之上建立新的區塊;另一部分則將算力專注于“點劃線”區塊上。即便算力在這兩個陣營中平均分配,也總有一個陣營搶在另一個陣營前發現工作量證明解并將其傳播出去。在這個例子中,假如工作在“點劃線”區塊上的礦工找到了一個“箭頭”區塊,延長了區塊鏈(實線-點劃線-箭頭),他們會立刻傳播這個新區塊,整個網絡會都會認為這個區塊是有效的,如圖1-17所示。

圖1-17 形象化的區塊鏈分叉事件:新區塊延長了分支
所有在上一輪選擇“點劃線”區塊為勝出者的節點會直接將這條鏈延長一個區塊。然而,那些選擇“虛線”區塊為勝出者的節點現在會看到兩個鏈:“實線-點劃線-箭頭”和“實線-虛線”。如圖1-18所示,這些節點會根據結果將“實線-點劃線-箭頭”這條鏈設置為主鏈,將“實線-虛線”這條鏈設置為備用鏈。這些節點接納了新的更長的鏈,被迫改變了原有對區塊鏈的觀點,這就叫做鏈的重新共識。因為“虛線”區塊做為父區塊已經不在最長鏈上,導致了他們的候選區塊已經成為“孤塊”,所以現在任何原本想要在“實線-虛線”鏈上延長區塊鏈的礦工都會停下來。全網將“實線-點劃線-箭頭”這條鏈識別為主鏈,“箭頭”區塊為這條鏈的最后一個區塊。全部礦工立刻將他們產生的候選區塊的父區塊切換為“箭頭”區塊,來延長“實線-點劃線-箭頭”這條鏈。

圖1-18 形象化的區塊鏈分叉事件:全網在最長鏈上重新共識
從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。然而,這種情況發生的概率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。
比特幣系統將區塊間隔設計為10分鐘,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁的區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。
1.2.4 共識攻擊
比特幣系統的共識機制指的是,被礦工(或礦池)試圖使用自己的算力實行欺騙或破壞的難度很大,至少理論上是這樣。就像前面講的,比特幣的共識機制依賴于這樣一個前提:絕大多數的礦工,出于自己利益最大化的考慮,都會通過誠實地挖礦來維持整個比特幣系統。然而,當一個或者一群擁有了整個系統中大量算力的礦工出現之后,他們就可以通過攻擊比特幣的共識機制來達到破壞比特幣網絡的安全性和可靠性的目的。
值得注意的是,共識攻擊[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挖礦協議,也都正在讓這些理論上可行的攻擊變得越來越困難。
毫無疑問,一次嚴重的共識攻擊事件勢必會降低人們對比特幣系統的信心,進而可能導致比特幣價格的跳水。然而,比特幣系統和相關軟件也一直在持續改進,所以比特幣社區也勢必會對任何一次共識攻擊快速做出響應,以使整個比特幣系統比以往更加穩健和可靠。
1.2.5 區塊鏈形態
數字貨幣、虛擬貨幣的圈子里永遠不乏爭吵。比特幣社區中早已為擴容問題吵得不可開交,將區塊鏈技術從中脫離開來后,關于使用何種類型的區塊鏈,公有鏈和私有鏈孰優孰劣的爭執,一時也甚囂塵上。這里我們就好好地來場華山論劍,看看到底誰是“鏈中之王”。
本節要對比的區塊鏈形態有3種:公有鏈、聯盟鏈、私有鏈。聯盟鏈介于公有鏈和私有鏈之間,實質上仍屬于私有鏈的范疇,因此公有鏈的支持者對另外兩者持一致的反對態度。在他們眼里,這就是無需許可VS需要許可。
下面先來介紹這3種部署方式不同的區塊鏈。
● 公有鏈:任何人都能讀取區塊鏈信息,發送交易并能被確認,參與共識過程的區塊鏈,是真正意義上的去中心化分布式區塊鏈,比特幣區塊鏈即是公有鏈最好的代表。
● 聯盟鏈:根據一定特征所設定的節點能參與、交易,共識過程受預選節點控制的區塊鏈。它被認為是“部分去中心化”或“多中心化”的區塊鏈。R3組成的銀行區塊鏈聯盟要構建的就是典型的聯盟鏈。
● 私有鏈:寫入權限僅在一個組織手里,讀取權限可能會被限制的區塊鏈。私有鏈沒有去中心化特點,但具有分布式特點。私有鏈對公司政府內部的審計測試以及銀行機構內的交易結算有很大價值。
它們之間的主要差異如表1-4所示。
表1-4 不同區塊鏈的主要差異

可以看出,聯盟鏈和私有鏈與公有鏈相比,中心化程度不斷提高,權限越收越緊。和完全開放、無許可必要的比特幣公有鏈不同,聯盟鏈和私有鏈在信息公開程度和中心控制力度方面有所限制,這些限制可以幫助區塊鏈滿足不同類型的應用需求。
公有鏈和私有鏈在其他方面也有著共同的優點[21]。盡管隨著范圍的縮小,私有鏈的安全性受到懷疑,但兩者基于共識機制來保證的系統安全性仍然十分可信。區塊鏈的不可篡改性和可追溯性特點在公有鏈和私有鏈上都有所體現。
公有鏈具有開放、成功經驗、潛力和烏托邦等優勢。
如互聯網一樣,公有鏈不設讀取和交易權限,面向全球開放。互聯網的成功已經告訴人們,突破性的技術通常都是建立在一個公平競爭的開放協議層中的,任何人都可以對其進行創新。網絡的開放性讓一切皆有可能。歷史證明,開放的技術總是能夠戰勝封閉式花園的做法,是共識合并孤島,而非孤島自成大陸。
開放還從另一方面維護了系統的安全性。如此大規模的公有鏈可有效抵御雙花攻擊。以比特幣為例,在當前情況下,要進行雙花攻擊需花費的資金總額在50億美金以上,因此,從經濟的角度說,實施任何攻擊的收益都低于這個數額,且攻擊收益隨著比特幣算力的增長而越來越低,攻擊變得沒有任何意義。
以比特幣為例,今年是比特幣問世的第8年,8年來這場“人類歷史上最大的社會經濟實驗”并沒有崩潰,沒有雙花,沒有宕機,沒有一筆交易出錯。這足以證明公共區塊鏈的穩定。在銀行業看來,無間斷運行的特性正是比特幣區塊鏈中最具參考價值的因素之一。有了這些基于比特幣的開發工作,加上比特幣區塊鏈自身也存在后續變革,在吸收新興區塊鏈的優點,同時彌補自己的不足,公共區塊鏈基礎設施將變得更加可靠和可擴展。
在隱私、擴展性和交易速度等方面,公有鏈還有很大潛力可挖。公共區塊鏈的隱私將通過使用“零知識證明”得到進一步提升。零知識證明指的是,證明者能夠在不向驗證者提供任何有用信息的情況下,使驗證者相信某個論斷是正確的。零知識證明實質上是一種涉及兩方或更多方的協議,即兩方或更多方為完成一項任務所需采取的一系列步驟。證明者向驗證者證明并使其相信自己知道或擁有某一消息,但證明過程不能向驗證者泄漏任何關于被證明消息的信息。除了聲明的有效性,這個驗證方法并不會透露出其他的信息。
未來,在公共區塊鏈上構建私有業務也是有可能的,就好像現在能通過網絡來構建安全的電子商務交易一樣。隨著未來區塊鏈上智能合約的發展,區塊鏈的擴展性將會有質的提升,屆時公有鏈將會成為全球范圍內的下一個互聯互通的網絡。
公有鏈完全公開、不受控制,并通過加密經濟來保證網絡的安全,這是很多追求自由的人心中的烏托邦。有人會嘲笑追求完全去中心化的信徒們,但公有鏈的確給了美夢成真的機會。因此它也會吸引那些不滿足當下監管和中心化的金融市場,或者缺乏相關服務的人群和愛好者。但是也應看到,公有鏈也存在著分化嚴重和匿名帶來的監管以及隱私保護等問題亟待解決。
礦池算力占全網算力比例的不斷上升,使得比特幣的共識機制蒙上了陰影。區塊擴容的方案也幾乎使比特幣社區分裂,這一規則更改的過程也讓許多人明白了:所謂去中心化的比特幣,在重大議題上還是需要顧及核心開發者和算力大的礦池,而這就偏離了去中心化的初衷。
公有鏈在存儲容量和能耗上對各個節點的影響很大。由于區塊鏈需要所有節點備份整個賬本,公有鏈的大范圍此時便成了絆腳石。區塊鏈本身存儲效率偏低且檢索效率不高,全網交易數據的增加以及今后智能合約的執行,都會增加對節點內存和存儲空間的壓力。這會對面向大眾的公有鏈的發展產生影響,當然這也是私有鏈需要解決的問題。確認時間長和能量消耗大是工作量證明(PoW)帶來的兩個問題。尤其是因為對全球網絡廣播,公有鏈的交易確認時間一般情況下會比私有網絡更長。此外,為了實現共識而產生的大量能耗,也削弱了公有鏈降低成本方面的優勢。上交所專家朱立曾在評價區塊鏈在金融交易層面的前景時說,公有鏈的應用方面,區塊鏈的低吞吐量、高時延問題可能將長期存在,無法支撐海量的證券交易、信用卡轉賬等實際金融業務的規模。
完全匿名會帶來監管的問題,成為滋生犯罪的溫床。因為具有隱蔽性強、不可追蹤的特點,比特幣往往和外匯轉移、恐怖組織融資、逃稅等行為有緊密聯系。這種聯系也讓各國監管層對其頗為警惕。例如,匿名性強的比特幣能夠在被稱為“暗網”的網絡集市上進行敲詐勒索,購買毒品和雇傭殺手等行為。著名暗網黑市“絲綢之路”上的大多數交易都使用比特幣支付,難以追查,留下了監管黑洞。匿名性也有可能為反洗錢工作帶來更大的挑戰,因為區塊鏈去中心化的性質并不符合傳統的監管模式。公有鏈機制難以成為金融機構的解決方案,原因就是像比特幣區塊鏈這樣的公共區塊鏈,是不可能在發行鏈下的資產方面既具有免審查性又具有法律權威性的。
與匿名問題相對的是隱私問題。盡管每個節點背后的身份是匿名的,但是節點與節點之間的交易是全網公開并向全網廣播的。這就帶來一個問題,當匿名問題被解決后,交易雙方的記錄就完全暴露在全世界的公網中,這令人很難接受。這也意味著區塊鏈上一個智能合約中的非參與者可以囤積或者賣掉某一資產,因為他們獲得了智能合約上公開的信息。
此外,交易信息的公開也會影響金融交易,失去了信息不對稱的優勢將大大削弱金融機構的盈利能力。在華爾街的銀行家眼中,真正“去中心化”的清算模式,將會讓他們失去在“信息不對稱”情況下所帶來的優勢,也隨之失去“左手倒右手”的賺錢能力。
相比于公有鏈,私有鏈具有前景廣闊、博采眾長、減少威脅、靈活等優勢。
區塊鏈為建立一個成本很低且能夠防止篡改的公共數據庫提供了完美的解決方案。區塊鏈作為金融機構結算、追溯等問題的解決方案,發展前景廣闊,甚至會有顛覆性的影響。基于區塊鏈的支付系統更快、更安全、性價比更高。通過區塊鏈的應用,從技術上講同樣可以加強監督,提高透明度,而在金融機構等需要權限設置的場合,私有鏈能更好地契合金融界人士的痛點。在公證、審計、物聯網甚至投票等方面,私有鏈都可以給出解決方案。
私有鏈仍保留著區塊鏈真實性和部分去中心化的特性,并且在此基礎上可以創造出訪問權限控制更為嚴格,修改甚至是讀取權限僅限于少數用戶的系統,兼有去中心化和中心化的特點。由于存在權限設定和準入機制,區塊鏈的節點基本可以確保無害,相對透明的熟人圈減少了作假和攻擊區塊鏈的可能性,權限控制也能減少風險。
不同于公有鏈的全網公開,私有鏈參與者即便擁有整套加密賬本,通過加密私鑰也只能瀏覽與其相關的交易并確保安全——所有交易會以加密的形式登錄,包括時間、日期、參與者等。交易一旦入賬,不可被刪除、撤銷或修改。
針對不同的應用場景,不同的私有鏈可以靈活調節自身。讀取權限、交易權限和驗證權限可根據需要進行修改,以應對隱私、追溯、管理的問題;各個節點可以自定義,由于接入節點少,可適當加大區塊鏈對節點的負擔,以提高可拓展性和安全性;經濟激勵機制在有些場合可以省略,挖礦機制也可以被其他方法取代以減少能耗,提高效益。
但私有鏈比較封閉,創新能力令人懷疑,存在信任等問題。
歷史選擇了各節點平等的互聯網,因此,從私有鏈不同節點間權限不同這一角度看,很容易招致反感。從私有鏈覆蓋的范圍看,互聯網的規律是共識合并孤島,而不是孤島自成大陸。私有鏈單獨自成體系會引起互聯網的抵制。
壟斷的機構、企業不思進取,疏于改革,轉身緩慢是很多人看衰的地方。除了創新動力不足外,金融界在對自身改革上也有著先天不足,一方面金融監管和銀行間合作困難,另一方面銀行創新速度慢,無法迅速整合資源。
私有鏈的技術障礙,例如隱私問題,只有通過所有參與者的高度協作才能解決。不過,在高度競爭的金融市場,要實現這一點并不容易。
盡管銀行可能會盡量朝著區塊鏈技術方向發展,但是他們會發現,傳統的信息傳遞系統對結算策略執行所需的信息保密性、高吞吐量和可靠傳輸的要求還是可以滿足的,這時他們就可能缺乏了運用區塊鏈創新的動力。考慮到不斷拖延的時間表以及各種巨大的障礙,可能會存在這樣的風險:銀行會對區塊鏈失去興趣,并決定追求一些沒那么耀眼的技術,或者繼續故步自封。
當參與區塊鏈的節點數減少,節點身份被預置,節點權限不一,很多人就會擔憂私有鏈的誠實問題。是否會存在聯合起來控制私有鏈,影響區塊鏈的信任程度的可能性?
盡管區塊鏈被視作“信任的機器”,但一旦它的成員中出現一個控制率非常高的團體,或一組串通勾結的團體,區塊鏈就會開始有問題。因此很有可能仍需要引入傳統的信任/監管機制,這將會大大削弱區塊鏈的效率。此外,規模較小的私有鏈很難證明沒有“隱藏的可替代區塊鏈”的存在,難以抵御雙花攻擊。
區塊鏈的核心特性是去中心化、去中介化、無須信任系統、不可篡改性和加密安全性。當參與范圍、權限大小被控制限定,會隨意更改區塊鏈的規則,那么以上的幾個特性是否依舊存在就要打上一個問號了。學界甚至有專家將私有鏈看作是“共享式數據庫一個令人困惑的別名而已”。
1.2.6 共識機制
分布式交易總賬需要在盡可能短的時間內做到安全、明確及不可逆,便于提供一個最堅實且去中心化的系統。在實踐中,該流程分為兩個方面:一是選擇一個獨特的節點來產生一個區塊,二是使交易總賬不可逆。目前主流的共識機制有工作量證明(POW)、股權證明(POS)、授權股權證明(DPOS),還有瑞波和恒星的共識協議,以及以太坊的共識協議等。
1 工作量證明機制
比特幣系統使用工作量證明機制,即所謂的挖礦,使更長總賬的產生具有計算性難度。該機制通過與或運算,尋找一個滿足特定規則的隨機數,即可獲得本次記賬權,發出本輪需要記錄的數據,在全網其他節點驗證后一起存儲。
工作量證明機制就像樂透游戲,平均每10分鐘有一個節點找到一個區塊。如果兩個節點在同一時間找到區塊,那么網絡將根據后續節點的決定來確定以哪個區塊構建總賬。從統計學角度講,一筆交易在6個區塊(約1小時)后被認為是明確確認且不可逆的。然而,核心開發者認為,需要120個區塊(約1天)才能充分保護網絡不受來自潛在的更長的已將新產生的幣花掉的攻擊區塊鏈的威脅。盡管出現更長的區塊鏈會變得不太可能,但任何擁有巨大經濟資源的人都仍有可能制造一個更長的區塊鏈或者具備足夠的哈希算力來凍結用戶的賬戶。
工作量證明機制的優點是,完全去中心化,節點自由進出。其缺點也很明顯,首先,目前比特幣已經吸引了全球大部分的算力,其他再用工作量證明共識機制的區塊鏈應用很難獲得相同的算力來保障自身的安全;其次,挖礦也造成大量的資源浪費;再次,共識達成的周期較長,不適合商業應用。
2 股權證明機制
股權證明機制就是直接證明所有者持有的份額,雖有很多不同的變種,但基本概念都是產生區塊的難度應該與所有者在網絡里所占的股權(所有權占比)成比例。除了混合性的點點幣(PPC)之外,真正的股權證明(POS)幣是沒有挖礦過程的,也就是在創世區塊內就寫明了股權證明,之后的股權證明只能轉讓,不能挖礦。到目前為止,已有兩個系統開始運行,即點點幣(Peercoin)和未來幣(NXT)。點點幣使用一種混合模式,用所有者的股權來調整相應的挖礦難度。未來幣使用一個確定性算法,以隨機選擇一個股東的方式來產生下一個區塊。未來幣的算法基于所有者的賬戶余額來調整其被選中的可能性。未來幣和點點幣都分別解決了由誰來生產下一個區塊的問題,但它們沒有找到在適當的時間內使區塊鏈具備不可逆的安全性的方法。根據筆者能找到的信息,要做到這點,點點幣需要至少6個區塊(約1小時),未來幣需要10個區塊。筆者找不到在10個區塊后未來幣能提供什么級別的安全性的根據。
基于交易的股權證明機制(Transactions as Proof of Stake, TaPOS)在每筆交易中都包含區塊鏈中前一個區塊的哈希值。通過該系統,對任何人而言,網絡變得越來越安全而不可逆,因為最終每個區塊都通過了股東投票。然而,TaPOS并沒有定義誰來產生下一個區塊。
在現實世界中,股權證明很普遍,最簡單的就是股票。股票是用來記錄股權的證明,同時代表著投票權和收益權。股票被創造出來以后,除了增發外,不能增加股權數量,要獲得股票只能轉讓。在純POS體系中(如未來幣),沒有挖礦過程,初始的股權分配已經固定,之后只是股權在交易者之間流轉,非常類似于現實世界中的股票。股權從創世區塊中流出,被交易者買賣而逐漸分散化。
3 瑞波共識機制
瑞波共識算法是指,使一組節點能夠基于特殊節點列表達成共識。初始特殊節點列表就像一個俱樂部,要接納一個新成員,必須由51%的該俱樂部會員投票通過。共識遵循這核心成員的51%權力,外部人員沒有影響力。由于俱樂部由“中心化”開始,因此它將一直是“中心化”的。與比特幣及點點幣一樣,瑞波系統將股東們與其投票權隔開,并因此比其他系統更中心化。
4 授權股權證明機制
當使用去中心化自治公司(Decentralized Autonomous Company, DAC)這一說法時,去中心化表示每個股東按其持股比例擁有影響力,51%股東投票的結果將是不可逆且有約束力的,其挑戰是通過及時而高效的方法達到51%批準。為達到這個目標,每個股東可以將其投票權授予一名代表,獲票數最多的前100位代表按既定時間表輪流產生區塊。每名代表分配到一個時間段來生產區塊。所有的代表將收到等同于一個平均水平的區塊所含交易費的10%作為報酬。如果一個平均水平的區塊含有100股作為交易費,一名代表將獲得10股作為報酬。網絡延遲有可能使某些代表沒能及時廣播他們的區塊,而這將導致區塊鏈分叉。然而,這不太可能發生,因為制造區塊的代表可以與制造前后區塊的代表建立直接連接。這種建立與你之后的代表(也許也包括其后的那名代表)的直接連接是為了確保你能得到報酬。該模式可以每30秒產生一個新區塊,并且在正常的網絡條件下區塊鏈分叉的可能性極其小,即使發生也可以在幾分鐘內得到解決。
股份授權證明機制DPOS(Delegate Proof of Stake)是一種新的保障加密貨幣網絡安全的算法。它在嘗試解決比特幣采用的傳統工作量證明機制以及點點幣和未來幣所采用的股份證明機制的問題的同時,還能通過實施科技式的民主以抵消中心化所帶來的負面效應。
通過引入“受托人”這個角色,DPOS可以降低中心化所帶來的負面影響。一共有101位受托人通過網絡上的每個人經由每次交易投票產生,他們的工作是簽署(生產)區塊。通過去中心化的投票過程,DPOS能讓網絡比別的系統更加民主。與其要讓我們完成在網絡上信任所有人這個不可能完成的任務,不如讓DPOS通過技術保護措施來確保那些代表網絡來簽署區塊的人們(受托人)能夠正確地工作。除此之外,在每個區塊被簽署之前,必須先驗證前一個區塊已經被受信任節點所簽署。像DPOS這樣的設計,實際上縮減了必須要等待相當數量的未授信節點進行驗證后才能夠確認交易的時間成本。