以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

一文了解以太坊的擴容之路_ROL

Author:

Time:1900/1/1 0:00:00

無論你是不是區塊鏈技術方面的專家,只要你待在Crypto的世界里夠久。以太坊擴容,layer2,Rollup這些詞語對于你來說都不會陌生。很多人都對這些概念中的一個或多個有所了解,但是他們之間的關系到底是怎樣的?我們為什么需要這些技術?他們想要解決什么樣的問題?

如果你想要知道以上問題的答案,那希望這篇文章會對你有所幫助:

本文中的所有內容都是邏輯上的梳理,不會涉及密碼學/計算機科學方面的知識,所以相信只要你對以太坊本身熟悉,基本都可以理解。

自從CryotoKitty造成以太坊鏈上擁堵的那天開始,以太坊開發者們就在不停的探索提高以太坊吞吐量的方案。

從原理上可以分為兩類

是對以太坊區塊本身進行改造,我們姑且稱之為Layer1方案,這里的主要解決方案是分片。

是改變我們使用以太坊的方式,將交易的執行和處理放在鏈下,以太坊本身只用來校驗其交易有效性,提供安全性。這就是我們經常聽到的Layer2。

Layer2的核心思想是將大批實際發生的交易放在鏈下執行和計算,再將其通過以太坊上極少量的交易進行交易最終有效性的驗證。無論是State Channel,Plasma還是Rollup,實際上都遵循了這一原則。

現在談起Layer2,很多人第一反應都是將其與Optimistic/ZK Rollup掛鉤,但在這里我們先簡單介紹一下狀態通道和Plasma,這有助于我們理解為何Rollup最終勝出,成為當前我們談論最多的Layer2解決方案:

以下是一個狀態通道的最原始結構:

狀態通道是一種已經存在很久的區塊鏈擴展方案,他最出名的應用是比特幣的閃電網絡。

舉例說明

相比描述他的原理,一個例子更能夠說清楚什么是狀態通道:

你很喜歡樓下的一家理發店,每次去理發店的時候Tony老師都會在你的耳邊一直讓你辦卡。

有一天你終于決定了,辦卡就辦卡吧,反正我以后還會來。于是你向理發店轉賬一千元辦了一張卡。

以后每次去理發,你都不需要再向理發店轉賬,取而代之的是你的卡里的余額會被扣除,同時每次理發你都和理發店完成了一次實際上的交易。

過了一個月,你要搬家了,可是你卡里的錢還沒用完。于是你向理發店申請退卡,理發店的Tony老師退給了你200元。

在這一個月的時間里,你在理發店消費了十幾次,但你和理發店實際上只互相轉賬了兩次。

將這個過程放在區塊鏈上,你買卡的過程實際上是將錢存進了某個智能合約,同時開啟了一個你與理發店間的狀態通道。你退卡的過程關閉了你與理發店之間的“狀態通道”。你和理發店之間的互相轉賬相當于在以太坊主鏈上的兩筆交易。

設想一下你沒有辦卡,那每次理完頭你都需要給理發店轉一次帳。

通過這個例子我們發現,通過狀態通道,只有第一步和最后一步需要我們在區塊鏈上進行交易,在這些步驟之間,你 和 理發店 可以向對方發送無限數量的簽名消息(完成一次消費),指示付款。在這種情況下,以太坊區塊鏈僅用作結算層來處理一次性付款的最終交易,這大大減輕了底層區塊鏈的負擔。

應用場景

狀態通道在某些簡單場景如流支付中能夠發揮很大的作用,其通過在鏈下對消息簽名的方式對交易數據進行記錄,將大量在邏輯上發生了的交易簡化成了主鏈上的兩筆交易。

(2)狀態通道因為其成本較低,很適合一些微支付的場景,比如用ETH或者BTC買早餐咖啡等。

局限性

但同時,狀態通道需要資金的發送方和接受方都進入這個通道來,而為了維護狀態通道,支持比流支付更復雜的操作,大筆的資金需要被鎖定。因此開發者們很快意識到狀態通道無法作為可選的擴容方案之一。

原理

現在我們都知道了狀態通道的局限性,而為了解決這個問題。——Plasma應運而生 其解決了將資產發送給任意目標人的問題,同時也能夠確保TPS的提升。 事實上在開發者們研究Layer2解決方案的開始很長一段時間里,Plasma一度被認為就是那 “一個”。

要理解Plasma,首先要明白它并不是一種實際的技術,它更像是一種設計思想或者技術架構。

