金 菁,陳云芳
(南京郵電大學 計算機學院,江蘇 南京 210000)
近幾年來,區塊鏈技術快速發展,在各行各業得到了廣泛應用,目前區塊鏈已經逐漸進入3.0時代。區塊鏈廣泛應用于智能合約、保險、供給鏈、醫療保健、物聯網、知識產權等領域。智能合約作為區塊鏈的重要組成部分,旨在以信息化方式傳播、驗證或執行合同的談判或者履行計算機協議。為了解決自身的需求,各行各業都或多或少創建了自身的智能合約平臺。目前最大的區塊鏈基礎設施比特幣及以太坊存在著性能瓶頸,對于大規模應用的各種需求難以滿足。比特幣的吞吐量為每秒7筆交易,以太坊為每秒10~20筆[1]。與VISA實現的每秒2 000筆交易相比,這兩個平臺的吞吐量非常低。因此,可擴展性一直是這些區塊鏈平臺的研究熱點。Xie等[2]以提高吞吐量為研究核心,介紹了當前主要的3種提高區塊鏈吞吐量的技術。Zhang等[3]介紹了當前區塊鏈在吞吐量、存儲以及網絡上面臨的挑戰,并提出了解決辦法。Abdurrashid等[4]綜合介紹了目前區塊鏈可擴展性的解決方案,并對未來的可擴展性研究提出建議。本文通過對比當下各類擴容方案,分析其優缺點,最后對區塊鏈可擴展性未來的研究提出展望。
隨著去中心化金融的爆炸式增長,區塊鏈對于可擴展性的要求逐漸增長。
目前,以太坊Layer-2的解決方案Polygon在2021年吸引了大量關注。Polygon采用兩種底層技術架構:PoS Commit Chain 和 More Viable Plasma L2擴容方案。作為以太坊主鏈的Commit Chain,Polygon的PoS鏈已經吸引了超過80個以太坊DApps在其平臺上部署。理論上來說,Polygon最終將擁有成千上萬的鏈來共同擴容以提高網絡的吞吐量,當連接到以太坊這樣的主鏈時,未來甚至可能會達到數百萬的TPS。
而作為公鏈之首的以太坊本身也在不斷進行升級。以太坊已于2022年第2季度完成“合并”,即實現由工作量證明PoW轉向權益證明PoS。然而,此次PoW轉PoS的合并升級只涉及共識機制層面,以太坊的可擴展性問題仍需依賴Layer-2技術或分片來解決。
本節將從鏈上擴容Layer-1和鏈下擴容Layer-2兩個方面來分析和討論當前主流的以太坊擴容方案。
鏈上擴容(On-Chain Scaling),也被稱為是Layer-1擴容。通常情況下,鏈上擴容指直接發生在區塊鏈上,通過改變區塊大小或數據結構從而提高吞吐量的解決方案。
鏈上擴容技術的第一種是減少區塊數據的大小,而不減少塊中的交易數量,使得吞吐量提高。例如隔離見證(Segwit)方案。Segwit從交易數據中刪除簽名,并將其與一個單獨的腳本一起附加到元數據中。由于簽名的部分在交易數據中占比達到約65%,因此將其刪除可以釋放塊內空間,騰出更多的空間給交易本身。如此,區塊中能增加約4倍的交易量,吞吐量也隨之提高。Segwit還將塊大小從1 MB增加到4 MB,解決了二次哈希問題,加速了支付通道的運行,如閃電網絡(Lighting Network)。盡管Segwit能對比特幣進行軟擴容,但效果始終有限,吞吐量的提高僅限于17~23 TPS。
第二種鏈上擴容方案是直接增加區塊的大小。Bitcoin-cash和Bitcoin-unlimited兩個方案使用了這種方法[5-6]。然而,這種方案會導致傳播延遲的增加,從而帶來分叉和DoS攻擊的問題,給安全性帶來了巨大的挑戰。由于SegWit的局限性,一些礦工選擇Bitcoin-Cashing作為替代解決方案。Bitcoin-Cashing將比特幣塊的大小先增加到8 MB,而后又增加到32 MB。然而由于塊的大小與吞吐量沒有線性關系,因此這種方法對于吞吐量的增加也十分有限。
還有一種鏈上擴容的方法,稱為分片(Sharding),主要用于分布式處理系統。在這種方法中,數據被分割并存儲為單獨的分片以供處理。每個分片都并行地處理交易和存儲數據,可以提高吞吐量。分片技術還降低了BFT共識網絡中的通信開銷。目前,分片分配,小分片安全,交叉分片通信開銷是分片技術面臨的巨大挑戰,如果在這些方面的技術不夠完善,將導致嚴重的安全問題。
鏈下擴容(Off-Chain Scaling)是指為以太坊等底層鏈提供外部執行的任何創新方式。這些創新被稱為Layer-2擴容方式,即將交易的執行放在以太坊之外的第二層網絡進行,從而繼續優化以太坊Layer-1的性能。
1.2.1 狀態通道
狀態通道(State Channels)是一種由多簽智能合約支撐的鏈下擴容方案。狀態通道從根本上豐富了支付通道的功能,除了能夠實現基本的支付功能外,狀態通道還可以用于在區塊鏈上進行狀態更新,即更改智能合約的內部狀態。在狀態通道網絡中,ETH等加密資產可以鎖定在這些合約中,用于在用戶之間創建雙向支付通道。
具體而言,狀態通道的用戶除了支付外,還可以采用鏈下的方式執行智能合約,狀態通道的原理如圖1所示。舉個具體的例子,如果用戶Alice和Bob在彼此之間建立了一個狀態通道,即可以擁有一個“合同的模擬分類帳”,并在上面執行合約,而不需要在真正的區塊鏈上注冊。只要雙方不發生沖突,該方案就可以順利實現。狀態通道的安全性來自雙方在任何時候都可以在實際的區塊鏈上“注冊”通道的當前鏈下狀態,并讓通道合約公平地完成該合約的執行。狀態通道的使用場景很多,包括數字分發、在線游戲和去中心化代幣交換等[7]。

