以太坊擴容最熱門主力方案 Rollup 學習指南

買賣虛擬貨幣
以太坊在誕生後遭遇的最多質疑就是效能問題,在二層網路解決方案 Plasma 幾乎全面潰敗後,前沿研究領域又將眼光放在了 Rollup 技術上。當前以太坊鏈上交易的吞吐量(TPS)約每秒可執行不到 30 筆交易,雖然接近比特幣的幾倍,但離大規模應用還有較遠的距離。相比之下,Visa 或支付寶的交易處理能力的峰值至少每秒上萬筆。加密貨幣經常被提及的一個使用者場景是「跨國匯款或支付」,採用鏈上發行的穩定幣 USDT、USDC 或 PAX 作為交易媒介,以目前以太坊每秒 20 多筆交易的效能,離滿足全球的需求還有很大差距。另一個比較熱門的使用者場景是去中心化金融(DeFi),3 月 12 日「黑色星期四」期間,以太坊網路在鏈上清算和交易的首次大規模壓力測試中,雖說勉強可用,但交易成本提高了數百倍。只有交易成本降到比傳統方式更低之後,區塊鏈才更有實用價值。

為了提升交易效能,以太坊設立了多個研究方向,第二層網路(Layer 2)解決方案 Plasma 曾是其中最重要的一個。但在過去 2 年多的發展中,研究人員逐漸發現 Plasma 以及改進版本 Plasma Cash 存在不少的問題,比如要求使用者定期上線以及資料可用性問題,制約了 Plasma 的發展。

在 Plasma 誕生的一年後,名為 Rollup 的技術浮出水面。基於此概念,還誕生了多個分支,最主流的是 ZK Rollup 和 Optimistic Rollup 兩個方案。

Rollup 技術解決了之前 Plasma 暴露出的問題,提供了和以太坊 Layer 1 (也就是以太坊自己)相同的資料可用性和安全性,而且還能極大提高網路的吞吐能力,同時降低單筆交易成本。正因如此,雖然很多人在廣義上稱 Rollup 為 Layer 2 的技術,但事實上卻介於 Layer 1 和 Layer 2 之間。

Rollup 是什麼?

Rollup 的核心理念其實很簡單,就是將原本散佈在區塊中的大量交易資料,打包成一筆「濃縮」的交易,釋出到鏈上。為確保其中每筆交易的有效性,各種 Rollup 方案設計了不同的機制以確保整個過程的安全性與 Layer 1 保持一致。ZK Rollup 以零知識證明 zk-SNARKs 的密碼學技術確保安全性,而 Optimistic Rollup 則繼承了 Plasma 的懲罰機制,以確保節點如果作惡將付出很大的代價。

當然,Rollup 的各種方案都存在不同的取捨。比如,ZK Rollup 的缺點是支援通用型智慧合約更難,而且「濃縮」資料(建立 ZK 證明)的過程耗時較長;而 Optimistic Rollup 的整體安全性略差一些。不過,各個開發團隊具體的實現方案,都針對性最佳化了上述的這些權衡,部分問題已有顯著改善。

Rollup 技術將有助於提升鏈上應用的競爭力,特別是對於高頻交易的場景,有望降低轉賬或交易費用。不過由於本身機制的設計,相比直接的鏈上交易來說,Rollup 類交易可能在鏈上的結算速度會慢一些。出於這個原因,Rollup 的具體應用場景可以包括:

1. 普通轉賬或支付
2. 提升匿名性的轉賬或支付
3. 去中心化交易所
4. 去中心化身份系統
5. 去中心化社交媒體

Rollup 概念出現還不到兩年,各個 Rollup 實現方案已經陸續上線了測試網,如 Matter Labs 和 Fuel Labs 的方案,而應用層的產品也在開發之中,最先上線主網的是由路印 Loopring 開發的去中心化交易所,其他也宣佈將採用 Rollup 的專案包括 Synthetix、Dharma、AZTEC 等。

接下來,我們更深入瞭解學習一下。

Plasma 失敗了嗎?

關於區塊鏈擴容的討論起源於比特幣網路,針對比特幣成為「全球支付工具」的願景,社羣、開發者和礦工最終討論出的一個方案是,將高頻的交易遷移到比特幣之外的一個虛擬層中進行,或可以稱為「Layer 2」,而不是依賴於比特幣自身(Layer 1),不過,最終的結算還是需要依賴 Layer 1 進行。