Plasma通常是一條鏈,它可以擁有與主鏈不同的共識機制,也可以擁有自己的礦工。但最重要的是Plasma鏈上會有一個叫做“Operator”的角色定期的根據子鏈上的狀態轉換,生成一棵默克爾樹,并將這棵默克爾樹的樹根哈希值提交給主鏈做驗證和記錄。關于為什么默克爾樹和其樹根哈希值能夠用作狀態轉換的驗證,我們會在同樣使用了這一應用的Rollup中講到。

通過這樣的方式,無論在兩次提交期間,子鏈上發生了多少筆交易,子鏈只需要將交易執行造成的狀態信息提交到主鏈上即可。

WOOFi推出由Arbitrum和LayerZero提供支持的跨鏈質押:5月25日消息,WOOFi Stake 2.0 通過與 LayerZero 的跨鏈消息技術集成改進了該模型。現在用戶可以將 WOO 押在兩條新的受支持鏈上,包括 Ethereum 和 Optimism,但獎勵將合并并可在 Arbitrum 上領取,從而簡化多鏈用戶體驗。WOO 代幣現在可以跨七個鏈進行質押,以通過 WOOFi swap費在 Arbitrum 上賺取 USDC。[2023/5/25 10:39:49]

以下是使用Plasma機制的簡單示意圖:

用戶想要進入Plasma鏈需要在以太坊主鏈上做資產的映射,而當其需要將Plasma鏈上的資產轉移或主鏈上時,需要經歷一段時間的挑戰期來供其他人使用「 欺詐證明 」機制來確認資產轉移的有效性。

「 欺詐證明 」意味著任何人在這段挑戰期(通常是7天或者更久)內,都可以通過默克爾樹校驗的方式來提交證明用戶資產的退出是不合法的。

問題

但這帶來兩個問題:

(1)想要驗證這個提款的正確性需要有節點保存Layer2上的交易和狀態信息,因為Plasma只會提交其狀態轉移的結果,而想要提交欺詐證明必須有Layer2上的信息,這將大大提升 驗證者 這一角色的成本。

是所謂的 「 數據不可用」,他的意思是Plasma不會將其鏈上發生的交易數據發給主鏈進行存儲,主鏈的節點無法獲取到這些交易數據,無法通過主鏈本身的安全性為其做驗證。當然有些解決方案會把這些數據提交到中心化存儲或者IPFS上,但這對主鏈來說沒有任何意義,因為用戶使用Layer2的基礎是信任主鏈本身的安全性。

我們可以看到Plasma一個很重要的問題是他的 “數據不可用”,主鏈只會收到Operator提交的狀態轉移結果,其只能期待有人存儲了鏈下的的交易和狀態信息,通過欺詐證明機制來確保子鏈的提交真實性,它在這個過程中只承擔了確認者的角色,其安全級別是較差的。

具體理解“數據不可用”

以太坊將其鏈上發生的所有數據都公開,所有人都可以查詢。但Plasma不會提交這些交易數據到主鏈上,而只提交執行結果,因此其效率上的提升是很高的,但是這樣做的代價是Plasma無法建立和以太坊主鏈同一級別的信任。

Rollup實際上可以算是原始主鏈處理方式和Plasma方式的折中,其會將數據提交給主鏈,但他會最大限度通過聰明的編碼方式壓縮這些數據,同時基于Rollup本身的特性適當刪除和縮減一部分數據,只要保證最終的提交能夠供任何人驗證即可。

交易數據上鏈后,任何人都可以根據這個數據來校驗Rollup提交的結果是否正確。因此,Rollup的安全性要比Plasma高。

總結一下,Rollup的核心優勢是所謂的“數據可用性”,它會將數據提交給主鏈,這大大加強了安全性。

那么究竟Rollup是如何實現的呢?

State Root

首先Rollup在主鏈上擁有一個(或者一系列相互關聯的)合約:

這個合約用來維護Rollup層中的狀態記錄,這個狀態記錄實際上是一棵默克爾樹的根節點存儲的哈希值,這個哈希值被稱為state root。

而這顆默克爾樹的葉子節點是Rollup中的賬戶狀態信息。如果你不知道什么是默克爾樹,以下是一個簡單的例子:

可以看到這是一顆二叉樹,在二叉樹的葉子節點上記錄著當前rollup層賬戶的狀態信息。

