深度丨一文詳解以太坊擴容全方案

來源:LD Capital

原文標題:《LD Research:一文詳解以太坊擴容全方案》

撰文:0xRJ_eth,LD Capital Research

今天主要是從一個自上而下結合時間發展的視角整理了以太坊擴容方案,內容涵蓋了一些市場如今已經不再提及的舊方案,有些可能大家聽都沒聽說過。但我認為把大框架和相互邏輯理清楚是非常重要的,這有助於我們理解擴容的發展經歷了哪些創新和組合,遇到了哪些問題,不同時期市場的關注點是什麼,以及為何目前 Rollup 方案勝出。這些也都有助於我們看清大方向。

個人在做 research 的時候,發現網上基本沒太多文章從這個角度來全面的匯總和對比。我最初純粹是因為完全不了解擴容,感覺方案很多,各有利弊,有些還很相似,也想不明白為什麼,所以花了大量的時間挖不同時期的文章。但這兩周下來,我意識到結合了時間角度的整理對我的幫助特別大。不過今天信息量應該會很大,因為不可避免地會涉及很多的技術和概念,如果能耐心讀完,相信對構建整個擴容賽道的大框架和邏輯梳理很有幫助。

一、起因

在第一層以太坊區塊鏈上,不斷增長的網絡使用需求 ,導致了網絡擁堵,推高了交易成本。提高存儲、網絡速度和吞吐量是有意義地大規模採用以太坊的基礎。

因此,需要進行擴容(Scaling)。

二、目的

擴容的核心目的便是在保持去中心化和安全性的前提下,提升交易速度(更快確定交易)和交易吞吐量(提高每秒交易量 TPS)。

三、擴容方案

擴容方案:可以分為兩大類——On-Chain(layer 1)和 Off-Chain (側鏈 +layer 2)

  • On-chain,鏈上擴容

對區塊鏈本身的性能提升,這需要對第一層主網 / 以太坊協議進行變更:這就涉及到了「Layer 1」。Layer 1 網絡是底層區塊鏈的別稱。那除了以太坊 (ETH),比特幣 (BTC)、Solana、Polkadot、Near、Cosmos、Aptos、Sui 等都屬於 layer1 協議,因為它們是所在生態系統中的主要網絡。Layer 1 協議能夠在自身的區塊鏈上處理並完成交易,同時自帶用於支付交易費用的原生通證。

(整個 Layer1 擴容是以太坊升級很重要的一環,這部分未來可以在以太坊升級整理分享里細說,今天 Layer1 就簡單歸納一下概念,就不太細說了)

On-Chain Layer 1 擴容的可選方案包括:

a. 更改共識機制。以太坊升級就採用了這一方案。幾周其前的 beacon 信標鏈和主網成功合併就是完成了共識機制從 pow 到 pos 的轉換。

b. 實施分片 sharding。分片是一種常見的 Layer 1 擴展解決方案,主要是用於增加交易的吞吐量。這是計算機學中的一種數據庫分割技術,網絡連同上面的節點一起被分割成不同的分片,來平攤工作量並提升交易速度。每個分片處理整個網絡的一部分活動,即每個分片都有自己負責的交易、自己的節點和獨立的區塊。

分片還可以減輕每位驗證者的負擔(因為他們不再需要處理和保存整個網絡的所有交易)。每個節點會將完成的工作寫入主鏈,實時共享本地數據。這是之前 eth 2.0 原升級計劃涉及到的的擴容方案,現已被 danksharding 所取代。

c. 擴大區塊規模。使每個區塊能夠處理更多交易(目前以太坊升級 proto-danksharding 就是類似方案,升級這部分以後會單出一個分享)。

Layer 1 擴容需要大費周折。很多情況下,不是所有網絡用戶都會同意這樣的變更。從而可能會導致社區分裂,甚至發生硬分叉。(2017 年比特幣分裂出比特幣現金就是硬分叉的後果)

  • Off-chain,鏈下擴容

所有的鏈下擴容都是與第一層主網分開實施,無需更改現有以太坊協議。Rollup 大致上可以分為兩大類:Ⅰ. 側鏈;Ⅱ. layer2 二層解決方案。

Ⅰ. 側鏈

側鏈是獨立運行的區塊鏈,其安全性全靠自身協議機制。這也是側鏈和目前主流鏈下擴容方案 layer2 二層擴容最大的區別。

而側鏈作為一條獨立的鏈和一些 layer1 公鏈相比,區別在於側鏈專門用於處理以太坊的過剩容量,而不是與整個以太坊競爭。這些生態系統與以太坊社區緊密結合,以互補的方式託管以太坊應用。

關於這部分分類,我發現網上很多文章都比較混亂,會把側鏈歸類在 layer2 中。這部分我主要是參考了以太坊基金會和側鏈白皮書對側鏈的定義。

深度丨一文詳解以太坊擴容全方案

https://ethereum.org/en/developers/docs/scaling/sidechains/

第二類鏈下擴容是剛才提到的 也是大家常聽說的 layer2 二層解決方案:基本想法是鏈下計算 / 執行,結果上鏈;離線批量處理。直接從第一層以太坊共識中獲得安全性。那不同的 layer2 方案 會在安全性、擴容效率、去中心化程度、通用性之間尋找平衡。

先來說說側鏈:

側鏈 Side Chains 是一個獨立的區塊鏈,與以太坊主網并行且獨立地運行。

它們通常是為高效處理交易而設計的。與第二層擴容方案最大的不同在於側鏈不會將狀態更改和交易數據發布回以太坊主網,這也是為什麼它們並不繼承以太坊的安全屬性。

側鏈通常是選擇犧牲了一些去中心化或安全性來實現高吞吐量。

側鏈主要是通過雙向錨定的跨鏈橋(two way pegged cross chain bridge)來實現與主網的鏈接、以及互相操作(這個概念我們很快就會細說)。而這裡所謂的雙向錨定式主要是指支持資產的雙向錨定,即資產在主鏈與側鏈之間的互轉。不過這裡需要注意一下,實際上資產並非實現真正意義上的轉移,只是通過「一條鏈鎖定,另一條鏈鑄造相同面額資產」的方式來進行「跨鏈」。但凡是架設雙向錨定跨鏈橋的項目都可以被視為側鏈。

我們先來了解一下什麼是雙向錨定的跨鏈橋(two way pegged cross chain bridge):

這個概念是 BlockStream 在 2014 年發表的側鏈白皮書中提出的。雙向錨定是指把主鏈上某筆資產比如 10eth 鎖定到一個特定地址; 同時,在側鏈上提供這筆「鎖定交易」發生的證據,等量的數字資產以 wrapped token 的形式就會在側鏈上被鑄造 比如側鏈上 mint 出了 10 weth,現在這 10weth 便可以在側鏈上進行交易了。反之亦然,用戶想在主鏈取出 eth 時,在側鏈上銷毀同面額的剩餘的 wrapped eth 就可以。

在主鏈鎖定(lock)token,在側鏈鑄造(mint)(wrapped)token。在側鏈銷毀 / 燃燒 token,在主鏈提取 token。

深度丨一文詳解以太坊擴容全方案

https://medium.com/techskill-brew/layer-2-blockchain-scaling-solutions-channels-sidechains-rollups-and-plasma-part-16-79819e058ef6

側鏈的工作環境和主鏈相同,同樣基於 EVM(以太坊虛擬機)。但側鏈有自己的賬本系統、共識算法(例如權威證明、委託權益證明、拜占庭容錯)腳本合約等。但為了實現各種不同的目標,它們獲得安全性的方式也有所不同。

這裡舉幾個例子:

