文章來源:火幣區塊鏈研究院
作者:袁煜明、劉洋

摘要

本報告通過對 27 個典型區塊鏈項目分析,借鑑計算機網絡分層管理、各層標準化設計的思想,將區塊鏈與傳統互聯網 OSI 模型結合,建立區塊鏈技術可擴展方案分層模型三個一級層級:Layer 0 層數據傳輸層,Layer 1 層 On-Chain 公鏈自身(底層賬本)層和 Layer 2 層 Off-Chain 擴展性(應用擴展)層。在一級層級的基礎上,結合區塊鏈架構又可以進一步分解成七個二級層級來詳細研究。

Layer 0 層數據傳輸層與傳統 OSI 七層模型對應,優化區塊鏈與傳統網絡的結合問題。區塊鏈是整個互聯網協議層中的最上層,本身還是要依賴於底層的協議爲它工作,雖然在比特幣 P2P 網絡設計的時候已經考慮了節點之間的發現、節點連接的握手協議、節點間地址廣播和數據通信等,鑑於已經有部分項目開始探索 P2P 網絡與傳統 OSI 模型的結合,甚至將改進延伸到數據鏈路層,本報告傾向將 P2P 網絡和傳播機制併入到 Layer 0 層和傳統 OSI 模型一起作爲一類可擴展方案進行研究。

Layer 1 層解決底層賬本問題,主要負責安全,妥協性能,注重於記賬功能。結合區塊鏈架構,Layer 1 層可以分解成四個二級層級,從網絡層的驗證機制上使用諸如分片技術去改進,從數據層的數據區塊使用諸如隔離見證和鏈式結構上使用 DAG 等技術去改進,從共識層的共識機制上去改進;

Layer 2 層解決廣義應用問題,主要負責性能,妥協去中心化,注重於計算功能。結合區塊鏈架構,Layer 2 層可以有兩個二級層級,從跨鏈、狀態通道等多鏈並行、鏈上鍊下結合甚至是中心化的方式來滿足性能需求,藉助 Layer 1 層來保證安全。

通過閱讀本研究報告,讀者可以充分了解到當前區塊鏈技術發展趨勢,尤其是可擴展方案的基本原理、思考方向和主要技術,並結合對應的項目案例加深理解,提升體系分析、辨別項目的能力。

區塊鏈技術的本質是一個服務於現實場景的底層賬本,不可盲目萬能化,Layer 1 層就是作爲這個底層賬本的主要載體充分服務於 Layer 2 層,根基於更適合的 Layer 0 層。

第一章 當前區塊鏈技術主要瓶頸

1.1 區塊鏈技術發展概述

2009 年 1 月,比特幣網絡正式運行,比特幣的成名造就了區塊鏈技術。如今,從區塊鏈技術的發展上看,普遍公認的主要有兩個階段:一是以比特幣(BTC),萊特幣(LTC)等爲代表的作爲支付貨幣的第一代區塊鏈;

在第一代的基礎上,第二代區塊鏈的發展其實有幾個方向:具備圖靈完備的智能合約功能是大家說的最多的一個方向,典型代表有以太坊(ETH)和柚子(EOS)等;隱私加密保護相對於第一代區塊鏈也是一個很重要的改進,典型代表有環簽名技術的門羅幣(XMR)和零知識證明的大零幣(ZEC)等;除此之外,一個區別傳統區塊鏈概念的有向無環圖 DAG 也是一個重大的改進方向,典型代表如 IOTA 等。

而第三代區塊鏈目前並沒有普遍的共識,這也是當前區塊鏈發展的一個迷茫期,大家都在摸索中,有將 DAG 和跨鏈技術作爲第三代的,也有將 Layer 理論(後文將具體介紹)作爲第三代發展方向的。其中,如果將 DAG 作爲並行於狹義區塊鏈(注:廣義區塊鏈技術是包含 DAG 技術的)的一種技術來看時,我們也能做出另一種類比:第一代 DAG 項目和第一代狹義區塊鏈項目都以支付貨幣功能作爲第一代,當 DAG 系列出現支持智能合約的突破後,便可以類比於第二代狹義區塊鏈的階段。

區塊鏈技術發展階段可以用圖 1 來表示:

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

1.2 區塊鏈的三元悖論

從比特幣問世,區塊鏈行業的發展也有 10 年了,之所以說到當前處於區塊鏈發展的一個迷茫期,與區塊鏈技術突破和落地應用緊密相關。在技術上,區塊鏈的三元悖論是最基本的法則:區塊鏈系統最多能在去中心化、安全性、可擴展性三屬性中取其二;換句話說,區塊鏈系統在去中心化、安全性、可擴展性三屬性必須有所取捨,劃分出優先級,或者達到動態最優。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

1.3 當前區塊鏈技術主要瓶頸

理解了區塊鏈的三元悖論,就能理解爲什麼大家一直說區塊鏈公鏈項目不能滿足商業需求的論述了。當前區塊鏈技術主要瓶頸就在於公鏈項目的可擴展性有限,而可擴展性最直接的表徵一般採用 TPS (Transactions Per Second)來間接描述。