這就是比特幣「閃電網路」的由來。而 Plasma 曾是以太坊 Layer 2 解決方案中最受矚目的一個,不僅因為這是由 Joseph Poon 和以太坊創始人 Vitalik Buterin 共同釋出的白皮書,而且還有不少專案宣佈過,將基於 Plasma 技術展開研發。

Plasma 透過將高頻的交易遷移到以太坊網路之外的側鏈之上,定期將批次交易的雜湊值釋出到以太坊主網,然後設定一些防惡意攻擊機制,確保資金安全性。最終的目的是為以太坊擴容,提升交易吞吐量,減少交易成本。Plasma Group、Matic、LeapDAO 和 OmiseGo 等團隊都曾經是 Plasma 技術最主要的研發團隊,有些專案也獲得過以太坊基金會和 Consensys 等機構的資助。

但畢竟這是個試驗性的專案,在專案的研發過程中,很多現實問題被暴露了出來,其中最重要的兩個挑戰是:

· 資料可用性:因為僅將批次交易的整體雜湊值釋出到 Layer 1 上,而不是每一筆交易均釋出到底層公鏈,所以具體的交易資料不存在 Layer 1 上,使用者需要自己儲存具體的交易資料。

· 使用者體驗差:為了避免惡意攻擊,Plasma 在設計挑戰期的機制的時候,使用者需要定期上線網路,否則可能錯過而遭受不必要的損失。

雖說 Plasma 也推出過更新版的標準 Plasma Cash,但這些問題也依舊存在,最終導致了 Plasma Group 和 LeapDAO 兩個研發團隊在今年初決定,放棄 Plasma 技術,並轉向另一個新技術的研發:Rollup。

而 Matic 依舊堅持在 Plasma 技術的開發中,他們計劃在 5 月 15 日至 5 月底期間啟動主網的上線流程,並逐步進行去中心化,擴充套件到超過 100 個節點。究竟 Matic 有沒有處理好上述的這些問題,值得更多時間的觀察。

無論如何,研究以太坊擴容技術的開發社羣,已經將更多精力切換到研究 Rollup 了。

為什麼 Rollup 有機會?

在 Plasma 誕生的一年後,一位匿名人士 Barry Whitehat 在 Github 中提出了「Rollup」的概念,試圖以「SNARK」對以太坊進行擴容。

SNARK 是零知識證明的一類密碼學技術,全稱是「簡潔化的非互動式零知識證明」(zero-knowledge succinct non-interactive argument of knowledge)。

Rollup 一詞本身的含義為「捲曲」或「捲起」,或者可以引申為「彙總」或「聚合」。在資料庫的標準計算機語言 SQL 中,語法中的「Rollup」可以幫助 Group by 語句,將搜尋出的一系列結果以聚合的資料顯示,或許這是他以 Rollup 命名該技術的由來。

在 Barry Whitehat 提出 Rollup 概念時,它是這樣被定義的:

「Rollup 透過將交易聚合,僅需要在鏈上進行一次交易,就可以驗證多筆其他交易。」

而打包交易和驗證交易的方式是透過 zk-SNARK 技術實現的,這樣就能大幅度減少交易成本,確保安全性,也可以解決 Plasma 之前遇到的問題。

有人會將 Rollup 歸類為 Layer 2 技術,但 Vitalik Buterin 卻不這麼認為。

在 Rollup 概念被提出後,Vitalik Buterin 於同月在以太坊研究論壇中發表文章介紹該技術,他是這麼解釋的:「我們可以將在以太坊上的資產轉賬交易的規模進一步增加,而且不需要使用 Layer 2 技術中引入的『活性假設』(liveness assumption,如狀態通道和 Plasma),只需要使用 ZK-SNARKs 為大量的交易進行驗證。」

有意思的是,「Rollup」這個名字一開始沒受到重視。2019 年的 1 月,Matter Labs 推出了名為「Plasma Ignis」的技術,因為在此之前 Layer 2 的主流技術是 Plasma,所以他們以「零知識證明版本的 Plasma」作為研究方向。但從技術角度來說,這其實不能算是 Plasma 的一類,更像是 Rollup。後來該團隊全面放棄了 Plasma Ignis 這個名字,轉而採用 ZK Rollup 作為技術的方向,後續也推出了他們自己基於 ZK Rollup 的技術實現方案 ZK Sync,還進行了更多的深度定製和最佳化。