a. 單一託管模式 Centralized (basic third party authority):這是現階段最簡單的在區塊鏈之間轉移數字資產的方式——將主鏈上的資產發送到一個單一託管方 ( 比如交易平台 ),託管方收到這筆資產後,在側鏈上激活等額資產,這筆資產就能在側鏈上流通了。這種方式最大的缺點是過於中心化。

深度丨一文詳解以太坊擴容全方案

b. 聯盟模式 Federation – multisig federation:聯盟模式是使用公證人聯盟來取代單一的保管方,利用公證人聯盟的多重簽名對側鏈的數字資產流動進行確認。在這種模式中,如果要想盜竊主鏈上凍結的數字資產就需要突破更多的機構,但是側鏈安全仍然取決於公證人聯盟的誠實度。這種方式還是中心化的。

c. SPV(simple payment verification) 模式:以上兩種方案都是通過中間人來保證安全的,都屬於中心化的。

SPV (Simplified Payment Verification),即簡單支付驗證則是安全性更高的去中心化方式。

SPV 是 Nakamoto 在《比特幣白皮書》(《Enabling Blockchain Innovations with Pegged Sidechains》大家感興趣可以讀讀,我把鏈接放在下面了)中提到的概念。這也是比特幣底層技術中很重要的一個概念。

SPV 是一種用於證明交易存在的方法,它的特點是只需通過少量數據就可以驗證某個特定區塊中交易是否存在。在 SPV 模式中:

1. 用戶在主鏈上將資產發送到主鏈的一個特殊的地址,來鎖定主鏈的該資產。

2. 在主鏈上等待一個確認期,是指幣在轉移至側鏈之前,在父鏈上必須被鎖定的期間。此確認期目的是生成足夠多的工作量,讓下一個等待期內的拒絕服務攻擊變得更困難。典型的確認期的量級可以是一或兩天。

當父鏈上生成了特殊輸出后,用戶等待確認期結束,然後在側鏈上生成一個引用該輸出的交易,提供出一個它已被創建並在父鏈上被足夠工作量覆蓋的 SPV 證明,確認期是一個依側鏈而定的安全參數,要在跨鏈交易速度和安全性間做權衡。

3. 主鏈確認期結束資產確定被鎖定后,會創建一個 SPV 證明併發送到側鏈上。然後一個對應的帶有此 SPV 證明的交易會出現在側鏈上,這筆交易就在側鏈上生成了相同價值的側鏈代幣資產。

4. 生成的側鏈資產先處於鎖定狀態,接下來,用戶必須等待一個競賽期。這個期間,新轉移過來的幣不能在側鏈上花費。競賽期的目的是防止重組時出現雙花,在重組期間轉走先前鎖定的幣。在這個延遲期內的任何時刻,如果有一個新的工作證明發布出來,對應的有着更多累計工作量的鏈中沒有包含那個生成鎖定輸出的區塊,那麼該轉換將被追溯為失效。我們稱此為重組證明,需要等待一個競爭期來防止雙花。如果在競爭期內,用戶把主鏈上鎖定的幣轉走,其他用戶可以用最新的 SPV 證明此事,則側鏈鑄幣交易失效,稱此證明為重組證明。

只要有可能,所有側鏈上的用戶都會有動力來制發重組證明,因為對不良證明的承認會稀釋所有幣的價值。

5. 典型的競賽期也是一或兩天。競爭期結束后,側鏈代幣生成,可以在側鏈內自由轉移,不需要與父鏈進一步交互。不過,它仍保留着父鏈幣的身份,僅能轉回到它所來的那一條鏈上。

6. 當用戶想把幣從側鏈上轉回父鏈時,流程重複上述步驟:在側鏈上將幣發送至一個 SPV 鎖定的輸出,產生一個充分的 SPV 證明來表明該輸出已完成,使用這個證明來解鎖父鏈上先前被鎖定的那個等面值的輸出。

深度丨一文詳解以太坊擴容全方案

d.(不太重要)驅動鏈模式 Drivechain:驅動鏈概念是由 Bitcoin Hivemind 創始人 Paul Sztorc 提出的。在驅動鏈中,礦工作為‘算法代理監護人’,對側鏈當前的狀態進行檢測。礦工相當於資金的託管方,驅動鏈將被鎖定資產的監管權發放到礦工手上,並且允許礦工們投票何時解和將解鎖的資產發送到何處。礦工觀察側鏈的狀態,當他們收到來自側鏈的要求時,他們會執行協調協議以確保他們對要求的真實性達成一致。誠實礦工在驅動鏈中的參與程度越高,整體系統安全性也就越大。

e.(不太重要)混合模式:驅動鏈 + 公證人 / 側鏈而混合模式則是將上述獲得雙向錨定的方法進行有效的結合的模式。由於主鏈與側鏈在實現機制存在本質的不同,所以對稱的雙向錨定模型可能是不夠完善的。混合模式是在主鏈和側鏈使用不同的解鎖方法,例如在側鏈上使用 SPV 模式,而在主鏈網絡上則使用驅動鏈模式。

數據可用性(DA):

在數據有效性方面,因為側鏈說把數據存儲在側鏈上,並不錨定回,所以只能由側鏈自己的的 validator 來保證,安全性就弱了很多。

側鏈項目:

Polygon – 項目範圍從單一的 Layer 2 plasma 解決方案(前身為 Matic Network),最終擴展為目前的一種擴容框架,可用於創建與以太坊兼容的區塊鏈網絡和擴展解決方案。(它更像是一種協議,而不是單一的解決方案。)其目標是為圍繞以太坊打造一個像多邊形一樣的多鏈網絡現在正在開發 7 種擴容方案(從 zk-rollup、側鏈、軟件開發工具包)。其中 Polygon POS 側鏈算是賽道龍頭。Polygon 團隊認為,在未來,以太坊仍然是高價值交易和價值存儲的主導區塊鏈,而日常交易將轉移到 Polygon 的低成本區塊鏈。所以 polygon pos 側鏈是通過協助以太坊擴容提供價值,而非直接和以太坊主網競爭搶奪市場。

Gnosis Chain – 前身是 xDai 側鏈,后與 Gnosis 合併開發的 Gnosis Chain。低成本和以太坊兼容是 gnosis chain 兩個主要的賣點。

Skale – 定位賽作為以太坊的「彈性側鏈網絡」,能夠支持成千上萬個獨立區塊鏈、側鏈、存儲鏈和其他類型子鏈。這些區塊鏈都與以太坊主網相連接,並且完全兼容以太坊生態。

Palm – 以太坊聯創 Joseph Lubin、ConsenSys 創始人、電影製片人兼 Heyday Films 所有者 David Heyman,藝術科技集團 HENI Group 創始人 Joe Hage。這是一個允許用戶建立 NFT 的以太坊側鏈。

Ronin – 由鏈游 Axie Infinity 開發商 Sky Mavis 推出的以鏈游為主的側鏈。由於遊戲需要快速交互和低手續費,以擴展和促進每天發生的成千上萬甚至數百萬的交易活動。用戶體驗必須是友好絲滑的。所以團隊乾脆自己動手上。

分片鏈 – 在原 eth 升級方案(eth 2.0)中的分片鏈,也屬於 eth 自己的側鏈變體。

優缺點

深度丨一文詳解以太坊擴容全方案

+ve:

1)側鏈的兼容性是非常好的,支持通用計算,EVM 兼容,可以支持智能合約。

2)涉及到大規模 複雜的交易,側鏈的 tps 可以達到非常高。比較側鏈的設計本就是犧牲了一些去中心化或安全措施來實現高吞吐量(這部分可以參考區塊鏈不可能三角)。