對于每兩個狀態信息(例如State 1/State 2),我們可以根據某種哈希公式計算出一個唯一的哈希值(eg: Hash(1,2) )來作為這兩個葉子節點的父親節點,依次一層一層往上類推,最終得到一個哈希值存儲在根節點中:

你不需要知道怎樣計算哈希值,你只需要記住幾件事情。

任意一個葉子結點的改變都會導致根節點的值變化(任何一個狀態的變化都會導致Root hash發生變化)

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

根據根節點的哈希值和指向某一個狀態信息的路徑,我們可以確認某一個狀態信息存在于這顆哈希樹中。

Batch

通過 state root 我們可以得出一個賬戶狀態的key-value map:

Sui推出學術研究獎計劃,首輪將提供25萬美元支持:5月9日消息,Sui 正式推出學術研究獎計劃,Sui 基金會將為申請第一輪學術研究獎的個人 / 團隊提供 25 萬美元支持,并將在之后陸續推出更多輪次。提案方向包括分布式、去中心化和無需許可的計算機系統和機制;智能合約語言、工具和技術;協議和軟件的審計和驗證方面的技術等,申請按提交順序排序,每個季度公布一次。[2023/5/9 14:51:32]

其中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內的狀態轉移確認。

Rollup的實質

以下是一個簡化版本的Optimstic Rollup流程,可以看到和Plasma的最大的區別其實在于新增了交易數據的提交。

所以,Rollup的實質是將一大筆實際產生的交易匯總成一筆主鏈上的交易,這些交易由Rollup鏈來執行和計算,但會將數據提交給主鏈,同時由主鏈扮演一個“最高法院法官”的角色最終確認這些交易。由此我們利用了主鏈的共識和安全性,同時提升了實際上的交易效率,降低了交易成本。

疑惑

看完以上的描述你可能會有一些問題,別擔心,我們會一步一步進行推演和解釋。

如果提交全量交易數據,還是很難擴容吧?前文說的數據壓縮是解決這個問題的嘛?怎么做的?

這兩種技術方案能夠做到擴容,核心都是交易的壓縮和打包。這是因為以太坊的區塊 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倍甚至更高的壓縮效率。

與此同時,為了節省gas,這些被壓縮過的交易數據會被放入calldata參數中存儲。著名的EIP-4488,提出calldata中每一字節數據gas消耗降低,就是為了進一步優化一筆主鏈交易能夠承載的roll層交易數據量。對于具體的壓縮效果,我們會在下面對于兩種不同的ZK-Rollup進行對比時展示簡單的數據。

今日向Binance轉入519萬枚MATIC的巨鯨轉出了474萬枚ARB:金色財經報道,據推特用戶余燼監測,于今日早間向Binance轉入了 519 萬枚 MATIC 的巨鯨,從幣安轉出了 474 萬枚 ARB 和 3251 枚以太坊,并在 Uniswap V3 上提供了流動性。[2023/3/27 13:29:34]

怎么來驗證提交的可供驗證的信息是正確的?

既然最終的狀態轉換確認(也代表著交易的確認)由state root的更新決定,但是目前看起來Rollup上的提交者可以隨意提交他想要的交易數據和state root,那么怎么來驗證他提交的這些信息是正確的呢?

對于這一問題,大體上有兩種解決方案,而根據解決方案的不同,rollup也被分成了兩類:

Optimistic Rollup

正和它的名字一樣,這種解決方案選擇樂觀的相信提交者提交的batch是正確的,除非有人通過一個欺詐證明來證明提交者是其實是一個壞蛋,他提交了一個錯誤的batch。

(1)以下是一個欺詐證明構建的簡單例子(再次感謝Vitalik):

提交一個欺詐證明來證明某個提交的batch是錯誤的,需要下圖的綠色部分包括的信息:

上一個state root代表的默克爾樹(實際上代表了真實的賬戶狀態信息)的一部分,根據這一部分能夠構建完整的默克爾樹

基于第二部分構建的默克爾樹,我們模擬執行batch中提交的交易,從而得到了新的賬戶狀態,得到新的默克爾樹,得到新的state root。

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

驗證過程

我們從邏輯上梳理了Optimstic確保state root真實性的過程,實際上,為了確保能夠威懾提交者不作惡,提交者往往需要質押資金,當他的提交被驗證為錯誤時,一部分質押資金將會被扣除作為懲罰。同時,提交了相應欺詐證明的驗證者在某些解決方案中會得到被扣除的資金,以此來激勵監測和提交欺詐證明的行為。