TPS 是一個有成熟定義的計算機術語,代表了系統每秒鐘能夠處理的業務數量,是衡量一個系統吞吐量的核心指標。簡單地說,TPS 越高,這個系統的事務處理能力越強,越不容易造成網絡擁堵,在高併發的業務領域和商業級應用場景中有很大的優勢。TPS 越低,意味着系統每秒能夠處理的事務數量越低,如果是在一個支付系統中,交易速度會越慢,對應的交易成本也會越高。由於 TPS 是一個量化指標,所以其計算公式是確定的,即:

TPS = 系統併發數 / 平均響應時間

其中系統併發數指系統同時處理事務的最大數量,平均響應時間爲系統處理一個事務平均花費的時間,所以不論是區塊鏈結構還是傳統結構,系統的 TPS 都由系統的併發數和平均響應時間決定。

在區塊鏈中,TPS 可以理解成每秒鐘處理的交易數。衆所周知,BTC 平均每 10 分鐘出一個塊,每個塊大小 1MB,平均每筆交易的大小爲 600 字節,那麼每個塊平均能夠處理 1600 筆交易,即 TPS=1600/(10*60)=2.67,即使是高峯數據統計,比特幣的 TPS 也是個位數的,很多資料會以 5~7TPS 做爲 BTC 的 TPS 值。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

而 ETH 目前仍然是 POW 的挖礦方式,所以處於 20~30TPS 區間,即不到百位 TPS 檔位。熱門的 EOS 一直以並行百萬級宣傳,主網上線後,研究員們搭載的服務器測試結果並不足 1000,隨着 DPOS 的正常運作,最新資料顯示已經達到 3000+,在不考慮並行的情況下,相對中心方式的 EOS 最終 TPS 應該也是在千位檔,而並行實現百萬級的概念在看完本報告後相信大家會有一個新的見解。理論上,在相對同等狀態下,ETH POS+sharding 應該和 EOS 的 DPOS+LMAX 同處於千位檔。

看完區塊鏈項目的數據,我們對比一下 Visa 的數據:Visa 平均處理 2000TPS,每日平均峯值可以達到 4000TPS,理論上最高能夠支持 5.6 萬 TPS;而 Paypal 全年處理 490 萬筆交易,性能可達 10 萬 TPS;淘寶 2017 年雙十一交易創峯值 32.5 萬 TPS,支付峯值 25.6 萬 TPS。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

在傳統集中式系統中,客戶端和服務器端的角色是分離的,即用戶所在的客戶端負責發起請求,然後中心服務器負責接收、驗證、處理等一系列工作,整個系統的數據儲存和記錄也都由中心服務器負責。所以在傳統的集中式系統中,事務處理流程很簡單,由客戶端發出請求,由服務器處理後更新數據庫,即可返回客戶端,是一種集中式數據庫系統。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

因此在傳統的集中式系統中,不論是系統的併發量還是事務的平均處理速度都和中心服務器的性能有着直接的關係。中心服務器性能越強,內存越大,數據庫訪問速度越快,整個系統的 TPS 就會越高。此外,傳輸過程中帶寬的增大,客戶端和服務器端物理距離的減少也可以使得系統平均響應時間減少,從而增大 TPS。

而在區塊鏈分佈式系統中沒有一箇中心服務器來處理事務,每個節點都是一箇中心,所以就必須要解決數據分佈式存儲的公平性和一致性問題。所謂公平性,就是確保每個節點都能擁有記賬的權利,而不會出現某些節點壟斷記賬。所謂一致性,就是每個節點的數據賬本保持同步更新,這就要求每一條數據都需要經過多個節點甚至全網節點的驗證和確認。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

概括地說,在區塊鏈分佈式系統中,一筆交易從發出請求到確認需要經歷以下步驟:

1)由節點發出交易請求,並且廣播至整個網絡;

2)其他節點接收交易請求,並且驗證,如果驗證通過,則放入待記錄交易列表(交易池);

3)各個節點爭搶記賬權(即搶奪新的區塊),成功獲得記賬權的節點將待記錄的交易請求記入新的區塊中,然後將區塊廣播至整個網絡;

4)網絡中其他節點接收區塊,並且驗證,如果驗證通過,則該節點確認區塊的合理性,將該區塊記錄自己的數據庫;

5)當有超過一定數量的節點都記錄了該區塊,表明整個區塊鏈系統認可了,此時最初的交易請求才算被確認。

在區塊鏈這種分佈式系統中,一個事務的記賬權首先需要各個節點基於共識機制進行爭搶,這就需要消耗大量時間。其次,一筆事務還需要經過多個甚至全部節點的反覆驗證和確認才能被寫入數據庫,這大大減慢了事務的處理速度。如果某個節點的響應速度很慢,整個系統的處理速度都會被拉低。而在傳統集中式系統中,事務永遠由中心服務器處理,也不需要多個節點的反覆驗證和確認,所以區塊鏈的 TPS 相較於傳統集中式系統的 TPS 普遍要低,並且我們無法單純用強化中心服務器性能的方式來提升整個區塊鏈的 TPS。同時,前文也提到淘寶雙十一 TPS 是有兩個數值的,一個是交易創建峯值,一個是支付峯值,在區塊鏈中,支付峯值纔是確認的過程,會顯得更加重要和實際,嚴格的講,區塊鏈 TPS 的評估應該參考每秒確認交易數量 CTPS (Confirmed Transactions Per Second)來描述一個系統的真實性能,不過鑑於公開資料並不嚴格區分 TPS 的細分定義,也不屬於本報告的重點,所以本報告也只採用 TPS 來整體描述,僅作對比參考之用。

