今天主要是從一個自上而下結合時間發展的視角整理了以太坊擴容方案。內容涵蓋了一些市場如今已經不再提及的舊方案,有些可能大家聽都沒聽說過。但我認為把大框架和相互邏輯理清楚是非常重要的,這有助于我們理解擴容的發展經歷了哪些創新和組合,遇到了哪些問題,不同時期市場的關注點是什么,以及為何目前 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擴容的可選方案包括:
**1a) 更改共識機制。**以太坊升級就采用了這一方案。幾周其前的beacon信標鏈和主網成功合并就是完成了共識機制從pow到pos的轉換
**1b) 實施分片sharding。**分片是一種常見的Layer 1擴展解決方案,主要是用于增加交易的吞吐量。這是計算機學中的一種數據庫分割技術。網絡連同上面的節點一起被分割成不同的分片,來平攤工作量并提升交易速度。每個分片處理整個網絡的一部分活動,即每個分片都有自己負責的交易、自己的節點和獨立的區塊。
分片還可以減輕每位驗證者的負擔(因為他們不再需要處理和保存整個網絡的所有交易)。每個節點會將完成的工作寫入主鏈,實時共享本地數據。這是之前eth 2.0 原升級計劃涉及到的的擴容方案,現已被danksharding所取代。
**1c) 擴大區塊規模。**使每個區塊能夠處理更多交易(目前eth升級 proto-danksharding 就是類似方案,升級這部分以后會單出一個分享)
Layer 1 擴容需要大費周折。很多情況下,不是所有網絡用戶都會同意這樣的變更。從而可能會導致社區分裂,甚至發生硬分叉。(2017年比特幣分裂出比特幣現金就是硬分叉的后果)
Off-chain,鏈下擴容——所有的鏈下擴容都是與第一層主網分開實施,無需更改現有以太坊協議。Rollup 大致上可以分為兩大類:a)側鏈 b)layer2二層解決方案
2a)側鏈——側鏈是獨立運行的區塊鏈,其安全性全靠自身協議機制。這也是側鏈和目前主流鏈下擴容方案 layer2 二層擴容最大的區別。
而側鏈作為一條獨立的鏈和一些layer1 公鏈相比,區別在于側鏈專門用于處理以太坊的過剩容量,而不是與整個以太坊競爭。這些生態系統與以太坊社區緊密結合,以互補的方式托管以太坊應用。
關于這部分分類,我發現網上很多文章都比較混亂,會把側鏈歸類在layer2中。這部分我主要是參考了以太坊基金會和側鏈白皮書對側鏈的定義。
2b) 第二類鏈下擴容是剛才提到的 也是大家常聽說的layer2 二層解決方案:基本想法是鏈下計算/執行,結果上鏈;離線批量處理。直接從第一層以太坊共識中獲得安全性。那不同的layer2方案 會在安全性、擴容效率、去中心化程度、通用性之間尋找平衡。
先來說說側鏈:
2a)側鏈:
側鏈 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。
側鏈的工作環境和主鏈相同,同樣基于 EVM(以太坊虛擬機)。 但側鏈有自己的賬本系統、共識算法(例如權威證明、委托權益證明、拜占庭容錯)腳本合約等。但為了實現各種不同的目標,它們獲得安全性的方式也有所不同。
這里舉幾個例子:
2a.1) 單一托管模式 Centralized (basic third party authority):這是現階段最簡單的在區塊鏈之間轉移數字資產的方式——將主鏈上的資產發送到一個單一托管方(比如交易平臺),托管方收到這筆資產后,在側鏈上激活等額資產,這筆資產就能在側鏈上流通了。這種方式最大的缺點是過于中心化。
2a.2) 聯盟模式 Federation - multisig federation:聯盟模式是使用公證人聯盟來取代單一的保管方,利用公證人聯盟的多重簽名對側鏈的數字資產流動進行確認。在這種模式中,如果要想盜竊主鏈上凍結的數字資產就需要突破更多的機構,但是側鏈安全仍然取決于公證人聯盟的誠實度。這種方式還是中心化的。
以太坊生態系統支持計劃第三季度提供240萬美元資助:金色財經報道,據以太坊博客消息,以太坊生態系統支持計劃(ESP)團隊發布了2020年第三季度更新。該計劃第三季度為BlockchainsForSchools、Hubble、Zkopru(zk-optimistic-rollup)、DarkForest等團隊總計提供了240萬美元的資助。[2020/11/26 22:09:17]
2a.3) 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證明來表明該輸出已完成,使用這個證明來解鎖父鏈上先前被鎖定的那個等面值的輸出。
2a.4)(不太重要)驅動鏈模式 Drivechain:驅動鏈概念是由Bitcoin Hivemind創始人Paul Sztorc提出的。在驅動鏈中,礦工作為‘算法代理監護人’,對側鏈當前的狀態進行檢測。礦工相當于資金的托管方,驅動鏈將被鎖定資產的監管權發放到礦工手上,并且允許礦工們投票何時解和將解鎖的資產發送到何處。礦工觀察側鏈的狀態,當他們收到來自側鏈的要求時,他們會執行協調協議以確保他們對要求的真實性達成一致。誠實礦工在驅動鏈中的參與程度越高,整體系統安全性也就越大。
2a.5)(不太重要)混合模式:驅動鏈 +公證人/側鏈而混合模式則是將上述獲得雙向錨定的方法進行有效的結合的模式。由于主鏈與側鏈在實現機制存在本質的不同,所以對稱的雙向錨定模型可能是不夠完善的。混合模式是在主鏈和側鏈使用不同的解鎖方法,例如在側鏈上使用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年,當時比特幣的核心開發團隊正在考慮如何可以安全的升級比特幣協議,以增加新的功能,但是擔心直接在比特幣區塊鏈上進行功能添加比較危險,因為如果新功能在實踐中發生軟件故障,會對現有的比特幣網絡造成嚴重影響。另外,由于比特幣的網絡結構特性,如果進行較大規模的改動,還需要獲得多數比特幣礦工的支持。這時,比特幣核心開發者便提出了側鏈方案。
所以最早側鏈本就是允許開發人員探索性質地將新功能附加在其他的區塊鏈,再將這些側鏈附著在現有比特幣區塊鏈上。以保護比特幣父鏈網絡。
Pax Treasury在以太坊網絡增發近936.5萬枚PAX:金色財經報道,Whale Alert數據顯示,北京時間11月25日03:45,Pax Treasury在以太坊網絡上增發9,364,963枚PAX,增發哈希值為:0x7adaf9dcfa68f2e75e1f12a63441525d1896a1c0fc14ff0daad064d294bf61dc。[2020/11/25 22:00:43]
-ve:
1)側鏈和以rollup 和 channel之間的主要區別在于,rollup和channel都繼承了以太坊主網絡的安全性,但側鏈因為采用自己的的共識機制,通常是為特定類型的交易設計的(目的是為了交易能夠更快、更實惠),這也意味著它們通常不會繼承以太坊的安全屬性。從技術上而言,側鏈方案不屬于layer2
2)去中心化程度低
3)和通道方案比起來,側鏈的隱私性弱一些,因為在側鏈上,每筆交易都會發布到側鏈上,無論是否跟側鏈上的所有參與者交互,交易都會被側鏈上每個參與者接收。
2b) Layer2 二層解決方案:基本想法是鏈下計算/執行,結果上鏈;離線批量處理。直接從第一層以太坊共識中獲得安全性。
2b.1)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
1)通道主要面向高頻、小額支付
2)節省了大量交易時間和費用。尤其是交易費用方面,創建通道有初始成本。但是一旦部署了,通道內部每個狀態的更新都非常便宜。鏈上實際只記錄兩筆交易。
3)狀態有效性SV 可以通過欺詐證明得到很好的保證。
4)狀態通道有很強的隱私性能 - 因為任何事情都是發生在通道中的,而不是公開廣播并且記錄在鏈上。只有打開和關閉轉賬必須是公開的。但是在側鏈系統中,每筆轉賬都是發布在側鏈上的,然后側鏈上的每個參與者都會收到,
5)狀態通道有即時的最終確定性 - 也就是說只要兩方簽署了狀態更新,就能認為狀態結束了。
-ve:
1)提幣慢,還需要1周時間進行欺詐證明才能提幣
2)對于偶爾轉賬給對方的用戶來說,創建和結算通道的時間和經濟成本都比較高,不太友好。因為你還需要創建多簽合約,簽名,設計評判程序…
3)不支持開放式參與。通道不能用于向尚未參與的人發送鏈下資金
4)TPS一般,更適合少數參與者,如果是大規模的復雜的交易性能就跟不太上。
5)不支持智能合約,畢竟不是一個鏈。
6)狀態通道需要所有參與者100%的在線,如果參與者中途離開也會被扣除質押代幣。
7)通道不能用于表示沒有明確邏輯所有者的對象(例如 Uniswap)。所以說通道只通道不能用于表示沒有明確邏輯所有者的對象(例如 Uniswap)適合用于有已定義好參與者集的應用,雖然說可以添加和移除參與者,但是需要每次都對合約進行改變。
2b.2)Plasma鏈
由于channel“無法支撐大規模、大資金和復雜交易”的局限性,plasma方案應運而生。其結合了側鏈的一些設計,解決了將資產發送給任意目標人的問題,同時也能夠確保TPS的提升。事實上在開發者們研究Layer2解決方案的開始很長一段時間里,Plasma一度被認為就是 “the right one”。
但隨著后來因為一些硬傷被Layer 2 取代了。這邊來簡單給大家說說。
Plasma是一條獨立的區塊鏈,最初的設計也是想保留側鏈的主要用途,可以通過鏈下交易來擴容,同時能一定程度解決側鏈自身的安全性問題(也就是說當子鏈遇到攻擊時,存儲在子鏈上的資產始終是安全的)因此在取舍后放棄了側鏈的一些性能(比如執行智能合約等),卻通過區塊錨定回主網來增加安全性。他和側鏈最大的2點不同在于:1)側鏈使用橋的方式來和主鏈交互資產,但側鏈的安全性依靠自身的共識機制。而且側鏈往往 比主網小很多。但plasma將自身的每一個區塊的狀態信息以區塊根的形式發布到以太坊主網。因此在以太坊主網上是可以確認到plasma鏈上的狀態信息的(只不過子鏈上的具體交易數據存儲需要用戶自行下載保存。以太坊主鏈在這個過程中只承擔了確認者的角色,而非驗證者,所以其安全級別是較差的)。 因此Plasma鏈也被稱為 "子"鏈,因為它們本質上是“父鏈”以太坊鏈的較小復制。 這意味著它繼承了主鏈的部分安全性,所以也屬于layer2的方案。 2)plasma上是不支持智能合約的,僅支持基本的代幣轉移、交換和其他一些交易類型。
無限創建“鏈中鏈”:
每一條Plasma 可以無限創建更多的子鏈,以減輕父鏈的工作量,每條子鏈都有一個叫做“Operator(運營商)”的角色。
動態 | 以太坊未確認交易33905筆:據Etherscan.io數據顯示,當前以太坊未確認交易為33905筆,近期未確認筆數相對穩定,持續在30000筆附近徘徊,網絡擁堵程度一般。[2019/1/17]
運營商周期性的“狀態承諾”:
所有鏈下交易會先匯總到子鏈的運營商,然后(因為子鏈要錨定回主鏈)運營商周期性地把子鏈計算結果匯總,通過默克爾樹的形式打包壓縮成一個區塊根,最后將區塊跟提交回主鏈做狀態記錄。也就是所謂的 周期性的提交”狀態承諾“。通過這樣的方式,無論在兩次提交期間,子鏈上發生了多少筆交易,子鏈只需要將交易執行造成的狀態信息提交到主鏈上即可。而交易的數據是不會提交給主鏈的。
入口——主網合約:
像側鏈一樣,Plasma 使用在以太坊上運行的主合約來處理用戶的進入和退出。用戶必須在主合約中存入 ETH 或任何 ERC-20 代幣。監視合約存款的 Plasma 運營商重新創建與 戶的初始存款相等的金額,并將其釋放到用戶在 Plasma 鏈上的地址。
退出——欺詐證明:
然后在推出plasma鏈,也就是取款的時候,plasma引入了之前提到的“挑戰期”, 通過欺詐證明的方式來懲罰不誠實行為、保證狀態有效性。該主合約還負責跟蹤狀態承諾(前面已解釋)并通過欺詐證明懲罰不誠實行為。「 欺詐證明 」意味著任何人在這段挑戰期(通常是7天或者更久)內,都可以通過默克爾樹校驗的方式來提交證明用戶資產的退出是不合法的。
狀態根State Root:
首先剛才提到了Plasma在主鏈上擁有一個(或者一系列相互關聯的)合約,用來維護plasma子鏈中的狀態記錄,這個狀態記錄實際上是一棵默克爾樹的根節點存儲的哈希值,這個哈希值被稱為state root。
具體解釋:默克爾樹(一顆二叉樹),在二叉樹的葉子節點上記錄著當前rollup層賬戶的狀態信息。
對于每兩個狀態信息(例如State 1/State 2),我們可以根據某種哈希公式計算出一個唯一的哈希值(eg: Hash(1,2) )來作為這兩個葉子節點的父親節點,依次一層一層往上類推,最終得到一個哈希值存儲在根節點中:你不需要知道怎樣計算哈希值,你只需要記住幾件事情。
1 任何一個狀態的變化都會導致Root hash發生變化)
2 如果兩棵樹的根哈希值相同,那說明他們的葉子結點存儲的信息完全一致(因此只需要對比兩個根節點哈希值就可以確認底層狀態信息的一致性)
3 根據根節點的哈希值和下載相鄰哈希值,我們可以確認某一個狀態信息存在于這顆哈希樹中。
當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狀態有效性。
1)無法運行智能合約。plasma僅支持基本的代幣轉移、交換和其他一些交易類型。
2)固定提交周期,如果在這個周期內去支付,支付是不會被確認,需要等周期到了才可以
3)提款慢,通常需要等7天,以允許提交質疑和欺詐證明。
4)需要定期觀察網絡(活躍度要求)或將此責任委托給其他人以確保資金安全
5)依靠一個或多個運營商來存儲數據并根據要求提供服務。
6)如果太多用戶試圖同時退出,以太坊主網可能會變得擁擠。
所以這邊可以看出來,Plasma 和Channel通道對比,核心優勢在于:用戶可以將資產發送給從未參與過系統的參與者,并且資本要求要低得多。但代價是:Channel通道不需要任何數據在鏈上運行,但 Plasma 要求每條鏈定期發布一個哈希值。此外,Plasma 轉賬不是即時的:用戶必須等待挑戰權結束。
但plasma自身最核心的問題是,Plasma子鏈為了提升效率,只會定期提交其狀態結果上主鏈,而非所有交易數據。但是這樣做的代價是Plasma無法建立和以太坊主鏈同一級別的信任,因為確保”數據有效性“的重任就落到了”運營商“身上,而非以太坊主網。但運營商是存在動機去作惡的。
于是乎,就有了roll-up方案…
2b.3)Roll-Up:
Rollup是目前最主流的擴容方案,可以算是原始主鏈處理方式和Plasma方式的折中:他和plasma一樣在以太坊主鏈(也就是一層)之外執行交易,然后將多個交易成批處理在一起,最后將它們的狀態發送回以太坊主網絡。但是不同之處在于,1)roll-up也會將交易數據提交給主鏈,2)rollup會最大限度壓縮這些交易數據,同時基于Rollup本身的特性適當刪除和縮減一部分數據,只要保證最終的提交能夠上主鏈從而供任何人驗證即可。(這兩種roll-up 都是在plasma的基礎之上,針對交易數據部分提供了不同的證明方案。)
動態 | 以太坊基金會在Testnet上推出500 Tx / s的等離子ETH規模解決方案:據trustnodes消息,以太坊基金會和一家名為Matter Inc的初創公司的開發人員已經在testnet上推出了一種等離子擴展解決方案,該解決方案使用ZKSNARK來允許每秒500次交易。他們說:“在Ignis中,用戶對交易的驗證由以下方法取代:提議塊的運營商必須提交證明新塊正確的SNARK,智能合約會自動驗證。[2019/1/7]
因此,Rollup的安全性要比Plasma高。而他的核心優勢也就是同時保證了狀態有效性+數據可用性。
Roll-up具體上怎么實現的呢?
State Root(先前提到過):
首先Rollup在主鏈上擁有一個(或者一系列相互關聯的)合約,用來維護Rollup層中的狀態記錄,這個狀態記錄實際上是一棵默克爾樹的根節點存儲的哈希值,這個哈希值被稱為state root。
對于每兩個狀態信息(例如State 1/State 2),我們可以根據某種哈希公式計算出一個唯一的哈希值(eg: Hash(1,2) )來作為這兩個葉子節點的父親節點,依次一層一層往上類推,最終得到一個哈希值存儲在根節點中:咱不需要知道怎樣計算哈希值,咱們只需要記住幾件事情。
1 任何一個狀態的變化都會導致Root hash發生變化;
2 如果兩棵樹的根哈希值相同,那說明他們的葉子結點存儲的信息完全一致(因此只需要對比兩個根節點哈希值就可以確認底層狀態信息的一致性;
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鏈來執行和計算,但會將數據提交給主鏈。這樣既利用了主鏈的共識和安全性,同時提升了實際上的交易效率,降低了交易成本。
壓縮:
這兩種技術方案能夠做到擴容,核心都是交易數據的壓縮和打包(前面提到了rollup的一大改良就是將交易數據上鏈 因此“壓縮”是針對這部分)。這是因為以太坊的區塊 gas limit 是有上限的, 壓縮后的交易越小,一次能提交給主鏈的交易就越多,平攤的費用越低。那么如何做到這一點呢?
以下是Vitalik在其文章中描述的一種zk的壓縮模式,作為例子幫我們理解
以太坊主鏈上一筆簡單的交易(比如發送 ETH)通常消耗約 112 字節。然而,在 zk-Rollup 上發送 ETH 可以縮減到約 12 字節。
達到這樣的壓縮效果,一方面是采用了更簡單高級編碼,另一方面,還有一些巧妙的壓縮技巧:
這個圖表很有意思,不考慮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也被分成了兩類:
兩種類型的rollup
目前roll-up分為兩大類:Optimistic rollup樂觀卷疊 和 Zero-knowledge (ZK) rollup零知識證明卷疊
孫宇晨發微博分析以太坊云養貓火爆原因:Tron創始人孫宇晨發布微博分析以太坊云養貓火的原因,他認為:“1.貓的基因是真隨機數,血統高貴花費的努力與時間能夠被精準度量。2.數據去中心化,機制透明催生了公正市場。3.線上擼貓比線下省力,宅男女喜歡。4.數據透明,容易炫耀與比較。5.線上擼貓交易透明標準化易于交割,帶有投資屬性。6.交易智能合約7*24小時營業。”[2017/12/6]
2b.3.a)Optimistic rollup 顧名思義,它們樂觀地假設所有交易都是有效的,并在沒有任何初始證明的情況下提交批次。任何人可以在挑戰期內,檢測并證明有數據是虛假的。
如果批處理被證明是有欺詐性的,那么Optimistic rollps會執行欺詐證明,并使用以太坊主鏈上的可用數據運行正確的交易計算。
還可以用剛才這個圖(下圖)來解釋optimistic roll-up中的 欺詐證明構建:
batch所包含的信息包括了pre-state root,post state root,和交易信息。
根據pre-state root這一部分能夠構建完整的默克爾樹。
根據交易信息,我們可以模擬執行batch中提交的交易,從而得到了新的賬戶狀態,得到新的默克爾樹,得到新的state root。
將上一步得到的state root和batch中的state root進行比對從而驗證batch中的是否正確。
為了威懾提交者不作惡,提交者往往需要質押資金,當他的提交被驗證為錯誤時,一部分質押資金將會被扣除作為懲罰。同時,提交了相應欺詐證明的驗證者會得到被扣除的押金,以此來激勵監測和提交欺詐證明的行為。
如果我們將OR和Plasma進行比對,我們會發現一些相似性,例如他們都使用了欺詐證明機制,需要有一個驗證者的角色來監測OR給主鏈的提交。但由于OR同時向主鏈提交了交易數據,所以OR上的驗證者不需要在自己去保存記錄OR上的交易。
1)提供高吞吐量
2)和低交易成本
3)roll-up交易數據存儲在第 1 層鏈上,提高了透明度、安全性、抗審查性和去中心化性。在不犧牲安全性或不信任的情況下提供可擴展性的巨大改進。
4)optimistic rollup的欺詐證明保證了去信任的最終性,狀態的有效性,而且并允許誠實的少數人保護鏈(理論上哪怕只有一個誠實節點都可以保證整條鏈的安全性)
5)optimistic rollup也通過將交易數據上主網保證了數據的可用性。
6)與 EVM 和 Solidity 的兼容性允許開發人員將以太坊原生智能合約移植到匯總或使用現有工具來創建新的 dapp。
ve:
提款慢,通常需要等7天,以允許提交質疑和欺詐證明
安全模型依賴于至少一個誠實節點執行匯總交易并提交欺詐證明來挑戰無效狀態轉換。
Optimistic roll-up必須在鏈上發布所有交易數據,也需一定的成本。
Optimistic Rollup項目:
**2b.3.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方案快很多。
目前市面上有兩種零知識證明的解決方案:
2b.3.b.1) zk-SNARK(Succinct Non-Interactive Argument of Knowledge) 是簡潔非交互式知識論證的縮寫。該種方案的特性是簡潔的,即驗證過程不涉及大量數據傳輸以及驗證算法簡單,這就意味著驗證時間不會隨著運算吞吐量而成倍增長。
2b.3.b.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對比:
1)有效性證明確保鏈下交易的正確性。
2) 由于省略了驗證者的工作和挑戰期這個概念,一旦在 L1 上驗證了有效性證明,就會批準狀態更新,從而提供更快的交易最終確定性。(無須再等7-14天)
3)OR 的數據可用性來自于經濟學。為了能夠良好的運轉,OR必須設計合理的激勵機制驅使一批主鏈上的驗證人隨時監測提交者,并準備提交欺詐證明。而zk的數據可用性依賴于密碼學和代碼
4)安全性依賴于主網的安全性和共識。因為恢復鏈下狀態所需的數據都存儲在 L1 上,從而保證安全性、抗審查性和去中心化
5)更好的數據壓縮有助于降低calldata在以太坊上發布的成本,并最大限度地減少用戶的匯總費用。屬于目前壓縮能力最強,效率最高的方案
6)所以用戶交易費用也低
1)由于其有效證明所需計算量大,復雜度高,所以開發速度慢
2)因此應用不廣泛。不像op有那么多的應該和迭代
3)目前很難支持以太坊虛擬機(EVM),使其難以運行 智能合約、DeFi 協議等去中心化應用程序。
4) 硬件方面的中心化風險。生成有效性證明需要專門的硬件,硬件壟斷有可能會導致對鏈進行集中控制。
ZK Roll-Up項目:
Rollup 小總結:
現在就能明白為什么Roll-Up方案能夠取代Plasma方案:
效率 - zk-rollup 會生成鏈下交易處理的有效性證明。直接省略了運營商打包數據、發布“狀態承諾” 和 用戶欺詐證明提交的環節,從而消除挑戰期和退出機制的需要。這也意味著用戶不必定期觀察鏈來保護他們的資金。
支持智能合約 - Plasma 的另一個問題是無法支持以太坊智能合約的執行。Optimistic roll-up與以太坊虛擬機兼容,甚至現在不少zk項目(zkSync,StarkWare等)也在推進zkEVM的實現。使其成為更理想的、即安全又有用的去中心化擴容方案。
數據不可用 - 如前所述,Plasma 存在數據可用性問題。如果惡意運營商在 Plasma 鏈上提交了無效數據,用戶將無法質疑并提交欺詐證明。Rollups 通過強制運營商在以太坊上發布交易數據來解決這個問題,允許任何人驗證鏈的狀態并在必要時創建欺詐證明。
大規模退出問題 - 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的鏈下擴容方案…
2b.4)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 成為一個純粹的鏈下擴展協議。
Validium的鏈下數據存儲主要好處是進一步提高可擴展性(吞吐量不受以太坊數據處理能力的限制)、提高交易速度、降低用戶費用(發布成本calldata更低)、以及保護隱私,因為公眾無法在鏈上訪問交易數據。
數據可用性
然而,鏈下數據的可用性帶來了一個問題 —— 如果運營商作惡向用戶隱瞞鏈下狀態數據,同時用戶無法訪問交易數據,那么用戶就無法計算執行提款所需的 Merkle 證明,用戶的資金就會被凍結。
如下圖所示:如果運營者更改了trasaction 6,則交易transaction1的所有者將無法證明其帳戶所有權,因為丟失了證明過程中所需的節點 hash (5,6,7,8)的信息。
(聽起來比plasma好一些,在plasma方案中,運營商作惡是可以盜取用戶資金的,在validium中,因為不是使用欺詐證明,而是有效性證明,運營商作惡隱藏數據的最糟情況是凍結用戶資金,使其無法提款…)
因此,Validium 有必要采用額外的鏈下數據管理機制,以便確保用戶在需要時可以訪問到鏈下交易數據。
Validiums 的鏈下數據可用性管理方法可以分為兩大類:一些依賴受信任方來存儲鏈下數據;而另一些則使用隨機分配的驗證者來完成任務。
第一類:數據可用性委員會Data Availability Committee (DAC)
為了解決這個問題,StarkWare提出了數據可用性委員會(DAC)的概念,以消除用戶對運營商的信任依賴。
通過指定一組受信任的實體(統稱為數據可用性委員會)來存儲鏈下數據副本并在運營商不為用戶的提款請求提供服務的緊急情況下將其(鏈下數據副本)變為公開可訪問。由于成員較少,DAC 更容易實施并且需要較少的協調。但伴隨的是集中化風險。
直接退出,無需通過運營商
在緊急情況下,主網上應用程序智能合約(ASC)將不再接受新的狀態更新,而是只允許能夠為最新狀態提供merkle證明的用戶直接提取資金。也就是說這種情況下用戶可以無需通過運營商,直接調用主合約的提款功能,將他們的資金提回。
由于其仍使用零知識證明,所以不存在廣播不正確狀態的危險。
但是,用戶必須信任 DAC 以在需要時提供數據(例如,用于生成 Merkle 證明)。數據可用性委員會的成員有可能受到惡意行為者的損害,然后惡意行為者可以扣留鏈下數據。
第二類:綁定數據可用性 Bounded Data Availability
這種是通過經濟激勵機制和去中心化的形式來保證鏈下數據的可用性。此方案要求負責存儲離線數據的參與者在擔任其角色之前在智能合約中質押(即鎖定)代幣。這種代幣作為一種“紐帶”來保證數據可用性管理者之間的誠實行為并減少信任假設。如果這些參與者未能證明數據可用性,則保證金將被削減。
在綁定的數據可用性方案中,一旦質押所需的代幣,任何人都可以被分配存儲鏈下數據。這擴大了符合條件的數據可用性管理人員的數量,減少了影響數據可用性委員會 (DAC) 的集中化風險。更重要的是,這種方法依賴于加密經濟激勵措施來防止惡意活動,比指定受信任方來保護離線數據更安全。
Volition:
這邊可以多提一個混合方案——StarkWare創立的volition的概念:結合了 ZK-rollup 和validium,并允許用戶在兩種擴展解決方案之間切換。通過Volition,用戶可以利用 validium 的鏈下數據可用性進行某些交易,同時保留在需要時切換到鏈上數據可用性解決方案(ZK-rollup)的自由。這實質上使用戶可以根據他們的獨特情況自由選擇權衡取舍。
例子:在zkSync2.0中,就用到了volition的概念。他們L2 狀態分為 2 個方面:具有鏈上數據可用性的 zkRollup 和具有鏈下數據可用性的 zkPorter。這兩部分將是可組合和可互操作的。
Validium的優缺點:
+ve: zk roll-up的很多優勢和劣勢validium也有
1)有效性證明強制鏈下交易的完整性,并防止運營商用無效狀態來更新
2)交易速度快。將資金撤回以太坊時不會出現延遲(無需欺詐證明)
3)適用于特定用例,例如優先考慮隱私&可擴展性的交易或區塊鏈游戲。(比如DeversiFi 是一個使用第二層網絡(Validium)實現隱私交易和可擴容的去中心化*交易所。*的DEX V1.0 選擇鏈下數據解決方案的主要原因之一,是因為他們的客戶——專業交易者——不能將他們的交易歷史記錄在鏈上,因為這會將他們的策略暴露給競爭對手。
4)鏈下數據可用性提供更高水平的吞吐量。
5)通過不將交易數據發布到以太坊主網來降低用戶的gasfee
6)指數級的可擴展性增長將承載更高的流動性,這會是新興 DEX 的一個重要屬性
1)由于其有效證明所需計算量大,復雜度高,所以開發速度慢。對于低吞吐量的應用程序不具有成本效益。
2)因此應用不廣泛。不像op有那么多的應用和迭代
5)模型依賴于信任假設和加密經濟激勵,不像 ZK-rollups 純粹依賴加密 密碼學安全機制。
6)鏈下數據的可用性的問題:創建或驗證 Merkle 證明所需的數據可能不可用。這意味著如果運營商作惡,用戶可能無法從鏈上合約中提取資金。即時有數據可用性委員會,依舊存在中心化的風險。
Validium項目:
四、總結:
各類方案對比,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) 。然后判斷出一個大趨勢廣撒網,廣押寶也許是笨但比較有效的辦法哈哈。但這是二級思路 不適用于一級,一級最后還是看團隊、看項目背后的網絡、資源。
0xRJ_eth
個人專欄
閱讀更多
金色早8點
區塊律動BlockBeats
1435Crypto
金色財經
吳說區塊鏈
比推 Bitpush News
blockin
Block unicorn
Foresight News
Odaily星球日報
Bankless
DeFi之道
▌ SBF:FTX與幣安達成協議,獲得幣安戰略投資11月9日消息,FTX創始人SBF發布推特稱,事情又回到了原點.
1900/1/1 0:00:00Web3產品正在替代用戶最喜歡的Web2應用程序,而且采用速度比你想象的要快。隱私和去中心化是吸引開發人員使用區塊鏈技術改進當今Web2應用程序的兩個最具吸引力的功能.
1900/1/1 0:00:00理解開源,理解 Web3,理解世界。我這一次將繼續拾起《請回答 Web3》系列,分享第二篇:為什么說開源社區是 DAO 的雛型?我們會探討「當今世界的開源生態」「中立 Linux、Apache.
1900/1/1 0:00:002022年,國內電商正面臨多重巨變:618、雙11失靈降溫,互聯網脫虛向實涌向賣貨——B站、今日頭條等內容平臺,俞敏洪、劉潤等知識博主紛紛入局。在電商熱戰的邊角處,國內外元宇宙電商幾乎同時萌芽.
1900/1/1 0:00:00Web3社交協議Lens Protocol最新獲得FTX Ventures投資,詳解Lens協議如何將所有權歸于用戶、新用戶如何進入Lens生態并進行產品交互.
1900/1/1 0:00:00越來越多的朋友,希望用DAO來重新對公司進行升級,廣大科技創業者更是愛上了這種自由翱翔的新玩法.
1900/1/1 0:00:00