由於早期 ZK Rollup 的概念中,主要的缺點是生成 SNAKR 證明過程較長,而且也未能支援通用型的智慧合約,所以 Fuel Labs 聯合創始人、以太坊二層擴容方案的長期研究者 John Adler 在 2019 年 6 月提出了另一個方案,稱為 Optimistic Rollup。該方案吸收了 ZK Rollup 對於資料可用性的優勢,以及 Plasma 的懲罰機制,由於去除了零知識證明,所以可以更方便地支援通用型的智慧合約。

Optimistic 意思是「樂觀的」,所以在該方案中,不是透過 SNARK 處理後再將資料聚合到鏈上,而是預設「樂觀」相信節點會將最新且準確的資料釋出到鏈上,否則其他人在驗證後,如果發現有問題可以發起挑戰,成功後節點會受到懲罰。

所以整體來看,Rollup 的技術相比較 Plasma,最關鍵的是解決了資料可用性的問題,所有交易資料都是在以太坊鏈上的,安全性也能和以太坊主鏈相同級別。

那既然同樣都是把交易釋出在鏈上,為什麼 Rollup 比普通的轉賬的吞吐量更高,成本更低呢?

因為在構建 Rollup 類交易的時候,大量的普通轉賬行為可以透過某些技巧進行壓縮,最終在透過零知識證明 SNARK 處理後,雖然 SNARK 生成過程較長且資源消耗(Gas)較大,但分攤到每一筆交易中就微不足道了。在 Vitalik Buterin 的初始提案中有具體的資料可以參考,雖然後續有各種不同的實現和差別。

在他的方案中,單筆交易的構成類似於:

相比普通鏈上交易所需要的 2.1 萬的 Gas 費用來說,以上這種單筆交易由於縮減了體積(比如,以太坊地址是 20 bytes,以上這個僅需 3 bytes),所以總共僅需 892 Gas。

但是由於 SNARK 證明的計算資源消耗較多,約 600k Gas,以及執行合約所需約 50k Gas,所以這也就意味著,必須要批次處理很多交易,才可以分攤這幾百 k 的間接成本。

以太坊單個區塊 Gas 上限以 8M 計算的話,如果以純 ETH 交易來說,吞吐量約為:

8M / 21k / 15 秒 ≈ 25 tps

而該方案中的吞吐量約為:

(8M - 600k - 50k)/ 892 / 15 秒 ≈ 550 tps

這就是 Rollup 既能保證 Layer 1 資料的可獲得性,也能大幅減少資料需求並減少單筆交易的成本的主要原因。

除了上述提到的 Rollup 方案研發團隊之外,不少應用層的專案也看到了 Rollup 的優勢,宣佈將研究或整合 Rollup 技術。從目前公開的專案來看,選擇 Optimistic Rollup 的專案更多一些,包括去中心化交易所、DeFi 協議、匿名服務等,很可能是因為專案方考慮到 Optimistic Rollup 的優勢為支援通用智慧合約,以及不會像 ZK Rollup 需要花費很多時間生成 SNARK 證明,畢竟在沒有最佳化方案之前,可能會影響應用的使用體驗。

宣佈採用 ZK Rollup 方案的專案目前並不多,但是路印 Loopring 的去中心化交易所是當前 Rollup 專案中開發進度最快的一個,早在 2 月底就已經上線以太坊主網,開始了公開測試。雖然後來也遇到了前端頁面的非致命漏洞,但是他們的經驗會為後續很多其他即將採用 ZK Rollup 的專案提供參考和指導意義。

到底可以減少多少鏈上的交易成本呢?路印給出了重要的實戰資料,在他們採用的方案中,批次處理 4096 筆交易時,單筆交易只需要 375 Gas。也就是在正常的 Gas 費用下,每次交易成本為 0.09 分人民幣(注意單位),換句話說,100 萬筆交易的成本大約為 900 元。

但曾經研發 Plasma 技術的團隊 LeapDAO 卻認為 Rollup 技術不是萬靈藥。在他們進行了具體的資料分析後,為大家提供了很多值得參考的資料。根據他們的估算,整體而言 Rollup 可以為以太坊網路提升略超過 10 倍的吞吐量,因為相比 Plasma 還是犧牲了很多成本的。

除了兩個最流行的 Rollup 衍生版本外,還有一些以太坊二層擴容方案也採用了 Rollup 這個名字,比較常見的兩個是 SKALE Labs 提出的 BLS-Rollup 和 Offchain Labs 的 Arbitrum Rollup。

不過 Optimistic Rollup 的提出者 John Adler 認為,BLS-Rollup 不算是通常意義上的 Rollup,更像是一種批處理技術。而 Arbitrum Rollup 在 2018 年釋出論文和 2019 年釋出白皮書時都未提及 Rollup,他們在今年初上線測試網時才稱之為 Arbitrum Rollup。