由此可見,即使中心化的系統由於硬件等各種問題的制約,TPS 的峯值不超過 10 萬級別,而正常日平均 TPS 也不超過 1 萬級別(參考 Visa),作爲一個底層分佈式賬本的區塊鏈項目一味追求高 TPS 或者是宣傳極高 TPS 就值得大家仔細思考一下了。

考慮到日常應用的需求,區塊鏈主流公鏈項目 BTC、ETH 以當前最高 1000TPS 的目標也落地困難,於是便產生了可擴展性的討論。至於衆多號稱 TPS 破萬,甚至百萬的項目,在閱讀完本報告後,相信大家會有個更清晰的認識和理解。

第二章 區塊鏈技術可擴展方案分層模型

2.1 區塊鏈技術可擴展方案分層模型綜述

要系統的考慮區塊鏈技術可擴展方案,首先必須理解區塊鏈技術框架,如圖 6 所示:

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

當前主流的區塊鏈架構包含六個層級:網絡層、數據層、共識層、激勵層、合約層和應用層。圖中將數據層和網絡層的位置進行了對調,主要用途將在下一節中詳述。

網絡層:區塊鏈網絡本質是一個 P2P (Peer-to-peer 點對點)的網絡,網絡中的資源和服務分散在所有節點上,信息的傳輸和服務的實現都直接在節點之間進行,可以無需中間環節和服務器的介入。每一個節點既接收信息,也產生信息,節點之間通過維護一個共同的區塊鏈來同步信息,當一個節點創造出新的區塊後便以廣播的形式通知其他節點,其他節點收到信息後對該區塊進行驗證,並在該區塊的基礎上去創建新的區塊,從而達到全網共同維護一個底層賬本的作用。所以網絡層會涉及到 P2P 網絡,傳播機制,驗證機制等的設計,顯而易見,這些設計都能影響到區塊信息的確認速度,網絡層可以作爲區塊鏈技術可擴展方案中的一個研究方向;

數據層:區塊鏈的底層數據是一個區塊+鏈表的數據結構,它包括數據區塊、鏈式結構、時間戳、哈希函數、Merkle 樹、非對稱加密等設計。其中數據區塊、鏈式結構都可作爲區塊鏈技術可擴展方案對數據層研究時的改進方向。

共識層:它是讓高度分散的節點對區塊數據的有效性達到快速共識的基礎,主要的共識機制有 POW (Proof Of Work 工作量證明機制),POS (Proof of Stake 權益證明機制),DPOS (Delegated Proof of Stake 委託權益證明機制)和 PBFT (Practical Byzantine Fault Tolerance 實用拜占庭容錯)等,它們一直是區塊鏈技術可擴展方案中的重頭戲。

激勵層:它是大家常說的挖礦機制,用來設計一定的經濟激勵模型,鼓勵節點來參與區塊鏈的安全驗證工作,包括髮行機制,分配機制的設計等。這個層級的改進貌似與區塊鏈可擴展並無直接聯繫。

合約層:主要是指各種腳本代碼、算法機制以及智能合約等。第一代區塊鏈嚴格講這一層是缺失的,所以它們只能進行交易,而無法用於其他的領域或是進行其他的邏輯處理,合約層的出現,使得在其他領域使用區塊鏈成爲了現實,以太坊中這部分包括了 EVM(以太坊虛擬機) 和智能合約兩部分。這個層級的改進貌似給區塊鏈可擴展提供了潛在的新方向,但結構上來看貌似並無直接聯繫。

應用層:它是區塊鏈的展示層,包括各種應用場景和案例。如以太坊使用的是 truffle 和 web3-js. 區塊鏈的應用層可以是移動端,web 端,或是是融合進現有的服務器,把當前的業務服務器當成應用層。這個層級的改進貌似也給區塊鏈可擴展提供了潛在的新方向,但結構上來看貌似並無直接聯繫。

由此可見,單從結構上分析,區塊鏈技術可擴展方案可以直接從網絡層(P2P 網絡、傳播機制和驗證機制)、數據層(數據區塊和鏈式結構)以及共識層進行改進達到優化。

以太坊社區在區塊鏈可擴展性上曾提出過 Layer 分層改進的概念:Layer 1 層改進和 Layer 2 層改進。Layer 1 層改進是指通過對某條公鏈本身的改進來提升它的可擴展性,即 On-Chain 鏈上改進;Layer 2 層改進是指不影響該公鏈本身,通過其他方式來實現可擴展性的提升,即 Off-Chain 鏈下改進(此處鏈下的含義僅僅指脫離該公鏈),如後文將會介紹的側鏈、跨鏈和狀態通道等。

在這個理解的基礎上,我們借鑑計算機網絡分層管理、各層標準化設計的思想,將區塊鏈與傳統互聯網 OSI 模型結合,建立區塊鏈技術可擴展方案分層模型三個一級層級:Layer 0 層數據傳輸層,Layer 1 層 On-Chain 公鏈自身(底層賬本)層和 Layer 2 層 Off-Chain 擴展性(應用擴展)層。在一級層級的基礎上,結合區塊鏈架構又可以進一步分解成七個二級層級來詳細研究,具體如圖 7 的劃分:

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

2.2 Layer 0 層數據傳輸層