3)側鏈的設局主要是為了減少了主鏈上的擁堵,降低了每個人的成本,增加了以太坊生態系統的可用性和可擴展性。

4)開發人員還可以使用側鏈來探索和測試主鏈上不可用的新特性和用例。比如最早側鏈的概念是怎麼出現的?就是 2012 年,當時比特幣的核心開發團隊正在考慮如何可以安全的升級比特幣協議,以增加新的功能,但是擔心直接在比特幣區塊鏈上進行功能添加比較危險,因為如果新功能在實踐中發生軟件故障,會對現有的比特幣網絡造成嚴重影響。另外,由於比特幣的網絡結構特性,如果進行較大規模的改動,還需要獲得多數比特幣礦工的支持。這時,比特幣核心開發者便提出了側鏈方案。

所以最早側鏈本就是允許開發人員探索性質地將新功能附加在其他的區塊鏈,再將這些側鏈附着在現有比特幣區塊鏈上。以保護比特幣父鏈網絡。

-ve:

1)側鏈和以 rollup 和 channel 之間的主要區別在於,rollup 和 channel 都繼承了以太坊主網絡的安全性,但側鏈因為採用自己的的共識機制,通常是為特定類型的交易設計的(目的是為了交易能夠更快、更實惠),這也意味着它們通常不會繼承以太坊的安全屬性。從技術上而言,側鏈方案不屬於 layer2。

2)去中心化程度低。

3)和通道方案比起來,側鏈的隱私性弱一些,因為在側鏈上,每筆交易都會發布到側鏈上,無論是否跟側鏈上的所有參與者交互,交易都會被側鏈上每個參與者接收。

Ⅱ. Layer2 二層解決方案

基本想法是鏈下計算 / 執行,結果上鏈;數據離線批量處理。這種方式是直接從第一層以太坊共識中獲得安全性,方案包括:

A. Channel 通道

這是一個非常早期、存在已久的區塊鏈擴展方案,他最出名的應用是比特幣的閃電網絡。更注重安全性,而非可用性。

參與者必須將以太坊的一部分狀態,如 ETH 存款,鎖定在一個多簽合約中。鎖定初始狀態是第一個交易,並打開了通道。然後參與者可以在鏈下快速自由地進行交易。當互動結束后,把最終狀態提交上鏈,關閉通道。

這邊可以再細分為兩種 支付通道 Payment Channel 和狀態通道 State Channel:

  • Payment Channel:現在主鏈上建一個多簽合約地址,比如,A 和 B 創建了這樣的多簽合約,資金只有經過他倆共同同意才能轉移。把各自的錢存進去,假設 A 和 B 各存 10eth,這個初始狀態就相當於是打開了一個支付通道。然後在鏈下 他們之間進行了幾十甚至上千筆交易,每筆交易雙方都需要簽名和蓋時間戳。最後 A 有 5eth B 有 15eth。但他們不需在區塊鏈上記錄這麼多筆交易,只用記錄兩筆——初始資金交易和所有交易結束后的最終餘額分配。當他們把最終餘額上傳到主鏈,相當於關閉了這個支付通道。

對於 A 和 B 來說 鏈下的那些交易沒有手續費並且幾乎即時成交。雙方無需支付礦工費用,也不必等待區塊確認。

  • State Channel:這其實是對 Payment Channel 的一種衍生,從名字就可以判斷,這種方案是圍繞「狀態」,也就是說不僅僅是交易狀態,也可以是遊戲狀態、獲活動狀態等。舉個例子,開始一場五子棋遊戲,他們需要先創建一個新的「評判」程序,並為其提供初始投注,這樣就算開啟狀態通道了。他們走棋的過程不會作為交易提交給區塊鏈。但每走一步雙方都需要簽名且附上時間戳,然後再走下一步。只有當程序根據規則判定一方勝出時,結束遊戲,a 和 b 簽署一個狀態更新,根據遊戲的結局簡單地分配投注。這就相當於狀態通道關閉了。

數據可用性 Data Availability(DA):

所有的數據存在 Layer2,由 Channel 雙方保證 DA(轉賬或者遊戲的整個過程需要靠 a 和 b 這些參與者自己來進行維護)

狀態有效性 State Validity(SV):

Channel 結束後任何一方都可以提交最終狀態到 Layer1,但是 Layer1 不驗證,而是會先要求提交者質押。然後會有一周的時間進行 Fraud Proof,任何一個人可以對着筆結算疑然後提交證明(證明狀態是錯的)。這個質疑是可驗證的。剛才提到了,每一筆線下轉賬和行為都需要雙方簽名,並且附加上時間戳。所以但凡質疑者提供的欺詐證明顯示是簽過名且 ** 時間比之前的更新,** 這就是一個可驗證的欺詐證明。這個證明就會成為最新狀態,同時先前提交狀態的那個人質押的幣會被扣除。

Channel 項目

BTC 的閃電網絡 lightening network

優缺點:

深度丨一文詳解以太坊擴容全方案

+ve:

1)通道主要面向高頻、小額支付。

2)節省了大量交易時間和費用。尤其是交易費用方面,創建通道有初始成本。但是一旦部署了,通道內部每個狀態的更新都非常便宜。鏈上實際只記錄兩筆交易。

3)狀態有效性 SV 可以通過欺詐證明得到很好的保證。

4)狀態通道有很強的隱私性能 – 因為任何事情都是發生在通道中的,而不是公開廣播並且記錄在鏈上。只有打開和關閉轉賬必須是公開的。但是在側鏈系統中,每筆轉賬都是發布在側鏈上的,然後側鏈上的每個參與者都會收到,

5)狀態通道有即時的最終確定性 – 也就是說只要兩方簽署了狀態更新,就能認為狀態結束了。

-ve:

1)提幣慢,還需要 1 周時間進行欺詐證明才能提幣

2)對於偶爾轉賬給對方的用戶來說,創建和結算通道的時間和經濟成本都比較高,不太友好。因為你還需要創建多簽合約,簽名,設計評判程序…

3)不支持開放式參與。通道不能用於向尚未參與的人發送鏈下資金

4)TPS 一般,更適合少數參與者,如果是大規模的複雜的交易性能就跟不太上。

5)不支持智能合約,畢竟不是一個鏈。

6)狀態通道需要所有參與者 100% 的在線,如果參與者中途離開也會被扣除質押代幣。

7)通道不能用於表示沒有明確邏輯所有者的對象(例如 Uniswap)。所以說通道只通道不能用於表示沒有明確邏輯所有者的對象(例如 Uniswap)適合用於有已定義好參與者集的應用,雖然說可以添加和移除參與者,但是需要每次都對合約進行改變。

B. Plasma

由於 Channel「無法支撐大規模、大資金和複雜交易」的局限性,Plasma 方案應運而生。其結合了側鏈的一些設計,解決了將資產發送給任意目標人的問題,同時也能夠確保 TPS 的提升。事實上在開發者們研究 Layer2 解決方案的開始很長一段時間裡,Plasma 一度被認為就是「the right one」。

但隨着後來因為一些硬傷被 Layer 2 取代了,這邊來簡單給大家說說:

Plasma 是一條獨立的區塊鏈,最初的設計也是想保留側鏈的主要用途,可以通過鏈下交易來擴容,同時能一定程度解決側鏈自身的安全性問題(也就是說當子鏈遇到攻擊時,存儲在子鏈上的資產始終是安全的)因此在取捨後放棄了側鏈的一些性能(比如執行智能合約等),卻通過區塊錨定回主網來增加安全性。他和側鏈最大的 2 點不同在於:

1)側鏈使用橋的方式來和主鏈交互資產,但側鏈的安全性依靠自身的共識機制。而且側鏈往往 比主網小很多。但 plasma 將自身的每一個區塊的狀態信息以區塊根的形式發布到以太坊主網。因此在以太坊主網上是可以確認到 plasma 鏈上的狀態信息的(只不過子鏈上的具體交易數據存儲需要用戶自行下載保存。以太坊主鏈在這個過程中只承擔了確認者的角色,而非驗證者,所以其安全級別是較差的)。因此 Plasma 鏈也被稱為「子」鏈,因為它們本質上是「父鏈」以太坊鏈的較小複製。這意味着它繼承了主鏈的部分安全性,所以也屬於 layer2 的方案

2)plasma 上是不支持智能合約的,僅支持基本的代幣轉移、交換和其他一些交易類型。

  • 無限創建「鏈中鏈」:

每一條 Plasma 可以無限創建更多的子鏈,以減輕父鏈的工作量,每條子鏈都有一個叫做「Operator(運營商)」的角色。

深度丨一文詳解以太坊擴容全方案
  • 運營商周期性的「狀態承諾」:

所有鏈下交易會先匯總到子鏈的運營商,然後(因為子鏈要錨定回主鏈)運營商周期性地把子鏈計算結果匯總,通過默克爾樹的形式打包壓縮成一個區塊根,最後將區塊跟提交回主鏈做狀態記錄。也就是所謂的 周期性的提交「狀態承諾」。通過這樣的方式,無論在兩次提交期間,子鏈上發生了多少筆交易,子鏈只需要將交易執行造成的狀態信息提交到主鏈上即可。而交易的數據是不會提交給主鏈的。

  • 入口——主網合約:

像側鏈一樣,Plasma 使用在以太坊上運行的主合約來處理用戶的進入和退出。用戶必須在主合約中存入 ETH 或任何 ERC-20 代幣。監視合約存款的 Plasma 運營商重新創建與 戶的初始存款相等的金額,並將其釋放到用戶在 Plasma 鏈上的地址。

  • 退出——欺詐證明:

然後在推出 plasma 鏈,也就是取款的時候,plasma 引入了之前提到的「挑戰期」, 通過欺詐證明的方式來懲罰不誠實行為、保證狀態有效性。該主合約還負責跟蹤狀態承諾(前面已解釋)並通過欺詐證明懲罰不誠實行為。「 欺詐證明 」意味着任何人在這段挑戰期(通常是 7 天或者更久)內,都可以通過默克爾樹校驗的方式來提交證明用戶資產的退出是不合法的。

深度丨一文詳解以太坊擴容全方案

Drawn by RJ

  • 狀態根 State Root:

首先剛才提到了 Plasma 在主鏈上擁有一個 ( 或者一系列相互關聯的 ) 合約,用來維護 plasma 子鏈中的狀態記錄,這個狀態記錄實際上是一棵默克爾樹的根節點存儲的哈希值,這個哈希值被稱為 state root。

具體解釋:默克爾樹(一顆二叉樹),在二叉樹的葉子節點上記錄著當前 rollup 層賬戶的狀態信息。

對於每兩個狀態信息 ( 例如 State 1/State 2),我們可以根據某種哈希公式計算出一個唯一的哈希值 (eg: Hash(1,2) ) 來作為這兩個葉子節點的父親節點,依次一層一層往上類推,最終得到一個哈希值存儲在根節點中:你不需要知道怎樣計算哈希值,你只需要記住幾件事情。

1) 任何一個狀態的變化都會導致 Root hash 發生變化。

2) 如果兩棵樹的根哈希值相同,那說明他們的葉子結點存儲的信息完全一致(因此只需要對比兩個根節點哈希值就可以確認底層狀態信息的一致性)。

3) 根據根節點的哈希值和下載相鄰哈希值,我們可以確認某一個狀態信息存在於這棵哈希樹中。

深度丨一文詳解以太坊擴容全方案

Drawn by RJ

當 rollup 上發生交易的時候,會產生新的 state root。任何子鏈的用戶這時候都可以根據自己在子鏈上下載記錄的交易信息來對比、證明新的狀態根是否正確。(因為剛才提了,但凡記錄的交易 / 葉子節點上完全一致的,根哈希值一定會相同。

為了保證他們的資金完全安全,用戶(也就是潛在「驗證者」)需要每隔一段時間觀察一次等離子鏈,去記錄鏈上的交易信息。這包括運行一個自動同步(下載)等離子鏈並確保一切按預期運行的軟件。用戶應至少每隔幾天運行一次該軟件,但具體時間取決於 Plasma MVP 智能合約設置的參數。

如果等離子鏈運行正常,那麼用戶不需要做任何其他事情。但是,如果出現不可逆轉的錯誤(希望極少發生),那麼用戶的錢包將自動開始從 Plasma 鏈中提取資金。這種自動取款保證了用戶資金的安全,即使在最壞的情況下,當惡意運營商試圖竊取資金時也是如此。

  • 數據不可用:

但 Plasma 有一個很大的問題,就是數據的不可用性。欺詐證明有效預防了用戶作惡,也能保證只要有還有哪怕一個誠實節點,就能保證鏈的安全性。但如果是運營商作惡,同時用戶 / 驗證者沒有可以證明真實性的相關交易信息呢?由於用戶可以提交欺詐證明的前提是用戶自行記錄了子鏈上的交易數據 + 運營商將所有真實交易數據打包上主鏈,所以當運營商作惡提交無效數據時,只要將防欺詐所需的相關信息隱藏,網絡中的用戶便無法拿到真實信息來證明交易是無效的。

  • 大規模退出:

由於「運營商作惡」這個問題在 plasma 方案中無法有效預防,只能想解決辦法。plasma 就設計了一套「大規模退出」「mass exit」方案,但這個方案又有可能引發以太坊本身的全網擁塞…

Plasma 項目:

Matic 最早期就是使用 plasma,區塊鏈研究人員此後不久發現了數據可用性問題(後面會在報告中進一步討論),導致 Plasma 被其他解決方案棄用。改名后,polygon 項目就轉為全方面,全站式擴容方案。

優缺點:

深度丨一文詳解以太坊擴容全方案

+ve:

1)提供高吞吐量和

2) 每筆交易的低成本。

3)適用於任意用戶之間的交易。使用的人可以將資產發送給 plasma 以外的人,收款者可以在任何時間點,回到 plasma 只要拿着收款證明,去兌現就可以。而如果兩者都建立在等離子鏈上,則每個用戶對沒有開銷。所以 plasma 也可以適應與主鏈無關的特定用例。包括企業在內的任何人都可以定製 Plasma 智能合約,以提供可在不同環境中工作的可擴展基礎設施。

4)不需要像 channel 去提前鎖定資金.

5)安全性高,plasma 的安全性某種程度上依賴於主網。(fraud prove 欺詐證明)側鏈的 validator 定期將狀態樹根 state root 傳到主鏈,但主鏈不去驗證,允許任何人在一周內提交質疑,和欺詐證明。以此來保證 sv 狀態有效性。

-ve:

1)無法運行智能合約。plasma 僅支持基本的代幣轉移、交換和其他一些交易類型。

2)固定提交周期,如果在這個周期內去支付,支付是不會被確認,需要等周期到了才可以。

3)提款慢,通常需要等 7 天,以允許提交質疑和欺詐證明。

4)需要定期觀察網絡(活躍度要求)或將此責任委託給其他人以確保資金安全

5)依靠一個或多個運營商來存儲數據並根據要求提供服務。

6)如果太多用戶試圖同時退出,以太坊主網可能會變得擁擠。

