出品:LD Capital Research
作者:0xRJ_eth(Twitter:@0xRJ_eth)
今天主要是從一個自上而下結合時間發展的視角整理了以太坊擴容方案,內容涵蓋了一些市場如今已經不再提及的舊方案,有些可能大家聽都沒聽說過。但我認為把大框架和相互邏輯理清楚是非常重要的,這有助於我們理解擴容的發展經歷了哪些創新和組合,遇到了哪些問題,不同時期市場的關注點是什麼,以及為何目前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協議能夠在自身的區塊鏈上處理並完成交易,同時自帶用於支付交易費用的原生通證。
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(以太坊虛擬機)。但側鏈有自己的賬本系統、共識算法(例如權威證明、委託權益證明、拜占庭容錯)腳本合約等。但為了實現各種不同的目標,它們獲得安全性的方式也有所不同。
這裡舉幾個例子:
單一託管模式Centralized (basic third party authority):這是現階段最簡單的在區塊鏈之間轉移數字資產的方式——將主鏈上的資產發送到一個單一託管方(比如交易平台),託管方收到這筆資產後,在側鏈上激活等額資產,這筆資產就能在側鏈上流通了。這種方式最大的缺點是過於中心化。
聯盟模式Federation - multisig federation:聯盟模式是使用公證人聯盟來取代單一的保管方,利用公證人聯盟的多重簽名對側鏈的數字資產流動進行確認。在這種模式中,如果要想盜竊主鏈上凍結的數字資產就需要突破更多的機構,但是側鏈安全仍然取決於公證人聯盟的誠實度。這種方式還是中心化的。
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證明來表明該輸出已完成,使用這個證明來解鎖父鏈上先前被鎖定的那個等面值的輸出。
驅動鏈模式Drivechain:驅動鏈概念是由Bitcoin Hivemind創始人Paul Sztorc提出的。在驅動鏈中,礦工作為'算法代理監護人',對側鏈當前的狀態進行檢測。礦工相當於資金的託管方,驅動鏈將被鎖定資產的監管權發放到礦工手上,並且允許礦工們投票何時解和將解鎖的資產發送到何處。礦工觀察側鏈的狀態,當他們收到來自側鏈的要求時,他們會執行協調協議以確保他們對要求的真實性達成一致。誠實礦工在驅動鏈中的參與程度越高,整體系統安全性也就越大。
混合模式:驅動鏈+公證人/側鏈而混合模式則是將上述獲得雙向錨定的方法進行有效的結合的模式。由於主鏈與側鏈在實現機制存在本質的不同,所以對稱的雙向錨定模型可能是不夠完善的。混合模式是在主鍊和側鏈使用不同的解鎖方法,例如在側鏈上使用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
目前市面上有兩種零知識證明的解決方案:
zk-SNARK(Succinct Non-Interactive Argument of Knowledge)是簡潔非交互式知識論證的縮寫。該種方案的特性是簡潔的,即驗證過程不涉及大量數據傳輸以及驗證算法簡單,這就意味著驗證時間不會隨著運算吞吐量而成倍增長。
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)的信息。
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。這兩部分將是可組合和可互操作的。
四、總結:
各類方案對比,rollup有效地保證了狀態有效性+數據可用性,保留了先前方案的優勢,同時解決了他們的局限性。從而成為目前擴容領域的的龍頭。
在roll-up方案中,短期來看,optimistic rollup技術更加成熟、運用更廣泛,op roll-up可能會在通用EVM 計算中勝出,而ZK roll-up可能會在簡單的支付、交換和其他特定於應用程序的用例中勝出。
但從長遠來看,而ZK Rollup的弱點基本都屬於技術問題,隨著大量優秀的開發人員投入到相關研究,ZK Rollup在未來會是更優的擴容方案。 ZK-Rollup 技術的基本原理將使其能夠取代Optimistic Rollups,有能力達到更快的速度、更高的安全性,更全的性能,從而帶來更加廣泛的採用。目前已經有不少像Scroll、zkSync 和Polygon 這樣的Layer 2 項目已經在嘗試引入zk-EVM 的計算環境,這將使ZK-Rollups 能夠獨立運行所有類型的通用智能合約。
未來會有更多融合。從擴容方案發展過程來看,以太坊的擴容並不是某個單一方案能夠一勞永逸的。很多解決方案提供商也都在多條路徑上進行著探索和佈局。個人相信這也勢必會產生更多融合方案(eg. Optimism 的“Bedrock”;StarkEx的Volition;Polygon)
讀完本文應該能很直觀地感受到:擴容方案的發展迭代,往往是意識到一個解決方案存在的局限性後,用另一種更好的方案來盡可能地保留優點,解決缺點,突破局限。就像當初很長一段時間開發人員都認為Plasma 就是“the right one”,直到意識到它的局限性無法被突破,從而探索出了roll-up;目前roll-up看起來好像就是大家公認的答案了,但也許隨著探索的深入,還會出現顛覆roll-up的更優的解決方案?
最後就是我整理完感覺這些擴容方案目前有無數種走向,對於我這種二級投資的個體戶感覺可以慢慢來,等項目跑出來做右側交易,因為變化太快,可能好不容易搞明白了,他們發現走不通,改方向了(就像plasma) 。然後判斷出一個大趨勢廣撒網,廣押寶也許是笨但比較有效的辦法哈哈。但這是二級思路不適用於一級,一級最後還是看團隊、看項目背後的網絡、資源。