ZK Rollup 進展

ZK Rollup 技術研發中最重要的公司是 Matter Labs 和 iden3,兩者均已推出測試網。但他們產品的定位略有差異,Matter Labs 更像是通用型解決方案,而 iden3 是專用型解決方案。

Matter Labs 推出的是一套完整的通用型解決方案,叫做 ZK Sync。該方案考慮到了 ZK Rollup 存在的一些缺點,提出了相應的機制最佳化,比如之前提及的,生成 SNARK 證明耗時較長,以及較難支援通用智慧合約。Matter Lab 聯合創始人兼執行長 Alex Gluchowski 表示,「在伊斯坦布林升級之後,ZK Sync 將處於非常有利的位置,可輕鬆地達到每秒數千的交易量」。

為了實現通用智慧合約這一需求,Matter Labs 還推出了零知識證明智慧程式語言及框架 Zinc,在今年 2 月推出了首個版本 v0.1 Alpha。Matter Labs 表示,Zinc 是用於建立安全的零知識證明線路以及基於其執行程式的智慧程式語言和執行環境,Zinc 遵循 Rust 原理,並基於簡化的 Rust 語法,精通 Rust、C++、Solidity 等語言的開發者可在一天內快速上手。

而 iden3 研究 ZK Rollup 的初衷則是為了他們原本專案考慮的。iden3 這個名字,可以想象成是 identity(身份)的 3.0,感受一下,是不是類似於「Web3」?所以 iden3 團隊專注的是為數字世界提供一種開源的身份管理系統,利用零知識證明 zk-SNARK 提升隱私特性,而 Rollup 則可以增加身份認證系統和應用層在鏈上互動行為中交易吞吐量。

而從應用層來說,路印 Loopring 和 AZTEC 分別解決了使用者鏈上交易和隱私的需求。路印 Loopring 的去中心化交易所是當前 Rollup 專案中開發進度最快的一個,早在 2 月底就已經上線以太坊主網,開始了公開測試。

AZTEC 是一個隱私技術解決方案,在今年 2 月就上線了以太坊主網,但是他們還在考慮採用 Rollup 技術,以顯著降低以太坊網路中隱私交易的成本。他們原本在隱私技術中就採用了零知識證明 ZK,擴容方案選擇的是 ZK Rollup,所以他們給新的這套方案取名為 ZK ZK Rollup,或 ZK² Rollup。第一個 ZK 是利用 SNARK 技術中的「簡潔性」(succinctness)提升網路的可擴充套件性,將多筆交易合併為一筆以減少交易成本,第二個 ZK 是利用 SNARK 作為隱私技術,將合併前的每一筆普通交易升級為隱私交易。

Optimistic Rollup 進展

Optimistic Rollup 技術中最重要的公司是 Fuel Labs、Optimism (前 Plasma Group)和 NutBerry,他們研發的是通用型的 Optimistic Rollup 解決方案。相比 ZK Rollup,由於去除了複雜的零知識證明這類複雜的密碼學技術,所以支援通用的智慧合約會更容易一些。

Optimistic Rollup 雖然比 Plasma 增加了資料可用性的優點,但也直接吸納了之前 Plasma 的成果,除了都用同一套博弈和懲罰機制之外,Optimism 團隊表示,這兩個方案可以共享很多基礎設施和程式碼。另外,他們認為對於一個成熟的 Layer 2 生態系統,Rollup、Plasma 和狀態通道應該是可以在同一個客戶端(智慧錢包)內一起工作的。

其實在 Plasma Group 對外公開放棄 Plasma 技術之前的 2019 年年底,就組建了一家新公司 Optimism,專注於實施 Optimistic Rollup,該公司目前已經從加密風險基金 Paradigm 和設計公司 IDEO 旗下的 IDEO CoLab Ventures 籌集了 350 萬美元種子輪融資。新募集的資金主要用於實施 Optimistic Rollup 解決方案和基於該解決方案構建應用程式。儘管這是一家商業公司,但該研究小組表示,希望繼續為開源專案做貢獻,並與公眾分享自己的研究成果。

為了支援以太坊的智慧合約,Optimism 已經發布了虛擬機器 Optimistic Virtual Machine (OVM) 的 Alpha 版本。OVM 是嵌入在以太坊虛擬機器(EVM)中的副本,允許開發者使用 Optimistic Rollup 時,可使用和 EVM 相同的開發者工具集和智慧合約語言。