所以這邊可以看出來,Plasma 和 Channel 通道對比,核心優勢在於:用戶可以將資產發送給從未參與過系統的參與者,並且資本要求要低得多。但代價是:Channel 通道不需要任何數據在鏈上運行,但 Plasma 要求每條鏈定期發布一個哈希值。此外,Plasma 轉賬不是即時的:用戶必須等待挑戰權結束。

但 plasma 自身最核心的問題是,Plasma 子鏈為了提升效率,只會定期提交其狀態結果上主鏈,而非所有交易數據。但是這樣做的代價是 Plasma 無法建立和以太坊主鏈同一級別的信任,因為確保「數據有效性」的重任就落到了「運營商」身上,而非以太坊主網。但運營商是存在動機去作惡的。

於是乎,就有了 roll-up 方案…

C. Roll-Up:

Rollup 是目前最主流的擴容方案,可以算是原始主鏈處理方式和 Plasma 方式的折中:他和 plasma 一樣在以太坊主鏈(也就是一層)之外執行交易,然後將多個交易成批處理在一起,最後將它們的狀態發送回以太坊主網絡。但是不同之處在於,1)roll-up 也會將交易數據提交給主鏈,2)rollup 會最大限度壓縮這些交易數據,同時基於 Rollup 本身的特性適當刪除和縮減一部分數據,只要保證最終的提交能夠上主鏈從而供任何人驗證即可。(這兩種 roll-up 都是在 plasma 的基礎之上,針對交易數據部分提供了不同的證明方案。)

因此,Rollup 的安全性要比 Plasma 高。而他的核心優勢也就是同時保證了狀態有效性 + 數據可用性

Roll-up 具體上怎麼實現的呢?

  • State Root( 先前提到過):

首先 Rollup 在主鏈上擁有一個 ( 或者一系列相互關聯的 ) 合約,用來維護 Rollup 層中的狀態記錄,這個狀態記錄實際上是一棵默克爾樹的根節點存儲的哈希值,這個哈希值被稱為 state root。

具體解釋:默克爾樹(一顆二叉樹),在二叉樹的葉子節點上記錄著當前 rollup 層賬戶的狀態信息。

對於每兩個狀態信息 ( 例如 State 1/State 2),我們可以根據某種哈希公式計算出一個唯一的哈希值 (eg: Hash(1,2) ) 來作為這兩個葉子節點的父親節點,依次一層一層往上類推,最終得到一個哈希值存儲在根節點中:咱不需要知道怎樣計算哈希值,咱們只需要記住幾件事情。

1. 任何一個狀態的變化都會導致 Root hash 發生變化;

2. 如果兩棵樹的根哈希值相同,那說明他們的葉子結點存儲的信息完全一致(因此只需要對比兩個根節點哈希值就可以確認底層狀態信息的一致性;

3. 根據根節點的哈希值和下載相鄰哈希值,我們可以確認某一個狀態信息存在於這顆哈希樹中。

深度丨一文詳解以太坊擴容全方案

Drawn by RJ

  • Batch(這也是 rollup 非常棒的一個改良):

當 rollup 上發生交易的時候,會產生新的 state root。

但是如果每發生一筆交易就簽名並在主鏈更新一次 state root,產生的成本反而會比將這些交易在 Layer1 上執行還要高。

所以 rollup 中產生的交易就被按批次打包匯總,同時根據這批交易全部執行完成後的狀態,會產生一個新的 state root。無論是誰將交易打包提交給主鏈上的智能合約,他都需要計算這個新的 state root,並將其和上一個 state root 以及交易數據一併提交。

這一部分的打包被稱為一個「batch」,運營商將 batch 提交給 Rollup 合約后,主鏈會去驗證新的 state root 是否正確,如果通過驗證,則將 state root 更新為最新提交的 state root,並最終完成一次 rollup 內的狀態轉移確認。

所以,Rollup 的實質是將一大筆實際產生的交易匯總成一筆主鏈上的交易,這些交易由 Rollup 鏈來執行和計算,但會將數據提交給主鏈。這樣既利用了主鏈的共識和安全性,同時提升了實際上的交易效率,降低了交易成本。

深度丨一文詳解以太坊擴容全方案

https://vitalik.ca/general/2021/01/05/rollup.html

深度丨一文詳解以太坊擴容全方案

https://vitalik.ca/general/2021/01/05/rollup.html

  • 壓縮:

這兩種技術方案能夠做到擴容,核心都是交易數據的壓縮和打包(前面提到了 rollup 的一大改良就是將交易數據上鏈 因此「壓縮」是針對這部分)。這是因為以太坊的區塊 gas limit 是有上限的, 壓縮后的交易越小,一次能提交給主鏈的交易就越多,平攤的費用越低。那麼如何做到這一點呢?

以下是 Vitalik 在其文章中描述的一種 zk 的壓縮模式,作為例子幫我們理解:

以太坊主鏈上一筆簡單的交易(比如發送 ETH)通常消耗約 112 字節。然而,在 zk-Rollup 上發送 ETH 可以縮減到約 12 字節。

深度丨一文詳解以太坊擴容全方案

https://vitalik.ca/general/2021/01/05/rollup.html

達到這樣的壓縮效果,一方面是採用了更簡單高級編碼,另一方面,還有一些巧妙的壓縮技巧。

這個圖表很有意思,不考慮 rollup,一般在以太坊網絡上交易會涉及到這些參數:

Nonce:此參數的目的是防止重放。如果一個賬戶的當前 nonce 是 5,那麼來自該賬戶的下一筆交易處理后,賬戶中的 nonce 將增加到 6。nonce 一般來說可以到幾千幾萬,但它是通過 rlp 編碼可以動態縮短字節,所以以太坊網上的 nonce 大約是在 3 字節左右

Gasprice:是以 10 的負 18 次方為單位的一個數,也是 rl 編碼,大概是 8 字節

Gas:這邊指的是你願意付出的 gas 個數,一般都不多。一般以太坊一個 block 的 gas 上限是允許 2 千萬個 gas。一般一個轉賬交易 gas 差不多是 2 萬,調個合約差不多是 10 萬 -20 萬,頂多幾十萬。所以這邊平均差不多 3 個字節

To:以太坊上一個地址差不多是 21 個字節,而且以太坊地址範圍很大

Value:指的是轉賬時的錢數,很多時候調合約 value 都是 0,因為你不需要往合約里轉賬。但比如我轉 5eth 給你,那 value 就有個值。單位也是 10 的負 18 次方,rlp 編碼,9 個字節差不多

Signature:簽名就比較固定 差不多 68 個字節

所以這樣算下來,一個 eth 交易差不多 112 個。因為 roll-up 是往 L2 發,所以只要能表達出完整信息,L2 方案是可以自定義格式的。但是這些信息他可以挑選,和壓縮。比如:

Nonce:在 rollup 中可以完全省略 nonce。因為完全可以從 pre-state 中恢復 nonce。

GasPrice:可以在每批中設置一個固定的費用水平,或者甚至將 gas 支付完全移到匯總協議之外,並讓交易者通過渠道向批次創建者支付費用。

Gas:可以在 batch 層面設置 gas 限制,選擇一些特定的值,

To:可以通過默克爾樹上的索引來替換 20 字節的地址(例如,如果地址是添加到樹中的第 4527 個地址,我們只需使用索引「4527」來引用它。就可以限制到 4 個字節

Value:錢數把單位改一下,或者用其他技術法來存儲。

Signature:使用 BLS 聚合簽名,將多個簽名整合為一個。然後可以一次性地針對整個消息批次「batch」驗證簽名。因為每個區塊中可驗證的聚合的簽名數量上限是 100,所以即使包含 100 筆簽名的 大批次(batch)也能聚合成一筆簽名。

最後省下來差不多 12 個字節。其實相當於限制了精度,但信息範圍不變,依舊幾乎表達了完整的信息。這就是 roll up 為什麼能擴容的重點。但這擴容的原因主要是因為在主鏈上,calldate 是有限制的,因為 calldate 它每個字節都會消耗主網上的一點 gas,而主鏈上一個 blcok 的總 gas 數上有限制的。所以就限制了 calldata 能包括的字節的總數。

這些壓縮技巧是 rollup 擴容的關鍵,如果我們不對交易數據進行壓縮,rollup 或許只能在主鏈的基礎上的有大約 10 倍的提升效率,但有了這些壓縮技巧,才能做到 100 倍甚至更高的壓縮效率。

  • Data availability :

如何驗證提交的信息是正確可用的?

Roll-up 和 plasma 的一大不同在於它也提交了交易數據上主鏈,來保證任何人可以驗證。那現在就涉及到了如何驗證提交的信息是正確可用的?

對於這一問題,大體上有兩種解決方案,而根據解決方案的不同,rollup 也被分成了兩類:Optimistic rollup 樂觀卷疊 和 Zero-knowledge (ZK) rollup 零知識證明卷疊。

a)Optimistic rollup 顧名思義,它們樂觀地假設所有交易都是有效的,並在沒有任何初始證明的情況下提交批次。任何人可以在挑戰期內,檢測並證明有數據是虛假的。

深度丨一文詳解以太坊擴容全方案

Drawn by RJ

如果批處理被證明是有欺詐性的,那麼 Optimistic rollps 會執行欺詐證明,並使用以太坊主鏈上的可用數據運行正確的交易計算。

還可以用剛才這個圖(下圖)來解釋 optimistic roll-up 中的 欺詐證明構建:

batch 所包含的信息包括了 pre-state root,post state root,和交易信息。

根據 pre-state root 這一部分能夠構建完整的默克爾樹。

根據交易信息,我們可以模擬執行 batch 中提交的交易,從而得到了新的賬戶狀態,得到新的默克爾樹,得到新的 state root。

將上一步得到的 state root 和 batch 中的 state root 進行比對從而驗證 batch 中的是否正確。

深度丨一文詳解以太坊擴容全方案

https://vitalik.ca/general/2021/01/05/rollup.html

深度丨一文詳解以太坊擴容全方案

https://vitalik.ca/general/2021/01/05/rollup.html

深度丨一文詳解以太坊擴容全方案

https://vitalik.ca/general/2021/01/05/rollup.html

為了威懾提交者不作惡,提交者往往需要質押資金,當他的提交被驗證為錯誤時,一部分質押資金將會被扣除作為懲罰。同時,提交了相應欺詐證明的驗證者會得到被扣除的押金,以此來激勵監測和提交欺詐證明的行為。

如果我們將 OR 和 Plasma 進行比對,我們會發現一些相似性,例如他們都使用了欺詐證明機制,需要有一個驗證者的角色來監測 OR 給主鏈的提交。但由於 OR 同時向主鏈提交了交易數據,所以 OR 上的驗證者不需要在自己去保存記錄 OR 上的交易。

深度丨一文詳解以太坊擴容全方案

Drawn by RJ

優缺點:

深度丨一文詳解以太坊擴容全方案

+ve:

1)提供高吞吐量