如果我們將OR和Plasma進行比對,我們會發現一些相似性,例如他們都使用了欺詐證明機制,需要有一個驗證者的角色來監測OR給主鏈的提交。但由于OR同時向主鏈提交了交易數據,所以OR上的驗證者不需要在自己去保存記錄OR上的交易,作為對比,再將前文的簡單架構圖放在這里以供讀者對比:

ZK-Rollup

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天來做驗證。

有效性證明和欺詐證明的區別

那么如何通俗的理解ZK-Rollup這樣的“有效性證明”和Plasma/Optimsitic Rollup使用的“欺詐性證明”之間的區別呢?

首先這三種方案都需要有人來做Layer2上交易的排序,執行和打包,我們姑且稱這個角色為“執行者”。

Plasma的執行者只會提交執行結果,秉承著其他人愛信不信的原則,你如果不信任我就需要發起挑戰,而發起挑戰需要你自己保存底層的交易數據。

OR也是一樣,但是執行者在提交的同時會把交易數據也放上來,同樣是愛信不信,你如果不信就自己根據這個交易數據去驗證就完了。

但ZK不一樣,ZK說我不想等你好幾天讓你來挑戰我,那多浪費時間啊,我趕著確認我的交易呢。于是ZK直接在提交的時候生成一個證明,把這個證明也放上去,在提交的同時完成驗證。

與此同時,Plasma/OR都需要通過質押的方式來確保執行者作惡是有損失的,而ZK不用,因為它不需要別人相信它,每次提交他都會自證清白。

除了這方面的區別外,另一個有意義的地方在于,ZK-SNARK可以讓我們在不提交全部交易數據的情況下證明這批交易的有效性,這對于Rollup來說是很重要的,在下面我們會解釋這一點。

(3)ZK-Rollup的實現邏輯

首先ZK-Rollup本質上還是一種Rollup解決方案,因此其仍然需要做以下兩件事情:

StarkWare代幣因技術優化推遲發行:9月30日消息,以太坊Layer2擴容開發團隊StarkWare成員odin_free稱,原計劃于9月底推出的以太坊StarkNet代幣因技術優化而暫時推遲,具體發布日期未公布。他表示,“雖然我們原計劃在九月底推出代幣,但因為我們一直以來致力于以負責任、考慮周密的態度行事。目前,部分組件仍需優化,一旦有消息,我們將及時通知社群”。

此前報道,StarkWare計劃今年9月在以太坊上推出StarkNet代幣。最初將鑄造100億枚代幣,其中17%分配給StarkWare投資者,32.9%分配給核心貢獻者,兩者的所有代幣均有4年鎖定期,50.1%向基金會授予。該代幣將成為運營網絡(費用)、維護和保護網絡(質押)以及決定其價值和戰略目標(治理)的機制。(Discord)[2022/9/30 6:03:56]

打包壓縮一個批次的交易數據

生成新的state root

唯一不同的是驗證方式,ZK-Rollup不會等待驗證者發起欺詐證明流程,而是直接生成一個ZK-SNARK 證明并添加到Batch里提交給主鏈rollup合約。

如圖示,提交的內容相比OR來說 增加了一個ZK-Proof,同時驗證人這一角色被隱去了。

提交到rollup合約之后任何人都可以進行驗證,驗證成功后主鏈rollup合約會將State root更新為提交的最新數據。

如何生成一個ZK-SNARK 有效性證明?

什么是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)時,不透露任何有用的或和所證明的實體本身有關的任何信息。

一個最簡單的零知識證明例子是這樣的

Alice想向Bob證明知道某個保險箱的密碼,密碼是打開保險箱的唯一方式,但她不想告訴Bob保險箱的密碼,怎么辦呢?

正好Bob知道保險箱里有一副Bob前女友寫給他的情書,上面有Bob和前女友共同的指紋。

于是Alice背著Bob打開了保險箱,拿出了這封情書給了Bob。

由此證明了Alice知道保險箱的密碼,同時Alice并沒有告訴Bob密碼是什么,成功!

如何為ZK-Rollup生成一個ZK-SNARK證明!

簡要的說,生成一個ZK-SNARK證明分為以下幾步:

確定問題在邏輯上的驗證規則(例如檢查balance,nonce是否符合要求等)

將邏輯上的驗證規則轉化為門電路Circle問題

將門電路Circle問題轉化為R1CS(rank-1 constraint system,一階約束系統)形式

將R1CS轉化為QAP (Quadratic Arithmetic Program)