剛開始,Optimistic Rollup 被稱為「最小可行合併共識」(Minimal Viable Merged Consensus),在 John Adler 於去年 6 月提出了這個概念後,就成立了 Fuel Labs,以實行他們的擴容方案。

Fuel Labs 將開發一條無需信任的以太坊側鏈 Fuel,專門針對以太坊鏈上的支付進行設計,在伊斯坦布林升級之前,保守估計能將以太坊 ERC-20 代幣交易成本降低至原來的五分之一。

今年 1 月,Fuel Labs 基於 Optimistic Rollup 的以太坊側鏈 Fuel 的公開測試網上線,程式碼也已開源。值得注意的是,他們測試網的合約就已經支援所有的 ERC-20 代幣了,畢竟 ERC-20 本就是一種智慧合約。後來在 3 月,他們宣佈推出一門新的以太坊底層語言 Yul+,作為對 Yul 的實驗性升級,為 Yul (以太坊虛擬機器的一種低階中間語言)新增了各種 QoL 功能。Yul 是由 Solidity 開發者編寫的一門旨在進一步最佳化編譯目標的低階中間語言,簡單且具有實用的低階語法,讓開發人員比 Solidity 更接近原始以太坊虛擬機器(EVM),同時具有最佳化 gas 費使用效率的潛力。

NutBerry 相比上述兩個影響力更小一些,但他們的目標是開發一個基於 Optimistic Rollup 的 Layer 2 解決方案,且支援具有狀態(stateful)的智慧合約。該專案最早被髮布在以太坊研究論壇,其中描述了該專案將分為四個里程碑:支援 ERC-20 標準、支援 ERC-721 標準、支援無狀態智慧合約、支援具有狀態的智慧合約(也就是可以儲存資料的智慧合約)。NutBerry 已於今年 2 月釋出了第二個測試網,已支援 ERC-712 (Ethereum typed structured data hashing and signing)。

Optimistic Rollup 的應用層產品相對較多一些,可能是因為支援智慧合約更簡單,所以對於這些 DeFi、DEX 或隱私服務這些需要智慧合約處理邏輯的應用來說,更方便一些。

這些應用將會在後續的一兩個季度內逐步上線,不用多久就能體驗到了。

其他 Rollup

雖然其他幾個 Rollup 解決方案和上述的這些專案不太一樣,但是他們都以 Rollup 命名,所以本文也做相關的整理和收集:

· BLS-Rollup,可以參考 SKALE Labs 的介紹:https://ethresear.ch/t/the-optimal-snark-less-on-chain-scaling-solution/4790
· Arbitrum Rollup,可以參考 Offchain Labs 的介紹:https://medium.com/offchainlabs/how-arbitrum-rollup-works-39788e1ed73f
· 另外還有一個基於賬戶的匿名 Rollup 專案:https://ethresear.ch/t/account-based-anonymous-rollup/6657

未來

為了以太坊鏈上應用生態的發展,擴容是一個持續且重要的話題,畢竟,離以太坊 2.0 最終形態至少還有 2-3 年的時間。在此之前,DApp、DeFi、遊戲等各種鏈上應用生態是無法規模化的,計算資源將成為重要的瓶頸,任何一個強勢的 DApp 都可能迅速將鏈上的計算資源佔滿。以 3 月 12 日為例,Maker 協議因以太坊價格暴跌而發起的抵押品拍賣清算流程,就是因為整體網路擁堵而產生了鉅額損失。

曾經最重要的擴容方案 Plasma,在實現過程中遭遇一些問題之後,開發者社羣將更多精力轉移至 Rollup,因為它解決了前輩在開發過程中發現的「資料可用性」問題。雖然有一些取捨,但還是比以太坊 Layer 1 效率高上幾十數百倍。而衍生出兩個最重要的分支 ZK Rollup 和 Optimistic Rollup ,分別選擇了不同的挑戰以確保安全性:是研究困難的零知識證明密碼學技術,還是尋找出一套安全且照顧使用者體驗的博弈機制。

不過,那些上百倍的提升目前還是理論值,或許是實驗室環境下的最優情況,在此之前還有很多的研發工作和配套的最佳化。只有這些方案被實現,並且被應用整合且大規模採用之後,才能知道真實的效能,或是否有其他的弱點和問題。

畢竟實踐才能出真知。Rollup 不是第一個擴容方案,也不會是最後一個。雖然我們都知道目標在哪裡,但是實現的路徑依舊是曲折的。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;