2)和低交易成本

3)roll-up 交易數據存儲在第 1 層鏈上,提高了透明度、安全性、抗審查性和去中心化性。在不犧牲安全性或不信任的情況下提供可擴展性的巨大改進。

4)optimistic rollup 的欺詐證明保證了去信任的最終性,狀態的有效性,而且並允許誠實的少數人保護鏈(理論上哪怕只有一個誠實節點都可以保證整條鏈的安全性)

5)optimistic rollup 也通過將交易數據上主網保證了數據的可用性。

6)與 EVM 和 Solidity 的兼容性允許開發人員將以太坊原生智能合約移植到匯總或使用現有工具來創建新的 dapp。

-ve:

1) 提款慢,通常需要等 7 天,以允許提交質疑和欺詐證明

2)安全模型依賴於至少一個誠實節點執行匯總交易並提交欺詐證明來挑戰無效狀態轉換。

3)Optimistic roll-up 必須在鏈上發布所有交易數據,也需一定的成本。

Optimistic Rollup 項目:

深度丨一文詳解以太坊擴容全方案

b)另一類 Roll-up 解決方案是 Zero-Knowledge rollup (ZK rollup)

先來說說什麼是零知識證明 ZKP?

零知識證明(ZKP)是現代密碼學的一個重要組成部分,它指的是證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。

證明者向驗證者證明並使其相 信自己知道或擁有某一消息,但證明過程不能向驗證者泄漏任何關於被證明消息的信息。通俗的來講就是:

既證明了自己想證明的事情,同時透露給驗證者的信息為「零」。eg 數獨

  • 完備性
  • 可靠性
  • 零知識性

與 Optimistic Rollup 不同,ZK Rollup 要求提交者在提交 batch(zk rollup 也是將交易捆綁成批次,鏈下執行,一同上鏈)時除了交易數據以及 post/previous state root 之外,還要攜帶一個「有效性證明」。有效性證明被提交到主網的 roll-up 合約后,任何人都可以使用它來驗證 zk Rollup 層中特定 batch 的交易是否正確。證明可以在提交 batch 幾分鐘后完成,驗證成功後主鏈 rollup 合約會將 State root 更新為提交的最新數據。這基本等同於省略了驗證人的工作,在提交的同時完成驗證。

這意味着:1. zk Rol-Up 省略掉了驗證者保存數據,在挑戰期提交欺詐證明的環節(如下圖);2. 也不再需要在提交后再等待 7-14 天來做驗證。所以交易速度也比其他 L2 方案快很多。

深度丨一文詳解以太坊擴容全方案

Drawn by RJ

目前市面上有兩種零知識證明的解決方案:

  1. zk-SNARK(Succinct Non-Interactive Argument of Knowledge) 是簡潔非交互式知識論證的縮寫。該種方案的特性是簡潔的,即驗證過程不涉及大量數據傳輸以及驗證算法簡單,這就意味着驗證時間不會隨着運算吞吐量而成倍增長
  2. zk-STARK(Scalable Transparent Argument of Knowledge) 是可擴展的透明知識論證,是作為 SNARK 的替代版本而創建的。與 SNARK 的 Succinct 的「S」不同,STARK 的「S」代表的是 Scalable(可擴展性),主要表現在 STARK 生成證明(Proof)時間複雜度近似於計算的複雜度(呈擬線性關係),而驗證證明(Verify Proof)的時間複雜度遠小於計算的複雜度。也就是說隨着 STARK 擴展性提高,STARK 的證明複雜度並沒有相應增加。

但由於零知識證明這部分涉及到很複雜的底層技術和密碼學概念,所以這個日後可以單拎出來再做個分享。今天這邊就簡單說一下,不進入具體細節。

總之,我們知道 ZK rollups 特有的幾個重要壓縮技巧是:

1. 生成的證明體積遠遠小於證明內容的體積(因此比 op 上傳到主網的字節要小很多)。

2. 如果事務的一部分僅用於驗證,並且與狀態更新無關,那麼該部分可以下鏈,從而減少字節。但這不能在 optimistic roll-up 中完成,因為該數據仍然需要包含在鏈上,以防以後需要在欺詐證明中進行檢查(比較 zk 不需要挑戰期和欺詐證明)。