經過以上轉換,我們就可以根據邏輯上的驗證規則得到一組可通過固定驗證方法驗證的ZK-SNARK證明。具體的轉換過程可以看這篇文章。

如果你覺得這一部分的復雜程度超過了之前的每一部分,你是對的。同樣覺得復雜的還有目前的ZK-Rollup解決方案提供商,這也是為什么目前ZK-Rollup研發進度和實際應用要比Optimstic Rollup慢的原因之一。如果你不是數學/密碼學專家,或者不是Matter Labs的開發者,你只需要知道以下幾件事情:

商業銀行FWS推出10億美元區塊鏈基金P3 Capital Fund:9月21日消息,商業銀行First Wall Street Capital Mena (FWS)董事總經理Malik Brooks與區塊鏈和數字資產思想領導平臺P3 Network (P3) 達成最終協議,推出10億美元基金P3 Capital Fund,該基金專注于支持和加快全球新興的區塊鏈行業創新發展。(Khaleej Times)[2022/9/22 7:12:15]

生成一個ZK-SNARK證明比驗證一棵默克爾樹需要花費的算力和時間成本都要高很多

并不是隨便一種語言,編譯環境,虛擬機,指令集都能夠無縫支持完成以上提到的過程,需要做額外的適配。

對于第一點,這是各大ZK解決方案提供商目前在努力的方向。首先是時間成本,如果生成一個可用的ZK-Proof需要一個小時,那么間接的用戶提款的時間也會變長。而計算成本包括兩部分,一部分是生成的ZK-Proof的數據量,另一部分是驗證這個Proof所需要花費的算力。這兩部分越大,在以太坊上需要消耗的Gas就越多,進而影響到ZK-Rollup的優化表現。

對于第二點,這是當前限制ZK-Rollup發展的一大原因。在EVM設計之初,開發者們完全沒有想到之后會用到ZK技術。因此為EVM操作生成可用的零知識證明是幾乎不可能的,由此催生了ZK-EVM的需求。

為什么兼容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技術做一個簡單的對比。

Optimstic VS ZK