要理解 Layer 0 層,先得回顧一下開放系統互連參考模型 OSI 七層模型 (Open System Interconnect),它是國際標準組織 (ISO) 和國際電報電話諮詢委員會 (CCITT) 聯合制定的開放系統互連參考模型,爲開放式互連信息系統提供了一種功能結構的框架。它從低到高分別是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。在實際使用中,由於理論研究和現實落地的時差,廣泛使用的是 TCP/IP 協議,不過兩者在本質上是可以一一對應的。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

大部分的區塊鏈項目所使用的底層網絡協議就是 TCP/IP 協議,少部分支持 UDP 協議。從協議層角度看,區塊鏈是基於 TCP/IP 協議的,也就是在傳輸層之上,屬於最上面的應用層。從這個角度來看,區塊鏈本身只是整個互聯網協議層中的最上層,它本身還是要依賴於底層的協議爲它工作。對應的接口就是區塊鏈的網絡層,這也是本報告將數據層和網絡層位置對換的主要原因,雖然在比特幣 P2P 網絡設計的時候已經考慮了節點之間的發現、節點連接的握手協議、節點間地址廣播和數據通信等,鑑於已經有部分項目開始探索 P2P 網絡與傳統 OSI 模型的結合,甚至將改進延伸到數據鏈路層,本報告傾向將 P2P 網絡和傳播機制併入到 Layer 0 層和傳統 OSI 模型一起作爲一層進行可擴展方案研究。

這樣,Layer 0 層數據傳輸層改進的主要思路就是通過加快全網節點之間的傳播速度來提升全網的確認共識,改進主要體現在上圖中標紅的傳輸層(TCP/IP)和網絡層(IP)上,且不論這樣的效果究竟有多大,從邏輯上這樣的一個思路是具有合理性的。具體改進可以有:P2P 網絡拓撲結構改進,節點之間的快速發現,節點之間的快速廣播和通信等。

2.3 Layer 1 層 On-Chain 公鏈自身改進

Layer1 層 On-Chain 公鏈自身改進的主要思路的出發點是將區塊鏈技術底層賬本和上層應用分離,底層賬本的重心放在安全性和去中心化上,在性能上有所取捨。只是將需要共識確權的數據上鍊,從而降低對 TPS 的需求,從目前技術發展來看,可能千位級別(1000~3000) TPS 即可滿足。結合前文介紹的區塊鏈的架構可以看出,能夠提升的地方有共識層的機制改進和數據層的數據區塊大小調整、鏈式結構的優化以及網絡層的驗證機制改進等方法。

所以,Layer 1 層改進的思路是做好一條底層賬本公鏈,將其他的事情交由 Layer 2 層來互補處理。這裏對於隱私加密技術的需求對 Layer 1 層會是一個不錯的附加屬性,但不屬於可擴展方案討論範疇,在沒有很好的處理方案前,在 Layer 2 層考慮也是個能接受的選擇。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

2.4 Layer 2 層 Off-Chain 擴展性改進

Layer2 層 Off-Chain 擴展性改進是基於區塊鏈的底層賬本技術之上的應用型擴展,可以是基於區塊鏈技術的應用,也可以是中心化的應用結合,它的重心放在性能和安全上,對去中心化有所取捨。最終關鍵數據傳輸給 Layer1 層上鍊,本身利用高性能處理大量數據,達到現實世界對性能的需求。該類型的改進有跨鏈——基於區塊鏈技術的多鏈生態擴展;狀態通道——鏈下數據處理來提升性能;Plasma 通過一系列的智能合約,來構建多種應用場景達到多鏈並行的結果;Truebit 一種幫助以太坊在鏈下進行繁重或者複雜運算的技術等。

所以,Layer 2 層作爲 Layer 1 層的互補來解決與現實世界的需求,並將必要的數據上鍊到 Layer 1 層。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

綜上,我們可以將區塊鏈技術可擴展方案分層模型以及當前比較典型的研究項目整理成下面一張思維導圖,並在下一節結合具體項目來闡述。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型圖 11 區塊鏈技術可擴展方案分層模型下典型項目思維導圖

第三章 Layer 0 層數據傳輸層可擴展方案

3.1 中繼網絡(Relay Network)

比特幣設計的 P2P 網絡是個節點隨機連接的網絡,交易和塊的信息傳輸都是通過這些節點,直到全網所有的節點都收到最新的交易和塊信息。原本上,這個設計在不考慮性能需求時是非常完美的,但是隨着比特幣的關注度和使用性的提高,2014 年 Bitcoin Core 貢獻者 Matt Corallo 提出了 Bitcoin Relay Network  的創意,旨在解決兩個問題:

1)優化比特幣 P2P 網絡數據和塊傳輸速度,提升比特幣整個網絡的安全性,降低攻擊風險;

2)減少整個比特幣網絡的延時。

當網絡存在延時時,礦工往往需要 10-15 秒的時間才能收到新挖出來的區塊信息,以 10 秒爲例,10 分鐘挖出一個塊,相當於丟失了 1.6% 潛在時間收益,在挖礦規模化時這也是不能接受的。尤其大的礦場還可以利用自己的優勢搭建私有網絡,利用挖礦和傳播的優勢完全碾壓小礦場。Bitcoin Relay Network 的本質是建立網絡對話中樞(hub-and-spoke),它通過 8 個位於紐約,西雅圖,阿姆斯特丹,北京,東京,新加坡,香港和俄羅斯的新西伯利亞的服務器樞紐構成的節點網絡來組成區塊數據傳播鐵路,礦工們通過這個鐵路快速的傳播着自己的共識,然後能夠立刻開始挖新的區塊。但是,這個提議的最大問題是從某種意義上講,Corallo 控制着這個網絡,尤其是對網絡的維護,不過這只是一個更快的選擇,傳統的 P2P 網絡傳播方式仍然是可以是使用的。目前該系統已被描述爲比特幣的血管或神經系統——一個在整個身體傳遞信息的關鍵組成部分。

