中科院研究員:圍繞區塊鏈“不可能三角”的各種可能
作者 | 焦臻楨博士(中國科學院計算技術研究所副研究員 碩士生導師)
來源 | 計算機世界
近年來唱衰區塊鏈(尤其是公鏈)的聲音中,提得最多的是它的交易處理效率太差、TPS (每秒交易次數)太低的問題,比如“比特幣每秒只能處理個位數的交易,以太坊也不過20 多筆每秒,甚至不具備支援一個普通規模應用的能力,還想C 位出道成為下一代分散式社會的底層平臺?”這類問題不僅區塊鏈唱衰者常掛嘴邊,也常常是國內外區塊鏈團隊在講述自己的工作的聚焦所在。然而,很多團隊常在“研發”短短數月內就號稱已經研發出TPS 高達十萬甚至百萬的區塊鏈底層系統,噱頭十足,然而真真假假,頗難分辨。
為了更好理解這個有著持續熱度的問題,今天我們從技術視角出發,講講目前能夠帶來TPS 提升的“靠譜”方法和技術路線。希望在閱讀這篇文章後,大家再看到類似“百萬TPS”之類宣傳時, 就能夠理解他們到底在講什麼:
首先,區塊鏈有一個著名的“三難問題”,也常稱為“不可能三角”,即區塊鏈系統無法同時在可擴充套件性(Scalability,國內也常譯為高效性)、安全性(Security)和去中心化程度(Decentralization)這三項指標上做到最優。從另一個角度來說,那就是區塊鏈必須得在這三者之間做出一個優化的權衡。
“不可能三角”對區塊鏈的重要意義在於:完全拋開“三角”中的其他兩者而孤立地去談其中一者, 那就根本不是區塊鏈。例如,支付寶TPS 很高,但它是中心化的,而非區塊鏈所面對的“多方參與、共同記賬”的開放環境。再比如聯盟鏈(一種面向企業服務領域的區塊鏈方案),它就是一種TPS 很高的區塊鏈,但它在安全和去中心化程度上都有一定的妥協,僅能用於成員已知且可信的環境,而非區塊鏈公鏈所面對的開放成員(Open Membership)環境。因此,當我們聽到別人提起高TPS 的時候, 首先要想一想,這個高TPS 背後隱藏了什麼,它究竟是否真的具有價值。
近年來,很多研究工作都圍繞如何在“不可能三角”上取得一個優美權衡而努力,而這些努力大致可分為三個大類:第一類是從共識機制出發,第二類是從區塊結構出發,第三類是從系統實現出發。
從共識機制出發是近年來最火熱的話題和路線
除了我們耳熟能詳的工作量證明(PoW)和權益證明(POS)之外,還出現了 DPoS、Algorand、zk-SNARK、Stellar 等,大概能列出數百種。雖然花樣繁多,但是我們可以把它們再細分為三個子類:
1.中本聰原教旨主義者:這部分人以中本聰的比特幣白皮書為聖經,最多也就是圍繞BIP 的工作方向對以PoW 為核心的中本聰共識進行小修小補,在這一派中,嘗試提升TPS 的舉措包括調整區塊大小(甚至這樣的行為都會引發巨大爭議)等。
這條戰線上往往以傳統的比特幣礦機礦場為主,雖然增加區塊大小會在網際網路上造成更多的傳輸延遲繼而增加分叉風險,但由於礦場網路的特殊性等原因,在實際中還是能夠獲得數倍的TPS 提升(這一倍數與區塊增大倍數直接相關)。
2.在中本聰共識基礎上進行較大創新的改良派:這部分人又可以分為兩類,一類堅信“計算即正義”,認為只有PoW 中的計算才是數字世界的真諦;另一類則務實地認為唯有PoW經歷過多年的考驗且幾乎沒有出現過大的問題,所以它仍然應該是首選。
不過在改良派中,普通認為基於PoW 的共識協議需要有大的創新才能與時俱進。早期從網路和分散式系統等角度對區塊鏈進行改良的學術派多在這個方向上有所建樹,代表性工作包括 Bitcoin-NG、Byzcoin 和Bicomp 等。這些方法一般對傳統中本聰共識過程有較大的改變,包括改變PoW 的作用、改變區塊結構、解耦區塊產生和交易打包過程等。
然而,它們往往也會帶來新的問題,比如,Bitcoin-NG 可以在PoW 共識下達到很高的TPS,但卻會造成網路中出現個別節點權力過大的問題。基於此,Bicomp 提出一種雙層區塊結構,讓不同節點打包不同功能的區塊,各司其職,不能越權,制約了網路中霸權者的產生。
除了以上代表性工作,在改良派中還有一部分工作顯得更為激進,體現在對區塊鏈的“鏈”式結構都進行了重構,提出諸如有向無環圖(DAG)等結構,代表工作有IOTA 和Conflux 等,詳細介紹參見本文的另一個大類“區塊結構”中的內容。該型別工作的TPS 參差不齊、相差較大,從數百到數萬都有,TPS 越高者在PoW 安全性和去中心化程度上犧牲越大,這就或多或少違背了選擇PoW 的初衷。此外,該類方法總體還會受限於PoW 的計算耗時、區塊銜接設計與傳播時間、交易傳播時間等。
3.完全拋棄中本聰共識的顛覆派:主要代表為舊派網紅PoS、DPoS,或新貴如zk-SNARK、Algorand 等。最著名、也是最飽受爭議的代表性人物之一可能是EOS 的提出人BM。PoS 等共識完全拋棄了傳統“挖礦”的概念,在PoS 的支持者看來:“礦工聽起來太土了,埋頭計算又辛苦又浪費資源,都商業社會了,金錢才是最大的正義”。PoS 的理論依據是“掌握了系統中最多錢的人不會去做傷害系統的事情”。妥妥的資本主義!PoS 共識無須挖礦且沒有繁重的雜湊計算過程,可以非常快速地產生區塊,因此其TPS 方面的表現自然能夠高出PoW 一大截。
然而,實踐才是檢驗真理的唯一標準,EOS 等公鏈上線後曾爆出使用成本過高等問題,各種非議也是接連不斷。PoS 體系尚未經受過長時間且大範圍的考驗,不像PoW 一樣已經扛過了大批黑客一輪又一輪的攻擊。因此,很難下斷言說PoS 是解決“不可能三角”的完美之道。而且,PoS 的理論基礎必然會帶來資源分配的不均, 並會隨著時間的推移不斷放大,產生更大的不公,這恰恰是犧牲了去中心化的一個表現。
一些新的工作採用隨機選擇出塊者或驗證者的方式來代替“有錢說了算”,例如Algorand,但Algorand 飽受爭議之處又在於它放棄了經濟激勵,這又降低了網路節點參與的熱情度。幹活了不給錢,那還繼續留下來幹活的很可能就會有越來越多的不良動機者。但不管怎樣,越來越多的新工作誕生在這一領域,連以太坊也在嚴肅思考向PoS 遷移,並已基本確定了 Casper 協議。
這一大類的方法往往計算耗時較少,且由於打包過程中沒有傳統中本聰共識的不確定性,區塊尺寸可以更大以容納更多交易。這個型別的工作以高TPS 著稱,部分宣稱可達百萬。但考慮到打包節點的處理能力、其周圍網路潛在的擁塞和延遲、打包節點遴選耗時等,真實的T PS 很難達到對外宣稱的量級。此外,該類工作所經歷的現實環境下的考驗仍不足以證明其安全性和可靠性,還需我們拭目以待。
從區塊結構出發,也是當前的研究和實踐的熱點
區塊鏈,顧名思義,以鏈的形式串連區塊,這就是區塊鏈的基本結構。然而,有些做法顛覆了這個結構,就是我們上文提到的DAG。DAG 不是鏈,更像一個網。最著名的DAG 結構如IOTA,甚至連區塊都沒有,直接把海量的交易通過單向引用連結成了一張網,如下圖所示。
DAG 的出現來源於以下兩點思考:
一是在有限TPS 的條件下,如何記錄儘可能多的資料?
二是如何解決傳統鏈式結構下PoW 共識易分叉所帶來的隱患?
分叉問題是因為網路規模過大時,不同節點可能同時產生不同的區塊並在周圍延續、形成不同的分支鏈。當不同分支鏈相遇時,就必須面臨僅可選擇其一的窘境,而另一條會被直接丟棄,上面所有的交易也隨之消失。PoW 區塊鏈的易分叉問題會帶來很多不良影響,包括潛在的自私挖礦攻擊、算力浪費,以及眾所周知的51%攻擊等。由此可見,鏈式結構存在一定頑疾,這也給了DAG 一派立足的基礎。
採用DAG 的方案在近段時間裡大量湧現,並常以區塊鏈3.0 自詡,儼然已穩居區塊鏈新一代接班人地位。然而,DAG 也有其頑疾。首先是交易確認時間:DAG 的非鏈式結構犧牲了穩定性和交易的固定時間序,交易或區塊的提交相對鏈式而言更為隨意,因此更難被最終確認,會帶來很大的不穩定性,而不能被最終確認的交易,也就談不上有什麼高的TPS。
為解決這個問題,IOTA 引入了協調器的角色,被協調器確認的交易即是被確認的交易。然而,協調器的出現背離了 IOTA 最初的理論基礎,這個類中心化形態的存在,也讓IOTA 團隊在解釋“是否去中心”這個問題上動更多腦筋自圓其說了。與之相比,Conflux 引入了一種類似於基準鏈的設計來解決DAG 的高動態問題,可以看成Conflux 在鏈和DAG 結構之間進行了融合,用鏈結構來錨定DAG 的時序。
然而,DAG還存在另一個大的問題:缺乏可行的激勵機制。雖然採用PoW,卻無法激勵礦工挖礦,甚至無法結算交易的手續費,這還是因為DAG 結構中寫入區塊過於隨意而導致的。
需要說明的是,正如我們上文提到的,嚴謹地說,DAG 型別的工作應該歸入我們上文提到的中本聰共識改良派中進行介紹。然而,對區塊結構變化的探討並不僅限於DAG,一些團隊也開始在這個方向上有了新的思考和嘗試。尤其是隨著區塊鏈在物聯網等場景的繼續深入,在鏈式結構或DAG 結構之外,還會有新的高效結構來滿足更多的業務場景。因此,我們將其作為一個獨立的大類, 並會在後續進行更多介紹。
從系統實現的工程角度提升區塊鏈TPS
系統實現流派奉行“少談理論,多講演算法,務求快速且實用”的理念。系統實現派可以在不改動現有共識機制的基礎上提高TPS,其做法也可細分三個子類。
1.多鏈並行
古語有云,“三個臭皮匠頂個諸葛亮”。多鏈並行的做法顯然受到了這一思想的影響。一條鏈
TPS 低,同時執行多條鏈一起記賬總能提升TPS 吧?然而,多鏈會帶來跨鏈的問題,隨著交易量的增加,跨鏈資料的互通可能十分頻繁,資金可能在多個鏈上流轉,一個賬戶可能同時在多個鏈上產生交易,這些會帶來管理和效率的問題。多鏈並行的實現中,計算TPS 往往是簡單累加,於是,商業宣傳想要多高的TPS,就並行多少條鏈。這樣做宣傳可行,實際實施和管理卻不現實。
2.側鏈技術
側鏈技術是在使用者間臨時搭建交易鏈路,解決同一對使用者的多次頻繁交易給系統帶來的TPS壓力,其代表專案是閃電網路。比如有兩個商戶一天內多次互相交易,但是當一天結束時,卻發現雙方你來我往了 2000 多次交易,但來往金額卻剛好相抵歸零,正是側鏈技術最適合運用的場景。側鏈讓雙方先在鏈下交易,一段時間後,將最終結算金額記錄在鏈上,減少直接作用在鏈上的交易數量。
但是,側鏈的實現藉助了中心化的方法,它的TPS 數量不應該計入區塊鏈的TPS。因此,側鏈技術也常被稱為鏈下擴充套件。不過,很多專案在宣傳中故意無視這之間的差異,混淆大眾視聽。側鏈技術除了無法提升區塊鏈本身的TPS 之外,另一個大問題是,中心化的管理方式不論安全還是效率都存在瓶頸。
3.分片技術
分片技術是將資料處理分散在不同的系統分片內,也是目前較為熱門的技術之一。分片技術源於分散式資料儲存,與多鏈技術類似,屬於並行化解決方案。它與多鏈技術最大的區別在於,所有分片仍然基於一條鏈,因此,在不同的分片間高效協同以保持共識的有序性和正確性極具挑戰。
分片條件下的TPS 計算,應以交易的終局狀態達成為準。將各分片瞬時TPS 累加進行宣傳是常見做法, 但缺乏實際意義。分片是目前的熱點方向,在前述工作如Bicomp 中也採用了分片的架構。未來我們也會對這一技術進行更為詳細的介紹。
可以看到,提高TPS 的技術路線各有利弊與挑戰。希望讀完本文後,當我們再聽到諸如百萬TPS 的宣傳時,能夠理性判斷箇中虛實。
我們身邊常充斥著虛假的技術進步和宣傳,總以為技術已一日千里。但吹噓出來的泡沫,就像沙灘上蓋不起高樓,不可能在實踐中展現出真正的進步。於是,每當現實不能滿足期待,大眾的信心就被消磨,大眾也會迅速從期待轉化為失望,繼而轉變為唾罵。
但技術的發展一定需要嚴謹的探討,更需要長時間、科學有序地實踐、演進和完善。我們往往因為缺乏對技術本身的理解和對技術發展規律的必要尊重,對包括區塊鏈在內的技術操之過急,對現狀有過高期待,這樣的心態無益於新興技術的發展。而從業者則更應該在這樣的環境壓力下苦練內功,務實創新,用實際行動為行業營造良性的環境和發展動能。