效率優化(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方案的成本優化效果會更加明顯。

我們之前說到過,因為欺詐證明機制,在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的顯著優勢之一。

可適配性

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的正式大規模實際使用要比我們想象的要快一些。

這個問題的答案是顯而易見的,OR 的安全性來自于經濟學。為了能夠良好的運轉,OR必須設計合理的激勵機制驅使一批主鏈上的驗證人隨時監測提交者,并準備提交欺詐證明。而對于提交者,其也需要通過質押等方式確保節點作惡會付出相應的代價。

而ZK的安全性來自于數學或者密碼學,正如區塊鏈中建立信任的一大基礎:代碼不會作惡一樣。數學和密碼學提供的保障要遠比樂觀的相信人性不會作惡來的穩。

當然,當前的Rollup機制本身也存在一定的安全問題,雖然rollup將數據提交到主鏈解決了數據可用性問題。但是我們還沒有討論過到底誰來負責交易的處理,排序,壓縮,打包和提交。當前一些主流解決方案,如 Arbitrum、Optimism 和 StarkNet,使用一個叫sequencer的角色, 是它們自己運行的單個節點。這種方式帶來的結果是高度的中心化。

我們知道去中心化是一切安全的前提,這種sequencer模式好處在于效率高,在rollup還在摸索階段時可以進行快速的迭代,這些解決方案也聲明了要在未來逐步進行sequencer的去中心化過程。例如使用PoS或dPoS方式進行sequencer節點的選舉等,像Metis這樣新的解決方案已經進行了一些探索。

讓我們根據一個表格來具像化上面的討論:

總體而言,OR在現階段是更成熟的解決方案,事實上也是如此,目前Optimstic和Arbiturm的產品已經可供以太坊開發人員使用。但是由于使用欺詐證明機制,其提款時間和安全性目前來看值得商榷,同時其成本優化相比ZK也略遜一籌。

而ZK Rollup的弱點基本都屬于技術問題,隨著大量優秀的開發人員投入到相關研究,包括Vitalik在內的大多數人都認同ZK Rollup在未來會是更優秀的擴容方案。

Rollup是完美的嗎?

經過以上對于三類Layer2方案的闡述,相信你已經對他們有了一定的認知。事實上文章撰寫的順序也是開發者們對于Layer2擴容方案研究的順序,往往是發現某一種解決方案存在的問題之后,另一種更好的解決方案被提出用來解決相關問題。不僅在加密研究領域如此,這一流程可以被推及到所有工程類的問題上:

提出想法,測試,迭代,優化,直到找到最可行的解決方案。

現在看上去Rollup就是我們想找的那個答案,他解決了普適性的問題,解決了數據可用性的問題,同時在安全性和效率上看起來也不錯。那么,它是完美無缺的那一個嗎?

答案是否定的,任何方案都不能做到完美無缺,Rollup同樣存在著許多問題,即使是看上去更好的ZK-rollup,也無法避免它們。

效率優化存在天花板:

當我們說到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提升再上一個數量級。

流動性的割裂:

在當前多鏈格局的影響下,本身的流動性割裂情況已經日趨嚴重。

而由于目前多種技術方案,多家解決方案提供上的存在,未來的rollup網絡的數量只會不斷增長,由此帶來了更嚴重的流動性割裂情況。

當前以太坊及其layer2網絡TVL一覽

好消息是跨鏈通信可以解決這一問題,代表性的事件是Synthetix已經在著手將其在以太坊主鏈和Optimism上的債務池進行合并。如果這一過程順利且絲滑的完成,相信會對主鏈和子鏈上的流動性合并趨勢有一定的推進。

畢竟合成資產項目的債務池模型遠比目前更常見的流動性池模型復雜,可以預見Uniswap等主流DeFi項目延續這一進程。

通信難題和技術障礙帶來的可組合性降低:

上一個問題中我們談到了通信問題使得流動性發生了割裂,這一現象同樣適用于主鏈dapp和子鏈dapp之間的交互,在以太坊上構建的每個新協議都像樂高積木一樣,其他協議可以輕松地在其上構建,這也是DeFi 發展迅速的原因之一。

如果無法解決通信問題,那么子鏈上的dapp需要重新建立自己的生態,這就造成了更大的資源浪費。不僅是子鏈和主鏈之間,子鏈和子鏈之間也需要構建通信機制。

Again,一些優秀的開發者也正在解決這方面的問題,讓我們希望他們能夠簡化這些操作和流程。畢竟Layer1本身的操作已經夠繁瑣了,如果再加上layer2的復雜度,這將使Web3世界的門檻更高。

中心化風險

我們在上文提到當前各類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

Scorll Tech 對于zkEVM實現的解讀

https://hackmd.io/@yezhang/S1_KMMbGt

作者:Luka(Twitter:0x8e06)

審閱:Jackson(Twitter:0xOar)

Tags:ROLROLL以太坊LAYERroll幣能出坐騎嗎TROLLER以太坊幣今日價格行情分析PlayersOnly

火幣網下載官方app
朱嘉明:數字經濟和非同質時代——NFT_NFT

編者按: 2022年3月26日, ForeChain與零壹智庫主辦“數字藏品的全球趨勢與中國創新——全球數字藏品年度報告發布會”.

1900/1/1 0:00:00
歐易氣象播報 一文讀懂行業晴雨表_NFT

“冷暖反轉”: 近日,美聯儲加息冷空氣襲來。據悉,本次冷空氣具有時間周期長、覆蓋范圍廣、降溫力度大等特點,并且可能會在縮表的影響下再度升級.

1900/1/1 0:00:00
Waves的旁氏游戲_USD

今日,DeFi 研究員 0 xHamZ 在其個人社交媒體平臺上發布了關于 Waves 的看法,在他看來,Waves 目前正在運行一個不可持續的龐氏游戲.

1900/1/1 0:00:00
市場出現數筆大額融資 歐易OKX Ventures重點關注三大領域_WEB

近期,加密市場在眾多消息的共振影響下,走勢撲朔迷離,趨勢難辨:一方面,俄烏局勢尚不明朗,存在沖突再度升級的可能性,屆時有避險需求的資金的持續流出,會讓股票等金融市場再度受到沖擊.

1900/1/1 0:00:00
觀點:Web3的聚合領域將在未來迸發出巨大價值_區塊鏈

在今天的文章中,我將從更大的視角去看待問題,我將通過聚合理論(Aggregation Theory)的視角來看待Web3.

1900/1/1 0:00:00
高通的元宇宙布局_元宇宙

高通,曾經的通信行業霸主。元宇宙未來會推動一系列的產業發展,此前01區塊鏈寫了一篇《元宇宙10大產業》,詳細描述了元宇宙將會帶動的10個產業,當中包括芯片、通信產業.

1900/1/1 0:00:00
ads