2016 年,Corallo 在 Bitcoin Relay Network 的基礎上又提出快速互聯網比特幣傳播引擎(Fast Internet Bitcoin Relay Engine,FIBRE)的改進,FIBER 是一種基於 UDP (User Datagram Protocol)的中繼網絡,可以解決 TCP 模式下小數據的丟包問題,提升了去中心化性,同時實現了壓縮數據,以進一步減少傳輸的數據量和網絡延遲,改善信息傳播的速度,礦工可以減少孤兒塊(orphan block)的數量,或者被網絡拒絕的交易區塊數量。

同樣,康奈爾大學的 Soumya Basu, Ittay Eyal 和 Emin Gün Sirer 研究了另一箇中繼網絡 Falcon Relay Network。Falcon 使用“直通路由(cut-through routing)”而不是“存儲轉發”來減少延遲,接收到塊時僅僅初步驗證塊的頭部信息就傳播出去,而不是等待直到接收到完整的塊。當然,這種處理方案有個顯著的問題就是如不誠信的礦工可以傳播無效的數據浪費競爭對手的資源,爲了解決這個問題,康奈爾大學的這個團隊得自己扮演把關者的角色,但正常情況下,它提升的速度效率會更高。

3.2 OSI 模型改進

FIBRE 和 Falcon 是目前在比特幣中繼網絡(Relay Network)上落地並顯著改善的代表,在它們的基礎上,又有許多新的項目開始了自己的探索,這些探索將視角進一步深化到傳統互聯網的架構上,試圖從 OSI 模型去進行優化,如 Blockchain Distribution Network (BDN),該思路靈感來自於 Content Distribution Network (CDN),重點在於對於 OSI 第四層傳輸層的改進,也有試圖將整個 OSI 模型與區塊鏈結合改進的項目,思路都很開放,但唯有落地才能解決問題,這裏僅挑選個別項目作簡要的介紹用於直觀瞭解 Layer 0 層的設計思路。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

3.3 Blockchain Distribution Network (BDN)

BDN 是 Bloxroute LABS 首先提出來的概念,團隊中有兩位創始人就是 Falcon 的發起人。項目的主旨思想是通過自己提供的 BDN 網絡來提升節點之間通訊的速度,也是從提供專屬網絡的角度來改善節點同步情況,各節點通過 BLOXROUTE 提供的對等節點(Peer Node)接入 BDN 網絡,對等節點作爲區塊鏈應用程序和 BDN 的中間網關,它會針對不同的區塊鏈節點制定專屬的接口協議,更具體的技術細節尤其是 BDN 網絡的設計思路批露較少,核心可以用白皮書中的系統架構圖表示:

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

3.4 其他

Marconi 協議是一個試圖增強乃至取代現有網絡基礎設施的項目,體系上包括網絡協議、區塊鏈協議、去中心化網絡管理等,採用向下延伸覆蓋至以太網的設計,並且支持去中心化網絡堆棧,在 OSI 模型第二層建立的安全通信管道提供數據包級加密。這是一個試圖在以太網級別上去構建去中心化的點對點的網絡協議,最終是否能夠落地挑戰也是非常大的,白皮書中展示了其 OSI 模型內的 Marconi 通道架構。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

Toda Network 也是一個定位新一代區塊鏈版“TCP/IP”協議的項目,願景未來任何區塊鏈項目都可以在 TODA 上運行,目前官網雖然沒有提供白皮書,但卻有十幾個區塊鏈項目使用了它的技術。

以上案例,僅僅用來表明在 Layer 0 上進行區塊鏈可擴展研究的一些思路和項目的探索。

第四章 Layer 1 層 On-Chain 層可擴展方案

4.1 網絡層改進——分片(Sharding)

Layer 1 層上網絡層是連接 Layer 0 層 OSI 網絡層的,由上節不難發現,Layer 0 層的改進有些是貫穿 Layer 1 層網絡層的——整體改進;有些是通過增加一道協議來支持 Layer 1 層網絡層,重點改進 Layer 0 層。除此之外,針對 Layer 1 層的改進還可以從驗證機制入手,典型代表就是分片(Sharding)技術。

分片其實是一種傳統數據庫的技術,它以前用作將大型數據庫分成更小、更快、更容易管理的部分,以此增加數據庫的操作效率。而在區塊鏈中,分片技術的運用會更爲繁瑣,不過主要思想都是通過縮小驗證規模和大量事務並行處理來達到性能提升的效果,主要難點在於各分片之間數據的一致性和分片內部的防作惡,由於驗證規模的大大縮小,所以 BFT (Byzantine Fault Tolerance,拜占庭容錯)類共識會是分片內主要使用的共識機制。目前主流的分片技術分爲網絡分片、交易分片和計算(狀態)分片等三個層級,其技術難度也隨之遞增,但是網絡分片還是最主要的。