但 zk 的挑戰在於生成、以及驗證一個 zk 證明本身需要非常非常大量且複雜的計算,這也是為什麼目前 ZK-Rollup 研發進度和實際應用都非常慢的原因之一。而且正因為其技術上的複雜性,並不是隨便一種語言,編譯環境,虛擬機,指令集都能夠無縫支持完成以上提到的過程,需要做額外的適配,這導致 zk 項目天生就很難兼容 evm(這一部分也、可以在日後專門聊 zk 的分享細說)。

這邊是@W3.Hitchhiker 團隊做的一個不同方案的費用和 TPS 對比:

深度丨一文詳解以太坊擴容全方案

https://w3hitchhiker.mirror.xyz/7dwD76ZZIlR7ep731K6y9vTTuXGHOojxWSnkXKzqPzI

優缺點:

深度丨一文詳解以太坊擴容全方案

+ve:

1)有效性證明確保鏈下交易的正確性。

2)由於省略了驗證者的工作和挑戰期這個概念,一旦在 L1 上驗證了有效性證明,就會批准狀態更新,從而提供更快的交易最終確定性。(無須再等 7-14 天)

3)OR 的數據可用性來自於經濟學。為了能夠良好的運轉,OR 必須設計合理的激勵機制驅使一批主鏈上的驗證人隨時監測提交者,並準備提交欺詐證明,而 zk 的數據可用性依賴於密碼學和代碼。

4)安全性依賴於主網的安全性和共識。因為恢復鏈下狀態所需的數據都存儲在 L1 上,從而保證安全性、抗審查性和去中心化。

5)更好的數據壓縮有助於降低 calldata 在以太坊上發布的成本,並最大限度地減少用戶的匯總費用。屬於目前壓縮能力最強,效率最高的方案

6)所以用戶交易費用也低。

-ve:

1)由於其有效證明所需計算量大,複雜度高,所以開發速度慢

2)因此應用不廣泛。不像 op 有那麼多的應該和迭代

3)目前很難支持以太坊虛擬機(EVM),使其難以運行 智能合約、DeFi 協議等去中心化應用程序。

4) 硬件方面的中心化風險。生成有效性證明需要專門的硬件,硬件壟斷有可能會導致對鏈進行集中控制。

ZK Roll-Up 項目:

深度丨一文詳解以太坊擴容全方案

data from https://l2beat.com/scaling/tvl/, 22/09/2022

Rollup 小總結:

現在就能明白為什麼 Roll-Up 方案能夠取代 Plasma 方案:

1)效率 – zk-rollup 會生成鏈下交易處理的有效性證明。直接省略了運營商打包數據、發布「狀態承諾」和 用戶欺詐證明提交的環節,從而消除挑戰期和退出機制的需要。這也意味着用戶不必定期觀察鏈來保護他們的資金。

2)支持智能合約 – Plasma 的另一個問題是無法支持以太坊智能合約的執行。Optimistic roll-up 與以太坊虛擬機兼容,甚至現在不少 zk 項目(zkSync,StarkWare 等)也在推進 zkEVM 的實現。使其成為更理想的、即安全又有用的去中心化擴容方案。

數據不可用 – 如前所述,Plasma 存在數據可用性問題。如果惡意運營商在 Plasma 鏈上提交了無效數據,用戶將無法質疑並提交欺詐證明。Rollups 通過強制運營商在以太坊上發布交易數據來解決這個問題,允許任何人驗證鏈的狀態並在必要時創建欺詐證明。

3)大規模退出問題 – ZK-rollups 和 Optimistic Rollups 都以不同的方式解決了 Plasma 的大規模退出問題。例如,ZK-rollup 的加密機制確保運營商在任何情況下都無法竊取用戶資金。

同樣,optimistic rollup 對提款施加了延遲期,在此期間任何人都可以發起挑戰並防止惡意提款請求。雖然這類似於 Plasma,但不同之處在於驗證者可以訪問創建欺詐證明所需的數據。因此,roll-up 方案不會涉及到有可能損害主網絡的「大規模推出」。

V 神這幾年也強調了未來以太坊的發展路線將是以 roll up 為中心,底層鏈為區塊的數據可用性提供保證,而 Rollup 為區塊的擴容和有效性提供保證。

然而…

隨着向 layer2 大規模遷移的推進,即便是壓縮能力強的 rollups,最終還是會回歸到相同的擴容問題——因為 rollup 交易數據仍必須傳播到所有完整節點,其擴容程度依舊受到以太坊的數據處理能力的限制。

與主網相比,Optimistic rollup 可以實現 25 倍的可擴展性升級,zk rollup 可以實現 100 倍,約 3000 TPS。

可以說 Rollup 方案們在擴容方面提供的是線性增長,而非指數級的。那有沒有可能夠既保證性能,又提供指數級的擴容增長?

深度丨一文詳解以太坊擴容全方案

於是 StarkWare 團隊又首創了 Validium 方案,一個有可能達到 2-3 萬 tps 的鏈下擴容方案…

D. Validium 鏈

它的運行方式類似於 ZK rollup,也通過發布零知識證明來驗證以太坊的鏈下交易,但是最主要的區別在於 Validiums 的數據可用性是鏈下的。因為這樣吞吐量不受以太坊數據處理能力的限制,從而提高擴展性、交易速度、降低用戶費用(發布成本 calldata 更低)等目的。

  • 存款和取款:

存款和取款也和 rollup 類似,用戶的存款和取款由以太坊上的智能合約控制。用戶通過在以太坊主鏈合約中存入 ETH(或任何與 ERC 兼容的代幣),在 validium 鏈上鑄造出與其存款相等金額的代幣。

取款的話,validium 用戶將其提款交易提交給運營商。用戶在 validium 鏈上的資產在退出系統前也會被銷毀。一但批次的有效性證明得到驗證,用戶就可以通過提供 merkle 證明來調用主合約進行提款。所以和 zk-rollup 一樣,Validiums 提供近乎即時的提款。

  • Batch 批次:

和 rollup 類似,用戶向運營商提交交易,運營商將交易打包成批次然後提交上主鏈。批次中包括狀態根 state root/merkle root 和有效性證明。要執行狀態更新,運營商必須計算一個新的狀態根(在執行交易之後)並將其提交給主鏈上的合約。如果有效性證明通過,將切換到新的狀態根。

與 ZK-rollup 不同,validium 上的運營商不需要發布交易數據。這使得 validium 成為一個純粹的鏈下擴展協議。

深度丨一文詳解以太坊擴容全方案

Drawn by RJ

Validium 的鏈下數據存儲主要好處是進一步提高可擴展性(吞吐量不受以太坊數據處理能力的限制)、提高交易速度、降低用戶費用(發布成本calldata更低)、以及保護隱私,因為公眾無法在鏈上訪問交易數據。

  • 數據可用性:

然而,鏈下數據的可用性帶來了一個問題 —— 如果運營商作惡向用戶隱瞞鏈下狀態數據,同時用戶無法訪問交易數據,那麼用戶就無法計算執行提款所需的 Merkle 證明,用戶的資金就會被凍結。

如下圖所示:如果運營者更改了 trasaction 6,則交易 transaction1 的所有者將無法證明其帳戶所有權,因為丟失了證明過程中所需的節點 hash (5,6,7,8)的信息。

(聽起來比 plasma 好一些,在 plasma 方案中,運營商作惡是可以盜取用戶資金的,在 validium 中,因為不是使用欺詐證明,而是有效性證明,運營商作惡隱藏數據的最糟情況是凍結用戶資金,使其無法提款…)

深度丨一文詳解以太坊擴容全方案

Drawn by RJ