圖1 狀態通道運行原理
1.2.2 Plasma
Plasma是最初由Joseph Poon和Vitalik Buterin提出的一個Layer-2擴展解決方案,是一個用于在以太坊上構建可擴展應用的框架。Plasma用于解決狀態通道的局限性,允許在以太坊主鏈上創建附加子鏈,這些子鏈可以產生自己的子鏈。也就是說,可以在子鏈級別執行許多復雜的操作,運行擁有數千名用戶的整個應用程序,并且只需與以太坊主鏈進行盡可能少的交互。子鏈可以更快地操作,且交易費用更低,因為不需要在整個以太坊區塊鏈留下副本。與狀態通道相比,有一個很大的不同點是Plasma能夠運行智能合約。如果說狀態通道是對交易吞吐量的擴容,那么Plasma就是對計算能力的擴容。Plasma將計算和數據存儲都遷移到Layer-2進行,由Layer-2的執行者周期性地向主鏈遞交Merkle根形式的狀態承諾。
如圖2所示是使用Plasma機制的簡單示意:如果執行者遞交無效的狀態,用戶可以向主鏈上的智能合約提供欺詐證明(Fraud Proof);一旦確認執行者出現欺詐行為,則智能合約會沒收其保證金。雖說欺詐證明可以使得提供無效承諾的執行者在主鏈上遭到懲罰,但如果Plasma的執行者拒絕在主鏈上公開數據,那么用戶則無法取得錯誤數據,也就無法提供欺詐證明,所以 Plasma目前面臨的最大問題是交易數據可用性。對此,Plasma也給出了一些解決措施,如延長資產從Layer-2退出的時間,當出現惡意行為的時候,就能允許大量資產從Plasma鏈退出。

圖2 Plasma運行原理
1.2.3 Rollup
Rollup在其自身的執行層上進行交易,并將交易數據發布到以太坊上。和Plasma相比,Rollup的核心優勢是數據可用性。它將數據提交給主鏈,大大提高了安全性。
如圖3所示是一個簡化的Optimstic Rollup流程,可以看出,Rollup和Plasma的最大區別在于新增了交易數據的提交。因此,Rollup的實質是將一大筆實際產生的交易匯總成一筆主鏈上的交易,這些交易由Rollup鏈來負責執行和計算,最后將數據提交給主鏈,同時由主鏈最終確認這些交易。這種方法利用了主鏈的共識和安全性,同時提升了實際上的交易效率,降低了交易成本。當前使用Rollup的有ZK Rollup和Optimistic Rollup。