網絡分片:通過利用隨機性,網絡可以隨機抽取節點形成分片,達到防止網絡攻擊如女巫攻擊等和惡意節點串謀作惡的情況,由於誠實節點驗證是整個分片網絡的安全之本,所以網絡分片是其他所有分片的基礎。

交易分片:交易分片的思想是將交易進行預處理,將相干的交易分配到同一個分片內進行驗證,而將不相干的交易分到其他分片中驗證,最終到達並行處理同時又防止了雙花的情況;當然解決思路也有從增加各片之間的通訊和確認來進行研究的。

計算(狀態)分片:計算(狀態)分片是迄今爲止最具挑戰性的分片技術提案,它主要用來並行處理智能合約的計算問題,如一些片主要用於矩陣計算,一些片主要用於排序,一些片用於最終結果聚合,每個片獨立計算自己的工作,並進行交叉驗證來確保最終結果的一致性,其複雜性可以想象。

在分片研究方向,可以關注以太坊的 Casper,Zilliqa 項目,Radix 項目和 Rchain 等。

4.2 數據層改進

Layer 1 層上對數據層的改進是最直接的改進方向之一,我們分別從數據區塊,鏈式結構來看看技術上的研究狀況。

4.3 增加數據區塊大小

通過增加數據區塊大小來達到擴容效果最有名的案例莫屬於 BCH 比特現金 [1] 了,它是比特幣於區塊高度 478558 的硬分叉產物,旨在通過將比特幣區塊的 1M 太小限制提升到 8M (2018 年 5 月 15 日提升到 32M,8 月份 nChain 提議再次提升到 128M),是一種典型的鏈上擴容方法,通過區塊容量的增加來提升交易處理能力,從而能夠保證在交易量非常大的情況下也能快速交易並保持較低的手續費。但是,更大的區塊會造成更多孤塊產生的風險,影響系統的整體性能和安全性,同時對礦工的帶寬也可能提出新的要求,造成加劇中心化的風險等。

4.4 改進數據區塊結構——隔離見證(SegWit)

隔離見證(SegWit)就是把比特幣腳本簽名 (ScriptSig) 信息從基本結構 (base block) 裏拿出來,放在一個新的數據結構當中。通過隔離見證,獨立出腳本簽名,其簽名的大小不會計算在交易區塊內,因此比特幣區塊在不改變大小的情況下可以容納更多的交易,進而達到擴容的效果。

4.5 改進鏈式結構——DAG

傳統區塊鏈技術是一種鏈式數據庫結構,每個區塊就像鐵鏈一樣,環環相扣,塊與塊之間是完全的串行,這樣的鏈式結構註定了效率的瓶頸,如下圖所示:

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

所以,很多研究也從並行的角度去思考可擴展方案,如典型的 DAG 有向無環圖技術就在一定程度上將鏈式結構改進成網狀結構,達到並行提升效率的作用,如下圖所示:

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

4.6 共識層改進

Layer 1 層上對共識層的改進也是大家比較熟悉的一塊了,主要是針對共識機制的改進,從早期比特幣的 POW (Proof of Work)算力挖礦工作證明的共識機制衍生出 POS (Proof of Stake)擁有即挖礦的股權證明的共識機制,至今各種類型的共識機制層出不窮,主要可以分成兩大類:一類是中本聰共識,如 PoW,PoS,dPoW,dPoS,PoA,PoWeight,PoR,PoET,PoC/PoSpace,PoI,Ouroboros 等;一類是 BFT 類共識,如 PBFT,SBFT/Chain,Ring,Zyzzyva,Zyzzva5,CheapBFT,MinBFT,OBFT 等。

共識機制的改進本質是在保證安全的前提下,提升全網驗證出塊的效率和去中心化程度的取捨來提升性能,這塊火幣研究院詳細的研究報告已經在準備中。

第五章 Layer 2 層 Off-Chain 層可擴展方案

5.1 跨鏈

分析完 Layer 1 層可擴展方案,不難發現,Layer 1 層上能夠改進的方向已經很明確而且比較有限了。所以,更多的主力將區塊鏈的擴展方案放在了 Layer 2 層上,跨鏈就是 Layer 2 層上很有前景的一個方向。

在 2016 年 9 月份,以太坊創始人 Vitalik Buterin 爲銀行聯盟鏈 R3[1] 寫了關於跨鏈互操作的報告提到三種跨鏈方式基本上覆蓋了當前主流跨鏈技術:公證人機制,側鏈 / 中繼和哈希鎖定。隨着大家對三種技術認識的不斷深入,當前很多跨鏈項目已經採用的是混合模式,相互取長補短,也衍生出改進思路,如分佈式密鑰控制技術。其中公證人技術引入了可信第三方,作爲跨鏈過程中的資產保管人,側鏈 / 中繼技術利用 SPV 證明,中繼鏈等技術,實現了不同區塊鏈之間的可信互通,基於哈希鎖定利用了哈希原像腳本,實現了公平的跨鏈資產交換,分佈式密鑰控制技術利用分佈式密鑰生成算法,使得跨鏈過程中的資產保管人角色由全網節點承擔,而不是少數第三方。通過跨鏈技術,不同鏈之間可以實現四種場景:

1) A 鏈和 B 鏈的資產交互;

2) A 鏈資產支付和 B 鏈智能合約調用;

3) A 鏈智能合約調用和 B 鏈資產支付;