因此,Validium 有必要採用額外的鏈下數據管理機制,以便確保用戶在需要時可以訪問到鏈下交易數據。

Validiums 的鏈下數據可用性管理方法可以分為兩大類:一些依賴受信任方來存儲鏈下數據;而另一些則使用隨機分配的驗證者來完成任務。

第一類:數據可用性委員會 Data Availability Committee (DAC)

為了解決這個問題,StarkWare 提出了數據可用性委員會(DAC)的概念,以消除用戶對運營商的信任依賴。

通過指定一組受信任的實體(統稱為數據可用性委員會)來存儲鏈下數據副本並在運營商不為用戶的提款請求提供服務的緊急情況下將其(鏈下數據副本)變為公開可訪問。由於成員較少,DAC 更容易實施並且需要較少的協調。但伴隨的是集中化風險。

直接退出,無需通過運營商。

在緊急情況下,主網上應用程序智能合約(ASC)將不再接受新的狀態更新,而是只允許能夠為最新狀態提供 merkle 證明的用戶直接提取資金。也就是說這種情況下用戶可以無需通過運營商,直接調用主合約的提款功能,將他們的資金提回。

由於其仍使用零知識證明,所以不存在廣播不正確狀態的危險。

但是,用戶必須信任 DAC 以在需要時提供數據(例如,用於生成 Merkle 證明)。數據可用性委員會的成員有可能受到惡意行為者的損害,然後惡意行為者可以扣留鏈下數據。

第二類:綁定數據可用性 Bounded Data Availability

這種是通過經濟激勵機制和去中心化的形式來保證鏈下數據的可用性。此方案要求負責存儲離線數據的參與者在擔任其角色之前在智能合約中質押(即鎖定)代幣。這種代幣作為一種「紐帶」來保證數據可用性管理者之間的誠實行為並減少信任假設。如果這些參與者未能證明數據可用性,則保證金將被削減。

在綁定的數據可用性方案中,一旦質押所需的代幣,任何人都可以被分配存儲鏈下數據。這擴大了符合條件的數據可用性管理人員的數量,減少了影響數據可用性委員會 (DAC) 的集中化風險。更重要的是,這種方法依賴於加密經濟激勵措施來防止惡意活動,比指定受信任方來保護離線數據更安全。

Validium 的優缺點:

深度丨一文詳解以太坊擴容全方案

+ve: zk roll-up 的很多優勢和劣勢 validium 也有:

1) 有效性證明強制鏈下交易的完整性,並防止運營商用無效狀態來更新

2) 交易速度快。將資金撤回以太坊時不會出現延遲(無需欺詐證明)

3)適用於特定用例,例如優先考慮隱私&可擴展性的交易或區塊鏈遊戲。(比如 DeversiFi 是一個使用第二層網絡 (Validium) 實現隱私交易和可擴容的去中心化 * 交易所。* 的 DEX V1.0 選擇鏈下數據解決方案的主要原因之一,是因為他們的客戶——專業交易者——不能將他們的交易歷史記錄在鏈上,因為這會將他們的策略暴露給競爭對手。

4)鏈下數據可用性提供更高水平的吞吐量。

5)通過不將交易數據發布到以太坊主網來降低用戶的 gasfee

6)指數級的可擴展性增長將承載更高的流動性,這會是新興 DEX 的一個重要屬性

-ve:

1)由於其有效證明所需計算量大,複雜度高,所以開發速度慢。對於低吞吐量的應用程序不具有成本效益。

2)因此應用不廣泛。不像 op 有那麼多的應用和迭代

3)目前很難支持以太坊虛擬機(EVM),使其難以運行 智能合約、DeFi 協議等去中心化應用程序。

4)硬件方面的中心化風險。生成有效性證明需要專門的硬件,硬件壟斷有可能會導致對鏈進行集中控制。

5)模型依賴於信任假設和加密經濟激勵,不像 ZK-rollups 純粹依賴加密 密碼學安全機制。

6)鏈下數據的可用性的問題:創建或驗證 Merkle 證明所需的數據可能不可用。這意味着如果運營商作惡,用戶可能無法從鏈上合約中提取資金。即時有數據可用性委員會,依舊存在中心化的風險。

Validium 項目:

深度丨一文詳解以太坊擴容全方案

from https://l2beat.com/scaling/tvl/, 22/09/2022

E. Volition

這邊可以多提一個混合方案——StarkWare 創立的 volition 的概念:結合了 ZK-rollup 和 validium,並允許用戶在兩種擴展解決方案之間切換。通過 Volition,用戶可以利用 validium 的鏈下數據可用性進行某些交易,同時保留在需要時切換到鏈上數據可用性解決方案(ZK-rollup)的自由。這實質上使用戶可以根據他們的獨特情況自由選擇權衡取捨。

深度丨一文詳解以太坊擴容全方案

https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb

例子:在 zkSync2.0 中,就用到了 volition 的概念。他們 L2 狀態分為 2 個方面:具有鏈上數據可用性的 zkRollup 和具有鏈下數據可用性的 zkPorter。這兩部分將是可組合和可互操作的。

四、總結:

  1. 各類方案對比,rollup 有效地保證了狀態有效性 + 數據可用性,保留了先前方案的優勢,同時解決了他們的局限性。從而成為目前擴容領域的的龍頭。
  2. 在 roll-up 方案中,短期來看,optimistic rollup 技術更加成熟、運用更廣泛,op roll-up 可能會在通用 EVM 計算中勝出,而 ZK roll-up 可能會在簡單的支付、交換和其他特定於應用程序的用例中勝出。
  3. 但從長遠來看,而 ZK Rollup 的弱點基本都屬於技術問題,隨着大量優秀的開發人員投入到相關研究,ZK Rollup 在未來會是更優的擴容方案。ZK-Rollup 技術的基本原理將使其能夠取代 Optimistic Rollups,有能力達到更快的速度、更高的安全性,更全的性能,從而帶來更加廣泛的採用。目前已經有不少像 Scroll、zkSync 和 Polygon 這樣的 Layer 2 項目已經在嘗試引入 zk-EVM 的計算環境,這將使 ZK-Rollups 能夠獨立運行所有類型的通用智能合約。
  4. 未來會有更多融合。從擴容方案發展過程來看,以太坊的擴容並不是某個單一方案能夠一勞永逸的。很多解決方案提供商也都在多條路徑上進行着探索和布局。個人相信這也勢必會產生更多融合方案(eg. Optimism 的「Bedrock」;StarkEx 的 Volition;Polygon)
  5. 讀完本文應該能很直觀地感受到:擴容方案的發展迭代,往往是意識到一個解決方案存在的局限性后,用另一種更好的方案來儘可能地保留優點,解決缺點,突破局限。就像當初很長一段時間開發人員都認為 Plasma 就是「The right one」,直到意識到它的局限性無法被突破,從而探索出了 roll-up;目前 roll-up 看起來好像就是大家公認的答案了,但也許隨着探索的深入,還會出現顛覆 roll-up 的更優的解決方案?
  6. 最後就是我整理完感覺這些擴容方案目前有無數種走向,對於我這種二級投資的個體戶 感覺可以慢慢來,等項目跑出來做右側交易,因為變化太快,可能好不容易搞明白了,他們發現走不通,改方向了(就像 plasma) 。然後判斷出一個大趨勢廣撒網,廣押寶也許是笨但比較有效的辦法哈哈。但這是二級思路 不適用於一級,一級最後還是看團隊、看項目背後的網絡、資源。

本文鏈接:https://www.8btc.com/article/6783962

轉載請註明文章出處

(0)
上一篇 2022-10-24 20:49
下一篇 2022-10-24 22:52

相关推荐