深層研究以太坊擴容方案優劣性。
前沿
無論你是不是區塊鏈技術方面的專家,只要你待在Crypto的世界里夠久。以太坊擴容,layer2,Rollup這些詞語對于你來說都不會陌生。很多人都對這些概念中的一個或多個有所了解,但是他們之間的關系到底是怎樣的?我們為什么需要這些技術?他們想要解決什么樣的問題?
如果你想要知道以上問題的答案,那希望這篇文章會對你有所幫助:
本文中的所有內容都是邏輯上的梳理,不會涉及密碼學/計算機科學方面的知識,所以相信只要你對以太坊本身熟悉,基本都可以理解。
正文
自從CryotoKitty造成以太坊鏈上擁堵的那天開始,以太坊開發者們就在不停的探索提高以太坊吞吐量的方案。
從原理上可以分為兩類:
是對以太坊區塊本身進行改造,我們姑且稱之為Layer1方案,這里的主要解決方案是分片。
是改變我們使用以太坊的方式,將交易的執行和處理放在鏈下,以太坊本身只用來校驗其交易有效性,提供安全性。這就是我們經常聽到的Layer2。
Layer2的核心思想是將大批實際發生的交易放在鏈下執行和計算,再將其通過以太坊上極少量的交易進行交易最終有效性的驗證。無論是State Channel,Plasma還是Rollup,實際上都遵循了這一原則。
現在談起Layer2,很多人第一反應都是將其與Optimistic/ZK Rollup掛鉤,但在這里我們先簡單介紹一下狀態通道和Plasma,這有助于我們理解為何Rollup最終勝出,成為當前我們談論最多的Layer2解決方案:
一.狀態通道
以下是一個狀態通道的最原始結構:
狀態通道是一種已經存在很久的區塊鏈擴展方案,他最出名的應用是比特幣的閃電網絡。
相比描述他的原理,一個例子更能夠說清楚什么是狀態通道:
你很喜歡樓下的一家理發店,每次去理發店的時候Tony老師都會在你的耳邊一直讓你辦卡。
有一天你終于決定了,辦卡就辦卡吧,反正我以后還會來。于是你向理發店轉賬一千元辦了一張卡。
以后每次去理發,你都不需要再向理發店轉賬,取而代之的是你的卡里的余額會被扣除,同時每次理發你都和理發店完成了一次實際上的交易。
過了一個月,你要搬家了,可是你卡里的錢還沒用完。于是你向理發店申請退卡,理發店的Tony老師退給了你200元。
在這一個月的時間里,你在理發店消費了十幾次,但你和理發店實際上只互相轉賬了兩次。
將這個過程放在區塊鏈上,你買卡的過程實際上是將錢存進了某個智能合約,同時開啟了一個你與理發店間的狀態通道。你退卡的過程關閉了你與理發店之間的“狀態通道”。你和理發店之間的互相轉賬相當于在以太坊主鏈上的兩筆交易。
設想一下你沒有辦卡,那每次理完頭你都需要給理發店轉一次帳。
通過這個例子我們發現,通過狀態通道,只有第一步和最后一步需要我們在區塊鏈上進行交易,在這些步驟之間,你 和 理發店 可以向對方發送無限數量的簽名消息(完成一次消費),指示付款。在這種情況下,以太坊區塊鏈僅用作結算層來處理一次性付款的最終交易,這大大減輕了底層區塊鏈的負擔。
應用場景
(1)狀態通道在某些簡單場景如流支付中能夠發揮很大的作用,其通過在鏈下對消息簽名的方式對交易數據進行記錄,將大量在邏輯上發生了的交易簡化成了主鏈上的兩筆交易。
(2)狀態通道因為其成本較低,很適合一些微支付的場景,比如用ETH或者BTC買早餐咖啡等。
局限性
但同時,狀態通道需要資金的發送方和接受方都進入這個通道來,而為了維護狀態通道,支持比流支付更復雜的操作,大筆的資金需要被鎖定。因此開發者們很快意識到狀態通道無法作為可選的擴容方案之一。
二:Plasma
1:原理
現在我們都知道了狀態通道的局限性,而為了解決這個問題 ———— Plasma應運而生。其解決了將資產發送給任意目標人的問題,同時也能夠確保TPS的提升。事實上在開發者們研究Layer2解決方案的開始很長一段時間里,Plasma一度被認為就是那 “一個”。
要理解Plasma,首先要明白它并不是一種實際的技術,它更像是一種設計思想或者技術架構。
Plasma通常是一條鏈,它可以擁有與主鏈不同的共識機制,也可以擁有自己的礦工。但最重要的是Plasma鏈上會有一個叫做“Operator”的角色定期的根據子鏈上的狀態轉換,生成一棵默克爾樹,并將這棵默克爾樹的樹根哈希值提交給主鏈做驗證和記錄。關于為什么默克爾樹和其樹根哈希值能夠用作狀態轉換的驗證,我們會在同樣使用了這一應用的Rollup中講到。
騰訊云副總裁:正在內部探索應用大模型:金色財經報道,5月15日,在第三屆 Light?技術公益創造營上,騰訊云副總裁、騰訊云智能平臺負責人李學朝透露,騰訊的 AI 技術已經開放應用在所有公益方向,騰訊內部很多 C 端產品和 B 端的產業也在廣泛使用。具體到大模型,騰訊內部正在做,現在也有和客戶一起做應用探索,具體進度后續會統一對外公布。[2023/5/16 15:05:06]
通過這樣的方式,無論在兩次提交期間,子鏈上發生了多少筆交易,子鏈只需要將交易執行造成的狀態信息提交到主鏈上即可。
以下是使用Plasma機制的簡單示意圖:
用戶想要進入Plasma鏈需要在以太坊主鏈上做資產的映射,而當其需要將Plasma鏈上的資產轉移或主鏈上時,需要經歷一段時間的挑戰期來供其他人使用「 欺詐證明 」機制來確認資產轉移的有效性。
「 欺詐證明 」意味著任何人在這段挑戰期(通常是7天或者更久)內,都可以通過默克爾樹校驗的方式來提交證明用戶資產的退出是不合法的。
但這帶來兩個問題:
(1)想要驗證這個提款的正確性需要有節點保存Layer2上的交易和狀態信息,因為Plasma只會提交其狀態轉移的結果,而想要提交欺詐證明必須有Layer2上的信息,這將大大提升 驗證者 這一角色的成本。
(2)是所謂的 「 數據不可用」,他的意思是Plasma不會將其鏈上發生的交易數據發給主鏈進行存儲,主鏈的節點無法獲取到這些交易數據,無法通過主鏈本身的安全性為其做驗證。當然有些解決方案會把這些數據提交到中心化存儲或者IPFS上,但這對主鏈來說沒有任何意義,因為用戶使用Layer2的基礎是信任主鏈本身的安全性。
三:Rollup
我們可以看到Plasma一個很重要的問題是他的 “數據不可用”,主鏈只會收到Operator提交的狀態轉移結果,其只能期待有人存儲了鏈下的的交易和狀態信息,通過欺詐證明機制來確保子鏈的提交真實性,它在這個過程中只承擔了確認者的角色,其安全級別是較差的。
1.具體理解“數據不可用”
以太坊將其鏈上發生的所有數據都公開,所有人都可以查詢。但Plasma不會提交這些交易數據到主鏈上,而只提交執行結果,因此其效率上的提升是很高的,但是這樣做的代價是Plasma無法建立和以太坊主鏈同一級別的信任。
Rollup實際上可以算是原始主鏈處理方式和Plasma方式的折中,其會將數據提交給主鏈,但他會最大限度通過聰明的編碼方式壓縮這些數據,同時基于Rollup本身的特性適當刪除和縮減一部分數據,只要保證最終的提交能夠供任何人驗證即可。
交易數據上鏈后,任何人都可以根據這個數據來校驗Rollup提交的結果是否正確。因此,Rollup的安全性要比Plasma高。
總結一下,Rollup的核心優勢是所謂的“數據可用性”,它會將數據提交給主鏈,這大大加強了安全性。
那么究竟Rollup是如何實現的呢?
2.原理
(1) State Root:首先Rollup在主鏈上擁有一個(或者一系列相互關聯的)合約:
這個合約用來維護Rollup層中的狀態記錄,這個狀態記錄實際上是一棵默克爾樹的根節點存儲的哈希值,這個哈希值被稱為state root。
而這顆默克爾樹的葉子節點是Rollup中的賬戶狀態信息。如果你不知道什么是默克爾樹,以下是一個簡單的例子:
可以看到這是一顆二叉樹,在二叉樹的葉子節點上記錄著當前rollup層賬戶的狀態信息。
對于每兩個狀態信息(例如State 1/State 2),我們可以根據某種哈希公式計算出一個唯一的哈希值(eg: Hash(1,2) )來作為這兩個葉子節點的父親節點,依次一層一層往上類推,最終得到一個哈希值存儲在根節點中:
你不需要知道怎樣計算哈希值,你只需要記住幾件事情。
1 任意一個葉子結點的改變都會導致根節點的值變化(任何一個狀態的變化都會導致Root hash發生變化)
2 如果兩棵樹的根哈希值相同,那說明他們的葉子結點存儲的信息完全一致(因此只需要對比兩個根節點哈希值就可以確認底層狀態信息的一致性)
3 根據根節點的哈希值和指向某一個狀態信息的路徑,我們可以確認某一個狀態信息存在于這顆哈希樹中。
(2)Batch:通過 state root 我們可以得出一個賬戶狀態的key-value map:
任天堂總裁:對NFT和元宇宙感興趣,要找出自己的探索方式:2月5日消息,游戲巨頭任天堂近日公布最新財務業績,任天堂總裁Shuntaro Furukawa被問及該公司對元宇宙和 NFT的立場時表示元宇宙和NFT具有“巨大的潛力”,他說:“元宇宙正在吸引全球許多公司的關注,我們相信它具有巨大的潛力。當媒體提到元宇宙時,有時會引用我們《動物之森》等游戲作為例子,從這個意義上說,我們對它很感興趣”。Furukawa表示任天堂還沒有準備好開始探索這種模型,認為該公司需要找出自己探索元宇宙的方法。他解釋道:“很難定義虛擬世界可以為客戶提供什么樣的驚喜和樂趣,作為一家提供娛樂服務公司,我們必須考慮如何提供更新鮮的驚喜和樂趣。如果我們能找到一種方法,以一種易于理解的方式向許多人傳達我們的‘任天堂方法’,我們或許可以考慮一些事情,但我們不認為是現在”。截至2021年12月31日,任天堂Switch主機銷量突破1億354萬臺,游戲軟件銷量突破7億6641萬份;第三財季營業利潤為2526億日元 (約合22億美元),高于市場預期。[2022/2/5 9:32:26]
其中key是賬戶地址,value則包含余額/Nonce/合約代碼/存儲(對于合約賬戶)等狀態信息
當rollup上發生交易的時候,很顯然的,這些賬戶的狀態會發生改變,由此產生新的state root。
雖然這樣可以非常準確和及時的反饋Rollup上最新的狀態變化,但是如果每發生一筆交易就在主鏈更新一次state root,產生的成本反而會比將這些交易在Layer1上執行更高。
所以為了解決這個問題,rollup中產生的交易將被按批次打包匯總,同時根據這批交易全部執行完成后的狀態,會產生一個新的state root。無論是誰將交易打包提交給主鏈上的智能合約,他都需要計算這個新的state root,并將其和上一個state root以及交易數據一并提交。
這一部分的打包被稱為一個”batch”,提交者將batch提交給Rollup contract之后,主鏈會去驗證新的state root是否正確,如果通過驗證,則將state root更新為最新提交的state root,并最終完成一次rollup內的狀態轉移確認。
(3)Rollup的實質 :以下是一個簡化版本的Optimstic Rollup流程,可以看到和Plasma的最大的區別其實在于新增了交易數據的提交。
所以,Rollup的實質是將一大筆實際產生的交易匯總成一筆主鏈上的交易,這些交易由Rollup鏈來執行和計算,但會將數據提交給主鏈,同時由主鏈扮演一個“最高法院法官”的角色最終確認這些交易。由此我們利用了主鏈的共識和安全性,同時提升了實際上的交易效率,降低了交易成本。
3:疑惑
? 看完以上的描述你可能會有一些問題,別擔心,我們會一步一步進行推演和解釋。
(1)如果提交全量交易數據,還是很難擴容吧?前文說的數據壓縮是解決這個問題的嘛?怎么做的?
這兩種技術方案能夠做到擴容,核心都是交易的壓縮和打包。這是因為以太坊的區塊 gas limit 是有上限的, 壓縮后的交易越小,一次能提交給主鏈的交易就越多。那么如何做到這一點呢?
以下是Vitalik在其文章中描述的一種壓縮模式,作為例子幫我們理解
以太坊主鏈上一筆簡單的交易(比如發送 ETH)通常消耗約 110 字節。然而,在 Rollup 上發送 ETH 可以縮減到約 12 字節。
達到這樣的壓縮效果,一方面是采用了更簡單高級編碼,而目前 Ethereum 的 RLP 在每個值的長度上都浪費了 1 字節。另一方面,還有一些巧妙的壓縮技巧:
Nonce:在 rollup 中可以完全省略 nonce
Gasprice:我們可以允許用戶使用固定范圍的 gasprices 進行支付,例如 2 的 16 次冪等
Gas:我們同樣也可以將 gas 設置為 2 的多次冪。另外,我們也可以在 batch 層面設置 gas 限制。
To:可以通過默克爾樹上的索引來標識地址
Value:我們可以用科學計數法存儲 value。在大多數情況下,轉賬僅需 1 ~ 3 有效位。
Signature:我們可以使用 BLS 聚合簽名,將多個簽名整合為一個
這些壓縮技巧是 rollup 擴容的關鍵,如果我們不對交易數據進行壓縮,rollup 或許只能在主鏈的基礎上的有大約 10 倍的提升效率,但有了這些壓縮技巧,我們才能做到50倍 100倍甚至更高的壓縮效率。
俄羅斯主要銀行Tinkoff正在探索加密貨幣投資服務:10月29日消息,俄羅斯主要私人銀行Tinkoff的在線經紀公司Tinkoff Investments正在研究加密貨幣投資服務,盡管俄羅斯央行阻止該銀行推出此類工具。Tinkoff Investments負責人Dmitry Panchenko稱,該銀行的經紀門戶網站正在考慮與加密貨幣投資相關項目,但現在討論具體想法還為時過早。Panchenko在10月28日接受當地新聞機構塔斯社采訪時表示,該公司目前正致力于開展一系列加密相關服務的研發計劃。Tinkoff Investments特別關注國際支付巨頭PayPal等公司的加密產品,以及Revolut和Robinhood等加密友好應用。Panchenko強調,盡管當地監管機構尚未允許Tinkoff Investments等公司提供加密投資服務,但俄羅斯人仍在外國平臺上積極交易加密貨幣,在交易所擁有價值超過150億美元的加密貨幣資產。(Cointelegraph)[2021/10/29 6:20:17]
與此同時,為了節省gas,這些被壓縮過的交易數據會被放入calldata參數中存儲。著名的EIP-4488,提出calldata中每一字節數據gas消耗降低,就是為了進一步優化一筆主鏈交易能夠承載的roll層交易數據量。對于具體的壓縮效果,我們會在下面對于兩種不同的ZK-Rollup進行對比時展示簡單的數據。
(2)怎么來驗證提交的可供驗證的信息是正確的?
既然最終的狀態轉換確認(也代表著交易的確認)由state root的更新決定,但是目前看起來Rollup上的提交者可以隨意提交他想要的交易數據和state root,那么怎么來驗證他提交的這些信息是正確的呢?
對于這一問題,大體上有兩種解決方案,而根據解決方案的不同,rollup也被分成了兩類:
4:Optimistic Rollup
正和它的名字一樣,這種解決方案選擇樂觀的相信提交者提交的batch是正確的,除非有人通過一個欺詐證明來證明提交者是其實是一個壞蛋,他提交了一個錯誤的batch。
(1)以下是一個欺詐證明構建的簡單例子(再次感謝Vitalik):
提交一個欺詐證明來證明某個提交的batch是錯誤的,需要下圖的綠色部分包括的信息:
1.提交者提交的batch
2.上一個state root代表的默克爾樹(實際上代表了真實的賬戶狀態信息)的一部分,根據這一部分能夠構建完整的默克爾樹
基于第二部分構建的默克爾樹,我們模擬執行batch中提交的交易,從而得到了新的賬戶狀態,得到新的默克爾樹,得到新的state root。
將上一步得到的state root和batch中的state root進行比對從而驗證batch中的是否正確
(2)驗證過程
我們從邏輯上梳理了Optimstic確保state root真實性的過程,實際上,為了確保能夠威懾提交者不作惡,提交者往往需要質押資金,當他的提交被驗證為錯誤時,一部分質押資金將會被扣除作為懲罰。同時,提交了相應欺詐證明的驗證者在某些解決方案中會得到被扣除的資金,以此來激勵監測和提交欺詐證明的行為。
如果我們將OR和Plasma進行比對,我們會發現一些相似性,例如他們都使用了欺詐證明機制,需要有一個驗證者的角色來監測OR給主鏈的提交。但由于OR同時向主鏈提交了交易數據,所以OR上的驗證者不需要在自己去保存記錄OR上的交易,作為對比,再將前文的簡單架構圖放在這里以供讀者對比:
5:ZK-Rollup
(1)Zk-rollup的核心
另一類解決方案是ZK Rollup,與OR(Optimistic Rollup)不同,ZK Rollup做了這樣的根本假設:
不相信提交者能主動提交正確的batch,或者說類似法律學中的“有罪推定”。提交者在提交batch時除了交易數據以及post/previous state root 之外,還要攜帶一個ZK-SNARK證明。
ZK-SNARK本質上是一個“有效性證明”,他可以直接用來被驗證所提交的batch是正確的。這個證明被提交到Rollup合約之后,任何人都可以使用它來驗證Rollup層中特定批次的交易,而,這意味著rollup不再需要在提交后再等待7-14天來做驗證。
(2)有效性證明和欺詐證明的區別
那么如何通俗的理解ZK-Rollup這樣的“有效性證明”和Plasma/Optimsitic Rollup使用的“欺詐性證明”之間的區別呢?
首先這三種方案都需要有人來做Layer2上交易的排序,執行和打包,我們姑且稱這個角色為“執行者”。
Plasma的執行者只會提交執行結果,秉承著其他人愛信不信的原則,你如果不信任我就需要發起挑戰,而發起挑戰需要你自己保存底層的交易數據。
聲音 | 互金協會楊農:金融科技要積極探索動態監管、監管沙盒、負面清單等新技術:中國互聯網金融協會副秘書長楊農出席變革與夢想·2019鳳凰網財經高峰論壇”時表示,全部的金融業務都是金融科技的應用場景,要理性地看待金融科技熱,金融監管既要強化也要科學。他進一步表示,要想準確地理解諸如區塊鏈和數字貨幣這樣現代的金融技術,如果沒有學習過密碼學,沒有學習過數據庫技術和具備相應的計算機、系統管理方面的知識,要想準確地理解和把握實際上是相當困難的。楊農還表示,對于涉及到國家重大金融安全、投資人利益和消費者權益保護等方面,必須要實施最嚴格的監管。但是對于一般性的金融產品和服務,應該提倡實施科學、有效、合理的監管,同時要避免因為監管動作自身不當誘發風險事件的發生。要創新監管技術,在堅持“凡是金融活動都應納入監管”的總體原則下,要積極地探索動態監管、監管沙盒、負面清單等新技術,穩步提升監管的水平。
楊農還表示,中國互聯網金融協會正在推動區塊鏈技術的相關應用以及金融機構的數字化轉型,正在組織建設中國供應鏈金融數字信息服務平臺和中國數字金融綜合服務平臺,正在試點推動全國金融機構的移動APP備案管理等相關工作。明年針對以上工作的一系列業務規范和技術標準將會陸續出臺。[2019/12/1]
OR也是一樣,但是執行者在提交的同時會把交易數據也放上來,同樣是愛信不信,你如果不信就自己根據這個交易數據去驗證就完了。
但ZK不一樣,ZK說我不想等你好幾天讓你來挑戰我,那多浪費時間啊,我趕著確認我的交易呢。于是ZK直接在提交的時候生成一個證明,把這個證明也放上去,在提交的同時完成驗證。
與此同時,Plasma/OR都需要通過質押的方式來確保執行者作惡是有損失的,而ZK不用,因為它不需要別人相信它,每次提交他都會自證清白。
除了這方面的區別外,另一個有意義的地方在于,ZK-SNARK可以讓我們在不提交全部交易數據的情況下證明這批交易的有效性,這對于Rollup來說是很重要的,在下面我們會解釋這一點。
(3)ZK-Rollup的實現邏輯
首先ZK-Rollup本質上還是一種Rollup解決方案,因此其仍然需要做以下兩件事情:
打包壓縮一個批次的交易數據
生成新的state root
唯一不同的是驗證方式,ZK-Rollup不會等待驗證者發起欺詐證明流程,而是直接生成一個ZK-SNARK 證明并添加到Batch里提交給主鏈rollup合約。
如圖示,提交的內容相比OR來說 增加了一個ZK-Proof,同時驗證人這一角色被隱去了。
提交到rollup合約之后任何人都可以進行驗證,驗證成功后主鏈rollup合約會將State root更新為提交的最新數據。
(4)如何生成一個ZK-SNARK 有效性證明?
A 什么是ZK-SNARK?
ZK-SNARK的全稱是“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge.”
簡潔非交互零知識證明。我會盡量解釋其中每一部分的意思:
Succint(簡明):與實際證明的數據量相比,這種方法生成的證明要小很多。
例如我們要證明一系列交易確實存在并發生,所生成的證明數據量必須要小于這些交易本身的數據量。
Non-interactive (無交互): 在證明構建完成后,證明者只需要向驗證者發一次簡單的消息,而且通常情況下允許任何人無需許可的驗證。
這對于ZK-Rollup或者區塊鏈上的ZK應用是很重要的,因為有一些ZK證明需要證明人和驗證人之間多次交互(猜顏色問題是一個典型的例子),放在鏈上則意味著要發起多筆交易,這在成本上是不可容忍的。
Arguments:可以抵抗計算能力有限的證明者的攻擊
這一部分意味著生成證明使用的加密算法復雜度在現有的算力條件下,無法以可接受的時間和經濟成本被暴力破解。
of Knowledge:在不知曉要證明的是什么的情況下 不可能構建一個證明
這對于ZK-Rollup來說也是很重要的,因為我們不能允許有人能夠根據非交易數據創建一個ZK Proof 提交給主鏈合約。
最后,也是最重要的“Zero-Knowledge”:
零知識意味著在證明人向驗證者證明某個論斷(Statement)時,不透露任何有用的或和所證明的實體本身有關的任何信息。
B 一個最簡單的零知識證明例子是這樣的
Alice想向Bob證明知道某個保險箱的密碼,密碼是打開保險箱的唯一方式,但她不想告訴Bob保險箱的密碼,怎么辦呢?
正好Bob知道保險箱里有一副Bob前女友寫給他的情書,上面有Bob和前女友共同的指紋。
電子游戲發行商Ubisoft正在探索區塊鏈使用案例:法國電子游戲發行商Ubisoft正在探索區塊鏈在其戰略創新實驗室中的潛在應用,該實驗室專注于研究新興技術及其使用案例。實驗室總監Lidwine Sauer表示,育碧對于用區塊鏈技術提供數字產品獨有權的能力特別感興趣。該技術提供了一個機會,你可以擁有真正的數字收藏品,任何人都無法復制它們,并可百分百歸個人所有。他進一步形容道:“多虧了區塊鏈,我們現在可以擁有相當于數字畢加索的東西,它的優勢在于,在區塊鏈上偷東西要比偷畢加索的東西難得多。”育碧成立于1986年,是2008年歐洲第三大獨立游戲開發商,也是北美第四大獨立出版商。[2018/2/24]
于是Alice背著Bob打開了保險箱,拿出了這封情書給了Bob。
由此證明了Alice知道保險箱的密碼,同時Alice并沒有告訴Bob密碼是什么,成功!
C 如何為ZK-Rollup生成一個ZK-SNARK證明?
簡要的說,生成一個ZK-SNARK證明分為以下幾步:
確定問題在邏輯上的驗證規則(例如檢查balance,nonce是否符合要求等)
將邏輯上的驗證規則轉化為門電路Circle問題
將門電路Circle問題轉化為R1CS(rank-1 constraint system,一階約束系統)形式
將R1CS轉化為QAP (Quadratic Arithmetic Program)?
經過以上轉換,我們就可以根據邏輯上的驗證規則得到一組可通過固定驗證方法驗證的ZK-SNARK證明。具體的轉換過程可以看這篇文章:
https://mp.weixin.qq.com/s/M1ZAXPSPqO8KpE3VyExwTw
如果你覺得這一部分的復雜程度超過了之前的每一部分,你是對的。同樣覺得復雜的還有目前的ZK-Rollup解決方案提供商,這也是為什么目前ZK-Rollup研發進度和實際應用要比Optimstic Rollup慢的原因之一。如果你不是數學/密碼學專家,或者不是Matter Labs的開發者,你只需要知道以下幾件事情:
生成一個ZK-SNARK證明比驗證一棵默克爾樹需要花費的算力和時間成本都要高很多
并不是隨便一種語言,編譯環境,虛擬機,指令集都能夠無縫支持完成以上提到的過程,需要做額外的適配。
對于第一點,這是各大ZK解決方案提供商目前在努力的方向。首先是時間成本,如果生成一個可用的ZK-Proof需要一個小時,那么間接的用戶提款的時間也會變長。而計算成本包括兩部分,一部分是生成的ZK-Proof的數據量,另一部分是驗證這個Proof所需要花費的算力。這兩部分越大,在以太坊上需要消耗的Gas就越多,進而影響到ZK-Rollup的優化表現。
對于第二點,這是當前限制ZK-Rollup發展的一大原因。在EVM設計之初,開發者們完全沒有想到之后會用到ZK技術。因此為EVM操作生成可用的零知識證明是幾乎不可能的,由此催生了ZK-EVM的需求。
D 為什么兼容EVM對于ZK來說如此困難?
打開DeFillama,你會發現TVL排名前幾的Layer2解決方案清一色的都是OR,這是因為這些OR解決方案都已經有了自己的網絡,這些網絡都做到了EVM兼容,開發者可以無縫的將以太坊上的智能合約移植到他們的網絡上,用戶也可以在其網絡上做到swap,抵押,提供流動性等操作。
而ZK-Rollup目前還很難做到這一點,現有的很多解決方案只能夠支持簡單的支付和swap場景。
為什么如此呢,首先我們要明確一點,在 Layer 1 上,已部署智能合約的字節碼都存儲在以太坊 storage(存儲項)內。然后交易將在點對點網絡中傳播,對于每一筆交易,每個全節點需要加載對應的字節碼并在 EVM 上執行以獲得相同的狀態(交易將作為輸入數據)。
而在 Layer 2 上,智能合約的字節碼雖然同樣存儲在存儲項內,用戶的操作方式也相同。但是其交易將在鏈下發送至一個中心化的 zkEVM 節點,同時,zkEVM 不單需要執行字節碼,還必須生成一個Proof來表明交易達成后狀態已正確更新。最后,Layer 1 合約才能驗證該證明并更新狀態,而這時layer2上不需要重新執行交易。
也就是說在zk-Rollup上執行交易是完全不同的邏輯和路徑,與此同時zkEVM還有在執行交易的同時適配生成zk電路證明,而現有的EVM生成ZK-SNARK證明有以下幾個問題:
對ZK-SNARK所需要的部分橢圓曲線運算不支持
和傳統虛擬機相比,EVM有許多獨特的操作碼,這些操作碼對電路設計來說很困難
EVM 基于 256 位整數運行(就像大多數基于 32~64 位整數運行的普通虛擬機那樣),零知識證明則 “天然” 基于素域運行。
這些也只是在EVM中生成ZK Proof的部分問題,而OR雖然同樣需要構建虛擬機來執行EVM操作,但由于其只需要在執行交易的基礎上在完成交易打包等功能即可,所以構建起來要簡單的多。對于ZK-Rollup,除了在兼容EVM的同時生成ZK-Proof存在難度之外,在Layer1上驗證這個證明也并不容易。
如果你想了解更多關于ZK-EVM難度的更多信息,可以看這篇文章:https://hackmd.io/@yezhang/S1_KMMbGt
看完以上內容,不可否認的是zk-Rollup的實現有很高的技術難度,那為什么我們不直接使用更“簡單的”的Optimistic Rollup技術呢?
現在讓我們對這兩種Rollup技術做一個簡單的對比。
6:Optimstic VS ZK
(1)效率優化(TPS/交易費用)
以下是特定以太坊環境下,目前市場上幾種不同方案的費用和TPS對比:
來源:https://w3hitchhiker.mirror.xyz/7dwD76ZZIlR7ep731K6y9vTTuXGHOojxWSnkXKzqPzI
感謝@W3.Hitchhiker 團隊的貢獻!
圖上我們可以看到ZK方案要比OR方案的效率更高,為什么呢?
對于一個Rollup方案來說,最重要的是在一筆以太坊交易中能夠攜帶多少Layer2上交易的數據,而這和兩個參數有關:
Rollup壓縮的一筆交易的Gas消耗
以太坊區塊的max gas limit
其中Rollup可以解決的是第一點,雖然ZK-Rollup證明的存儲和驗證需要消耗一定的存儲空間和gas(一個可信的數據是在500K 左右)。但是由于在交易壓縮上做的更好,而交易數據的存儲消耗是Gas消耗的絕大部分,所以ZK-Rollup要比OR效率優化表現更好。
另外提一句,你可能注意到表中ZKPort的TPS和交易成本優化最好,這主要由于其使用的Validium本質上是一種將欺詐證明替換為ZK Proof的 Plasma 方案,它不會提交交易數據,其效率完全是由Plasma鏈的處理效率決定的,但是安全性上同樣面臨著數據不可用的問題。
上面的計算假設gas price為30 Gwei,而我們都知道以太坊活動大幅上升時,gas price會達到什么樣的水平。屆時Rollup尤其是ZK方案的成本優化效果會更加明顯。
(2)時間成本
我們之前說到過,因為欺詐證明機制,在Optimtisc Rollup上提款需要7-14天的提交期以供其他人來證偽潛在的作惡行為。
當然我們可以通過一些獨立于Rollup機制本身的行為來減少提款期,類似Boba Network等Optimstic Rollup解決方案提出的流動性池機制。
讓我們假設這樣一個場景:
Alice是OR用戶,在L2上擁有5ETH的資產。
在L1上又一個流動性池B,轉為ALice這樣的OR用戶提供流動性。
現在Alice想從OR上取回所有資產,現在他和B做了一筆交易:
Alice可以從Bob這里直接拿走5ETH,同時支付一定的手續費
7天后Alice的資產被解鎖,這時Alice拿走的5ETH回到池子里。
這對于流動性池來說有一定的風險,因此他可以通過監測OR合約,獲取不誠實提交的罰金來對沖風險,同時收取的手續費也是降低風險的儲備。
但是這種方式不適用于NFT,因為NFT不可分割,而且流動性池無法簡單的復制一個NFT給用戶。
而ZK-Rollup并不存在這一問題,提交者在提交時必須自證清白,提供可供驗證的ZK-SNARK證明,目前的ZK-SNARK證明生成時間已經可以達到幾分鐘。用戶只需要等待下一個batch提交并被驗證即可。
時間成本是OR的硬傷,也是ZK-Rollup的顯著優勢之一。
(3)可適配性
Optimsitic和ZK 都面臨著需要兼容適配復雜EVM合約調用操作的問題,但顯然Optimstic實現起來更容易。
包括Arbiturm,Optimsim在內的OR解決方案都擁有EVM兼容的虛擬機,允許其能夠處理在以太坊主鏈上發生的所有事務。一些OG級別的DeFi協議如Uniswap/Synthetix/Curve等也都已經在OR 網絡上部署。
而構造兼容EVM的ZK-SNARK證明難度很大,以至于目前為止都沒有能夠公開使用的ZK-Rollup解決方案。不過我們在最近有一些好消息,zkSync 2.0公共測試網在二月底正式上線,這也是以太坊測試網上首個兼容 EVM 的 ZK Rollup。或許ZK Rollup的正式大規模實際使用要比我們想象的要快一些。
(4)安全性
這個問題的答案是顯而易見的,OR 的安全性來自于經濟學。為了能夠良好的運轉,OR必須設計合理的激勵機制驅使一批主鏈上的驗證人隨時監測提交者,并準備提交欺詐證明。而對于提交者,其也需要通過質押等方式確保節點作惡會付出相應的代價。
而ZK的安全性來自于數學或者密碼學,正如區塊鏈中建立信任的一大基礎:代碼不會作惡一樣。數學和密碼學提供的保障要遠比樂觀的相信人性不會作惡來的穩。
當然,當前的Rollup機制本身也存在一定的安全問題,雖然rollup將數據提交到主鏈解決了數據可用性問題。但是我們還沒有討論過到底誰來負責交易的處理,排序,壓縮,打包和提交。當前一些主流解決方案,如 Arbitrum、Optimism 和 StarkNet,使用一個叫sequencer的角色, 是它們自己運行的單個節點。這種方式帶來的結果是高度的中心化。
我們知道去中心化是一切安全的前提,這種sequencer模式好處在于效率高,在rollup還在摸索階段時可以進行快速的迭代,這些解決方案也聲明了要在未來逐步進行sequencer的去中心化過程。例如使用PoS或dPoS方式進行sequencer節點的選舉等,像Metis這樣新的解決方案已經進行了一些探索。
(5)總結
讓我們根據一個表格來具像化上面的討論:
總體而言,OR在現階段是更成熟的解決方案,事實上也是如此,目前Optimstic和Arbiturm的產品已經可供以太坊開發人員使用。但是由于使用欺詐證明機制,其提款時間和安全性目前來看值得商榷,同時其成本優化相比ZK也略遜一籌。
而ZK Rollup的弱點基本都屬于技術問題,隨著大量優秀的開發人員投入到相關研究,包括Vitalik在內的大多數人都認同ZK Rollup在未來會是更優秀的擴容方案。
7:Rollup是完美的嗎?
經過以上對于三類Layer2方案的闡述,相信你已經對他們有了一定的認知。事實上文章撰寫的順序也是開發者們對于Layer2擴容方案研究的順序,往往是發現某一種解決方案存在的問題之后,另一種更好的解決方案被提出用來解決相關問題。不僅在加密研究領域如此,這一流程可以被推及到所有工程類的問題上:
提出想法,測試,迭代,優化,直到找到最可行的解決方案。
現在看上去Rollup就是我們想找的那個答案,他解決了普適性的問題,解決了數據可用性的問題,同時在安全性和效率上看起來也不錯。那么,它是完美無缺的那一個嗎?
答案是否定的,任何方案都不能做到完美無缺,Rollup同樣存在著許多問題,即使是看上去更好的ZK-rollup,也無法避免它們。
(1)效率優化存在天花板:
當我們說到rollup和plasma的主要區別時,我們談到為了保證數據可用性。rollup需要將交易數據提交給主鏈,這是rollup方案戰勝plasma的主要原因。
但我們要看到另一方面,交易上鏈意味著rollup仍會收到以太坊主鏈容量的限制:
簡單算一筆賬:
當前以太坊區塊 max gas limit:12.5M gas
每字節存儲在鏈上的數據成本:16 gas
每個塊的最大字節數:~781,000 bytes (12500000/16)
Rollup進行 一次ETH 轉賬所需的數據量:12 bytes(可見上節gas成本)
每個區塊能承載的交易:~65,000(781,000 bytes/ 12 bytes)
以太坊的平均出塊時間:13 秒
TPS:~5000(65,000 tx/13 s)
在這里我們做了很多的假設,例如我們假設所有交易都是簡單的ETH轉賬。而實際的交易會包含很多的復雜合約調用,消耗的gas要更高。而且對于ZK-Rollup 我們還需要算上驗證ZK-Proof的成本(一半在500K gas左右) 。
即使如此Rollup所能達到的TPS也只有5000左右,我們也在上面看到使用Plasma機制帶來的直接效率優化要比Rollup高很多。
以太坊基金會也很清楚這個問題,目前它們主推的方案是分片+rollup,這將使得rollup帶來的TPS提升再上一個數量級。
(2)流動性的割裂:
在當前多鏈格局的影響下,本身的流動性割裂情況已經日趨嚴重。
而由于目前多種技術方案,多家解決方案提供上的存在,未來的rollup網絡的數量只會不斷增長,由此帶來了更嚴重的流動性割裂情況。
當前以太坊及其layer2網絡TVL一覽
好消息是跨鏈通信可以解決這一問題,代表性的事件是Synthetix已經在著手將其在以太坊主鏈和Optimism上的債務池進行合并。如果這一過程順利且絲滑的完成,相信會對主鏈和子鏈上的流動性合并趨勢有一定的推進。
畢竟合成資產項目的債務池模型遠比目前更常見的流動性池模型復雜,可以預見Uniswap等主流DeFi項目延續這一進程。
(3)通信難題和技術障礙帶來的可組合性降低:
上一個問題中我們談到了通信問題使得流動性發生了割裂,這一現象同樣適用于主鏈dapp和子鏈dapp之間的交互,在以太坊上構建的每個新協議都像樂高積木一樣,其他協議可以輕松地在其上構建,這也是DeFi 發展迅速的原因之一。
如果無法解決通信問題,那么子鏈上的dapp需要重新建立自己的生態,這就造成了更大的資源浪費。不僅是子鏈和主鏈之間,子鏈和子鏈之間也需要構建通信機制。
Again,一些優秀的開發者也正在解決這方面的問題,讓我們希望他們能夠簡化這些操作和流程。畢竟Layer1本身的操作已經夠繁瑣了,如果再加上layer2的復雜度,這將使Web3世界的門檻更高。
(4)中心化風險
我們在上文提到當前各類Rollup解決方案中,負責執行,排序,壓縮和打包交易的sequencer目前都是一個較為中心化的角色。Rollup若想進一步的提升安全性,必須要著手解決當然的中心化問題。
結語
全文寫完已經超過一萬字,遠遠超出了我的預期。以太坊的擴容本身是一個很宏大,很復雜的主題。而本文中只涉及到了Layer2解決方案的一部分。Layer1的擴容解決方案(分片),以及其他Layer2方案如Side Chain,Validium 等都沒有提及。事實上以太坊的擴容并不是某一個單一方案能夠一勞永逸解決的。很多解決方案提供商也都在多條路徑上進行著探索,像Polygon這樣的公司更是投資了一大批不同類型的Layer2方案。
同時文中很多東西限于篇幅原因還有待挖掘,比如Layer2和Layer1之間的提交需要的通信支持是怎么樣的。欺詐證明/有效性證明在Layer1上都是如何具體實現的,各家ZK/OR實現方案之間的具體區別等。理解這些事情對于想要深入了解Layer2尤其是Rollup擴容的研究者來說都是相當重要的。文章中的某些概念為了便于理解和梳理,我們做了比較籠統的概括,例如OR/ZK在交易數據壓縮方面解決方案有很大的不同等,文中使用的vitalik的例子更偏向ZK的解決方案。在寫作的過程當中我們也參考了一些優秀的Layer2內容,在文中和文末我們都做了標記,我們也希望有更多更優秀的內容能夠出現,幫助大家進一步建立相關的認知。
最后,單就我們介紹的Rollup兩種方案來看,Optimstic Rollup目前已經占據市場先機,上線可用產品的同時逐步吸引主流Dapp融入生態,不可否認相關開發者的偉大貢獻。但是從長遠來看ZK Rollup + 分片是我們更應該期待的未來。
參考文獻:
1.An Incomplete Guide to Rollups (Vitalik)
https://vitalik.ca/general/2021/01/05/rollup.html
2.W3hitchhiker 團隊對四種Layer2解決方案的成本對比
https://w3hitchhiker.mirror.xyz/7dwD76ZZIlR7ep731K6y9vTTuXGHOojxWSnkXKzqPzI
3. Scorll Tech 對于zkEVM實現的解讀
https://hackmd.io/@yezhang/S1_KMMbGt
研究機構:Seer Labs
作者:Luka
Tags:ROLLROL以太坊LAYERroll幣能出泰沙拉克嗎Roller Inuehash幣持倉挖以太坊Relayer Network
“把兩會搬到元宇宙上開。”這是筆者在今年兩會期間聽到的一個比較前沿的觀點。事實上,兩會一直是新技術的舞臺.
1900/1/1 0:00:00“漢室傾頹,奸臣竊命,主上蒙塵。孤不度德量力,欲信大義于天下,而智術淺短,遂用猖蹶,至于今日。然志猶未已,君謂計將安出?”《隆中對》契機:教科書級的 EVMOS 空投、代幣分配和 CLAIM 方.
1900/1/1 0:00:00原文:Ruth Levi Lotan《The post-consortia era: How enterprises are embracing Web3 structures》盡管支持區塊鏈的.
1900/1/1 0:00:00穩定幣是基于區塊鏈的法定貨幣版本,這意味著它們是可編程的,并且可以與基于區塊鏈的應用程序和智能合約進行交互.
1900/1/1 0:00:00以往,談及區塊鏈,我們通常會想當然地將它與數字貨幣聯系在一起。似乎,數字貨幣,必然是區塊鏈的唯一歸宿。但凡是脫離了數字貨幣去談區塊鏈的做法,都是大逆不道的.
1900/1/1 0:00:001425年左右,佛羅倫薩藝術家Masaccio以單點透視法繪制了第一批主要作品。這一突破為日后的藝術家們延展了創作范圍.
1900/1/1 0:00:00