圖3 Optimstic Rollup運行原理
ZK Rollup基于有效性證明(Validity Proof)和零知識證明(Zero-Knowledge Proof)的提出,最先假設不相信提交者能主動提交正確的batch。ZK Rollup在主鏈完成零知識證明,鏈上無需包含簽名數據,因為零知識證明就足以證明交易是否有效。如果交易被證明有效,便立刻確認,這樣可以保證無效的狀態不會發生,即數據可用性存放在鏈上,所以ZK Rollup對數據存儲方面也帶來了一定程度上的擴展性提升。但由于零知識證明生成的復雜性,目前這種方式也存在局限性,只適用于簡單轉賬。
Optimistic Rollup是一種交互式的方法,它選擇樂觀地相信提交者提交的batch正確,和Plasma有一定的相似性,都使用了欺詐證明的機制。在這種解決方案中,新的batches是由運營商發布的,而沒有被Rollup智能合約證明正確。Optimistic Rollup克服了合約執行管理的困難。一般來說,Rollup合約會跟蹤已更新狀態的歷史記錄,任何發現錯誤過去狀態根(Post-State Root)的人都可以發布錯誤證明。這也就意味著合約可以驗證所提供的證明:如果這個證明指出了一個無效的提交聲明,那么系統將恢復最后一個有效批的狀態,并對發布者進行懲罰[8]。
為了更直觀地看出不同擴容方案的異同點,本節將通過表格的形式,從各方案對區塊鏈系統吞吐量、成本以及容量3個角度的影響出發,對上文中介紹的方案進行詳細的比較和分析,由此繼續強調其優缺點,如表1所示。

表1 擴容方案的比較
從表1中可以看出,不同的擴容技術有其不同的優缺點和使用場景。對鏈上擴容方案而言,Segwit通過分離簽名提高吞吐量,但增加了代碼復雜度,方案可移植性低;直接增加區塊大小降低了成本,但使得孤立區塊出現的可能性增加;Sharding可以并行處理大量交易,但被攻擊的可能性也隨之增加。
而在Layer-2擴容方案中,狀態通道因其獨特的性質,讓其在擴容領域擁有不可替代的一席之地。跟狀態通道相比,Plasma的優點在于能夠運行智能合約。跟Plasma和ZK Rollup相比,Optimistic Rollup帶來的擴展性提升幅度最小,但更容易解決問題。而ZK Rollup則可以消除尾部風險,減少提取資金的實踐,且保護隱私,適合需要提高流動性的項目。
目前已有許多擴容方案在權衡區塊鏈“不可能三角”,即可擴展性、去中心化、安全性的問題上做出了一定的成果。但是,區塊鏈的可擴展性挑戰仍然沒有被完全解決,這意味著區塊鏈仍未發揮出全部潛力。目前,區塊鏈可擴展性有如下幾個挑戰。
(1)分片技術(Sharding)作為目前最常用的提高可擴展性的方案,可以實現低延遲、高吞吐量、存儲可擴展性和拜占庭容錯。每筆交易的通信成本是區塊鏈可擴展性問題的關鍵。只有其排序的復雜度降低到O(n),才能表示該區塊鏈具備可擴展性。未來或許會通過部署去中心化的名譽管理方法和使用激勵策略的負載平衡機制來做到這一點。
(2)保持跨分片交易中的原子性是另一項可擴展性挑戰。當不同的分片共同操作時,需要使用時間軸來驗證這些操作的先后順序。當分片需要處理大量合法或不合法的跨分片交易時,可以通過負載平衡機制來應對礦工節點耗盡以及DoS攻擊的問題。
(3)區塊容易形成多個分支,這些分支被稱為分叉,也會對可擴展性造成影響。目前已有最長鏈規則被用于處理這些分叉。但是,如果沒有任何分叉避免機制,仍然會出現資源浪費的現象。為了解決這個問題,可以成立由激勵節點組成的分叉監測委員會,將該委員會與采礦節點分開,并根據采礦節點的能力分配采礦工作,并實時監測并及時避免分叉。
(4)對被許可鏈而言,使用可信的硬件設備進行挖礦和驗證會減少BGR,這將直接影響交易吞吐量。然而,在公共鏈中使用這種方法則需要采用激勵機制,讓礦工使用那些擁有更高處理能力和更大內存的硬件。
本文介紹了智能合約平臺的可擴展性現狀、存在的挑戰和解決辦法。首先,介紹了公鏈之首以太坊的Layer-2擴容解決方案Polygon的發展近況。其次,從鏈上和鏈下兩個方面介紹了目前存在的擴容方案,并分析了優缺點。最后,闡述目前區塊鏈可擴展性面臨的挑戰和可能的解決辦法,展望了其未來研究方向。