4) A 鏈智能合約和 B 鏈智能合約相互調用。

跨鏈技術可以關注 Polkadot,Cosmos,RSK,BTC Relay 的研究以及火幣研究院後續的詳細分析報告。

5.1.1 公證人機制

公證人機制(Notary schemes):中心化或多重簽名的見證人模式,見證人是鏈 A 的合法用戶,負責監聽鏈 B 的事件和狀態,進而操作鏈 A。本質特點是完全不用關注所跨鏈的結構和共識特性等。假設 A 和 B 是不能進行互相信任的,那就引入 A 和 B 都能夠共同信任的第三方充當公證人作爲中介。這樣的話,A 和 B 就間接可以互相信任。具有代表性的方案是 Interledger,它本身不是一個賬本,不尋求任何的共識。相反它提供了一個頂層加密託管系統稱之爲“連接者”,在這個中介機構的幫助下,讓資金在各賬本間流動。

5.1.2 側鏈 / 中繼

側鏈 / 中繼(Sidechains/Relays):區塊鏈系統本身可以讀取鏈 B 的事件和狀態,即支

持 SPV (Simple Payment Verificaiton),能夠驗證塊上 Header、merkle tree 的信息。本質特點是必須關注所跨鏈的結構和共識特性等。一般來說,主鏈不知道側鏈的存在,而側鏈必須要知道主鏈的存在;雙鏈也不知道中繼的存在,而中繼必須要知道兩條鏈。

5.1.3 哈希鎖定

哈希鎖定(Hash-locking):在鏈 AB 間設定相互操作的觸發器,通常是個待披露明文的隨機數的 hash 值。本質特點是 HTLC (Hashed TimeLock Contract),是通過鎖定一段時間猜 hash 原值(preimage)來兌換支付(redeem)的機制。哈希鎖定起源於比特幣閃電網絡,閃電網絡本身是一種小額的快速支付的手段,後來它的關鍵技術哈希時間鎖合約被應用到跨鏈技術上來。雖然哈希鎖定實現了跨鏈資產的交換,但是沒有實現跨鏈資產的轉移,更不能實現這種跨鏈合約,所以它的應用場景是相對比較受限的。

5.1.4 分佈式密鑰

分佈式密鑰控制技術本質上屬於公證人機制的升級版,採用分佈式私鑰生成和控制技術來生成原鏈的鎖定賬戶,然後將相應資產映射到自己的鏈上。其利用密碼學中的分佈式密鑰生成算法和門限簽名技術保證了跨鏈過程中資產鎖定和解鎖由系統參與共識的所有節點決定並且在此過程系統中的任何節點或者少數節點聯合都無法擁有資產的使用權。大致過程可分爲兩個階段:鎖定資產階段和解鎖資產階段。

5.2 狀態通道

狀態通道本質上是通過在不同用戶之間或用戶和服務之間建立一個雙向通道,爲不同實體之間提供狀態維護服務。它允許把區塊鏈上的許多操作在鏈外進行管理,等完成鏈外操作後多方簽名確認後,纔將最終結果上鍊,所以說這是一個鏈上鍊下互通的擴展性研究方向。鏈下支付網絡通過將大量交易離線處理,同時將區塊鏈作爲仲裁平臺,處理通道支付過程中的異常情況,如雙方對通道的狀態有分歧等,間接地提升系統的交易吞吐量。

雙向通道支付過程大致可分爲三個階段:初始階段,用於雙方建立通道;支付階段,通道雙方完成支付,即通道狀態的更新;關閉通道階段,雙方關閉通道,贖回通道中自己的資金,在關閉通道過程中,一旦某一方作惡,即利用之前的通道狀態來謀利,將會觸發提交階段。在提交階段中,雙方提交證據交易給區塊鏈確定通道內的真實狀態。

狀態通道的研究方向上閃電網絡,雷電網絡,Liquidity Network 和 Celer Network 都是可以對比研究的。

5.2.1 閃電網絡

閃電網絡是最早通過鏈下支付通道形成支付網絡,提升區塊鏈交易吞吐量的方案,主要針對目標是比特幣的擴容解決方案。它主要包含兩個協議 RSMC (Recoverable Sequence Maturity Contract)和 HTLC (Hashed Timelock Contract),基本上同類型的其他相關方案都是在兩個協議上進行修改。RSMC 主要實現了雙人雙向的支付通道,使得通道雙方可以在交易不上鍊的情況下即時確認交易;而 HTLC 如前文所述,通過時間鎖(timelock)的機制來延遲通道一方取回通道資產的時間,同時引入懲罰交易的概念來保證通道雙方的資產狀態是基於最新的交易情況,一旦某一方試圖使用之前的通道狀態來謀利,另一方可以在這段延遲時間內(timelock)發現,並沒收其通道內資產作爲懲罰。

5.2.2 雷電網絡

雷電網絡是以太坊鏈下擴容解決方案,以閃電網絡技術理念爲基礎,由於以太坊實現了圖靈完備的腳本系統,可以實現更爲靈活的智能合約,因此基於以太坊模型設計的雷電網絡可以更多的使用智能合約來實現。

5.3 其他

5.3.1 TrueBit

TrueBit 的思路是把智能合約的運算外包給第三方,把複雜的計算任務放到鏈下執行,通過經濟激勵,促使第三方之間互相監督,從而保證計算結果的正確性,以太坊通過智能合約作爲終極仲裁,獎善罰惡。造假者會獲得經濟懲罰,所以在絕大多數情況下,外包商會誠實的執行代碼並提供正確的結果,鏈上節點無需完整驗證,從而大大減輕了鏈上的計算負擔,也節省了用戶的 gas 消耗。

不難看出,狀態通道是將交易放到鏈下進行來增強擴展性,TrueBit 是將複雜的計算鏈下進行來增強擴展性。

5.3.2Plasma

Plasma 的擴展性方向是採用子鏈的模式,智能合約創建在以太坊主鏈之上,這些智能合約充當 Plasma 子鏈的“根”,根裏包含了子鏈的基本狀態交易規則,記錄了子鏈狀態的哈希值,並且讓用戶在以太坊主鏈和子鏈之間轉移資產。子鏈負責處理各自數據和業務,擁有自己的共識算法,且獨立於以太坊主鏈,正常運作時,區塊製造者們會定期地向主鏈提交驗證,實質就是證明子鏈當前的狀態是有效的,符合共識機制的要求,子鏈與主鏈的驗證交互只是最終需要驗證的數據,其他過程均由子鏈自己處理,子鏈還可以生成鏈上鍊的結構,對每個層級 Plasma 要解決兩個最重要的事情,一是子鏈的反欺詐,另一個是資金的進入與退出。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

值得注意的是,因爲以太坊出來的時間太早了,所以諸如雷電網絡、TrueBit 和 Plasma 對以太坊擴展思路只能是適應以太坊既有的設計,而針對其他新出來的區塊鏈項目,是可以借鑑這些思路在設計上就直接實現擴展的,我們將在下一章節進行描述。

第六章 總結

通過對 Layer 0,Layer 1 和 Layer 2 一層層可擴展方案的分析和典型項目原理描述,不難發現,區塊鏈技術可擴展方案分層模型基本可以按照圖 7、圖 8 和圖 11 的架構來分部考慮。

如果我們跳出可擴展方案的框架去思考這個三個層級:Layer 0 層解決的是區塊鏈與傳統網絡的結合問題;Layer 1 層解決的是底層賬本問題,也可以理解成一直說的公鏈問題;Layer 2 層解決的纔是擴展性延伸和鏈上鍊下打通的問題,也可以理解成廣義的應用問題。從分層的角度去設計一個區塊鏈項目,可以有效的規避區塊鏈的三元悖論問題:Layer 1 層主要負責安全,妥協性能,注重於記賬功能;Layer 2 層主要負責性能,妥協去中心化,注重於計算功能,Layer 1 層底層設計時就充分考慮好 Layer 2 層的交互問題,這種架構設計等於將前文介紹的以太坊和 plasma 進行重新設計,從底層設計就提供一致性和可交互性。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

這裏還需要強調一下隱私加密技術的需求對 Layer 1 層會是一個很不錯的功能,也是值得底層賬本好好研究的方向,在沒有很好的處理方案前,在 Layer 2 層考慮也是個能接受的選擇。

目前,明確提出上述 Layer 1 層和 Layer 2 層分層設計的項目有兩個:Cardano 和 Nervos。

Cardano 的兩層爲:

1) Settlement Layer 清算層(Layer 1 層):Cardano 的代幣 ADA 在該層流動,是 Cardano 整個系統的基礎;

2) Computation Layer 計算層(Layer 2 層):Cardano 將在該層提供智能合約,身份認證,消息通信等等功能,以方便開發者在此開發程序。

Nervos 的兩層爲:

1) Common Knowledge Layer 共識層(Layer 1 層):CKB (Common Knowledge Base)只關心全球共識和安全,它是整個網絡的安全基石,爲 Layer 2 層服務;

2) Generation Layer 拓展層(Layer 2 層): 訴求是快和安全,同時 CKB 也可以支持其他的 Layer 2,比如狀態通道,類似 Plasma 風格的 Layer ,Truebit 等。

而完整從 Layer 0,Layer 1 和 Layer 2 三層統一佈局的項目目前也有一個 PlatOn,不過這些項目基本都在早期階段,僅作研究探討之用。

區塊鏈產業專題報告 | 區塊鏈技術可擴展方案分層模型

看到這裏,大家應該理解號稱 TPS 破萬,十萬,甚至百萬的項目是如何實現的了,基本上都是 Layer 1 層和 Layer 2 層組合實現的方式,如母子鏈,多鏈並行的模式,或者是直接犧牲去中心化來實現,Vitalik 也提到藉助 Sharding 和 Plasma 能將以太坊實現百萬 TPS,也有部分極客在中心化的模式下將以太坊實現 150 萬 TPS 的測試,所以我們應該更加理性的去認識以高 TPS 作爲主打亮點的項目。正如前文所述,從當前技術發展來看,Layer 1 層最樂觀的可能落地的最大 TPS 在千位級別(1000~3000),進一步擴展的空間就交由 Layer 2 層去創造了。

西方的項目喜歡聚焦到每一個點去解決問題,而東方的項目則喜歡大一統巨無霸。無論哪種風格,如果從設計之初就採用辨證統一的視角去全盤規劃,需要統一的共識和標準,區塊鏈技術的本質只是一個底層賬本,它是服務於現實場景的,而不是現實場景都往區塊鏈上蹭熱度,淪爲資本遊戲,期待能夠看到公認的第三代區塊鏈技術。

報告全文下載