什麼是ZK Rollup?以太坊layer 2 數據可用性解決方案

簡單一句話解釋 ZK Rollup 就是,數據放在鏈上的 layer 2 解決方案。

原文標題:《科普 | ZK Rollup & Optimistic Rollup》
作者 : Kimi Wu
翻譯 : 阿劍

作者註:ZK Rollup 不是一個新的提案,大約在一年前被 Barry Whitehat 所提出,同時間 Vitalik 在以太坊研究員的論壇有一篇比較完整的文章解釋,現在由 Matter Lab 在開發。研究完 zk-SNARKs 之後,一直沒空來看,直到最近才有機會來深入了解。除了 ZK Rollup,也會簡單帶一下前陣子在 Plasma Group 所提出的 Optimistic Rollup。

ZK Rollup 一開始提出來的時候,是被定義為 layer 2 的解決方案,年初的時候一度以 Plasma Ignis 這個名稱作為發表。應該是因為去年 Plasma 很紅,一直不斷有新的提案跟進展,加上這當時也被定義為 layer 2 的解決方案,這些種種原因,開發者就冠上了 Plasma 的名稱,不過因為這項技術跟 Plasma 的精神完全不一樣,被社群抗議,後來就恢復到 Rollup 這個名稱(開發者的聲明),所以搜尋 「Plasma Ignis」會找不到什麼東西。到最近,Rollup 被更名為 semi-layer 2 的解決方案,就是有一點 layer 2 但又沒這麼 layer 2。

簡單一句話解釋 ZK Rollup 就是,數據放在鏈上的 layer 2 解決方案。

在了解 ZK Rollup 之前,先來解釋原本 layer 2 有什麼問題。以 Plasma 為例,Plasma 鏈只把 Plasma 區塊的 hash 放上 Ethereum 主鏈上做公正(欲了解 Plasma 可以參考這裡),也就是在鏈下交易了數百或數千筆的交易,最後上鏈只有幾十個 bytes,這是鏈下交易的精神,但也是設計上最麻煩的地方——數據的可取得性(編者註:大陸一般譯為 「數據可用性」)。
就是當有人要離開這個鏈時,需要一個額外的遊戲規則,在 Plasma 叫做挑戰期(因為鏈上沒有數據,需要側鏈參與者的提供證據),這衍生了有數據才能挑戰,所以大家都要存一定數量的數據,相較於跟主鏈的互動,只需要裝一個錢包,並不需要下載區塊數據,用戶體驗上差異很大。挑戰期的另一個問題是,使用者需要保持上線狀態,不然錯過挑戰期,就代表默認了交易(因為是採用詐欺證明並非是有效性證明)。簡單來說,因為數據的可取得性問題,衍生了:

  • 使用者需要常常在線
  • 需下載部分數據
  • 而造成使用者體驗很糟(當然現在的 Plasma 設計已經改進了不少)

如何將數據放在鏈上,又不會造成數據過大呢?

首先,先介紹整體架構。跟 Plasma 一樣,有一個智能合約做擔保,有中繼者 (relayer) 幫忙送交易到智能合約(在 Plasma 叫 operator),中繼者除了送交易外,還需要產生 SNARK 證明,一起送上鏈做驗證。

智能合約的部分,可以想像跟 ERC20 一樣,在合約里記每個參與者的帳,差別在於,標準的 ERC20 交易是由 Ethereum 這系統做驗證,也因此不能合併(因為這就是 Ethereum 的標準交易),而 Rollup 中,是把好幾筆交易包成一個標準交易,對 Ethereum 這個系統,就是一個交易,而驗證交易的有效性則由智能合約做驗證。

實際在智能合約里,用兩個 merkle tree 做紀錄,一棵樹是紀錄地址,所以只需要樹的索引值就可以代表一個地址(未註冊的索引值內容為 0),因此地址的數據量就從原本的 20 bytes 減少到只有 3 bytes,另一棵樹則記錄 balance 跟 nonce。

如何理解 layer 2 數據可用性解決方案 ZK Rollup?

這是數據格式(這是最初的提案,後來的實作交易量更小),
如何理解 layer 2 數據可用性解決方案 ZK Rollup?

因為用索引值當地址的代表,所以只需要 3 bytes (2²⁴個地址),Value 的部分是以 10^-6 當作基底,這樣只需要 15 bytes 就可以代表一筆交易,而儲存這樣一筆交易大約只需要 892 gas (雖然 Value 是 6 bytes,但是文章中的假設大部分的交易只會使用到 4 bytes,所以演算法是 13 bytes * 68 + 2 bytes * 4 = 892),而一般 ether 的轉移需要 21K gas,因此交易速度能提升(所以 Vitalik 的文章標題是 「On-chain scaling to potentially ~500 tx/sec through mass tx validation」)。
如何理解 layer 2 數據可用性解決方案 ZK Rollup?

為什麼交易速度能提升?也順便來了解一下交易速度

現今以太坊每個區塊的 gas 上限約 8M,所以若單純 ether 交易,速度約略是

8M / 21K / 15 ~= 25 tps

所以現在的交易瓶頸其實是 gas 的問題,下跌交易手續費(編者註:指調低轉賬所需耗用的 Gas 數量)或是提升區塊 gas 上限,都能適時紓困(但也會造成衍伸的問題),而 ZK Rollup 就是藉由交易數據量 (size) 的減少,進而能增加交易速度。那來看一下使用 ZK Rollup 後交易速度能到多快

(8M — 600K (zk-SNARK 驗證) — 50K (預計合約運行的 gas 花費)) / 892 / 15 ~= 550 tps

這個數字就是 Vitalik 文章的標頭 「On-chain scaling to potentially ~500 tx/sec」。但實際上並沒有這麼理想,在作者 Barry 的實作中,大約只有 268 tps,因為每次資產的更新都會留下 event,所以有多餘的 gas 花費,然而,這樣的設計在應用上也是比較親切的。

數據都在鏈上,而且透過 zk-SNARK 做驗證,代表著上鏈的數據都是被驗證過的,因此就沒有一開始 layer 2 遇到的問題,需要挑戰、需要下載數據等等。這也隱含著不需要信任中繼者,因為他們無法作壞,最多就是不幫你送交易。

事情沒有這麼美好…

大家都覺得 zk-SNARK 像個萬靈丹一樣,用了好像什麼事都解決了,不過實際上並沒有這麼完美。zk-SNARK 除了需要初始設定之外(編者註:指需要信任的初始設置),最大的問題就是需要大量的運算力,在 Barry 提供的數據中,中繼者的計算機若是一台 8G 內存加上 20G 的硬碟 swap,大概只能產生 20 tx/sec,遠遠不及預期的 500tps 或是實作的 200 多 tps。所以這個方案最大的問題在於要怎麼解決算力問題。

平行運算

Matter Lab 使用了多中繼者模型跟平行運算。多中繼者的模型,很像小型的區塊鏈,使用了 DPOS (Delegated Proof of Stake),還有隨機挑選區塊產生者,所以被挑選到的區塊產生者,就可以收集交易、產生證明並且上鏈。這樣的方法避免了中心化,若中繼者被惡意攻擊,整個網路還是能運作得下去,另一方面,也為平行運算做了鋪路。零知識證明的產生非常花時間,因此基於多中繼者模型,Matter Lab 提出了 「上鏈-驗證」 兩階段的方式,也就是中繼者先把數據上鏈,下一個階段再上傳證明做驗證,進而達到平行運算(如下圖)。再加上一些數據的優化,測試結果可達到 1600 tps。
如何理解 layer 2 數據可用性解決方案 ZK Rollup?

延遲…

聽似很美好,但是因為你的交易被分兩階段上鏈,也就是從送出到到被驗證,會是好幾個區塊,時間比原本單純上鏈時間會更久。當然,延遲多久是使用者可接受的,這目前也無從得知。這是一個取捨,省了手續費,增加了交易速度,卻也增加了時間的延遲,這一切也要等上線後才會知道。

今年初,Vitalik 在台北的線下聚會中分享了 ZK Rollup 的進階版 — ZK ZK Rollup,有興趣的人可以參考這篇文章,記錄的很詳細。

Plasma & Optimistic Rollup

Optimistic Rollup 在設計上跟 Plasma 相關,所以只會簡單帶一下差異。

Karl (注)基於 ZK Rollup 的設計,在上個月提出 Optimistic Rollup,概念上也是把數據都放鏈上,但不是用 zk-SNARK 做驗證,因為希望能達成更普遍性的應用。而不一樣的地方有,把 from 的部分,改為使用者的簽章(65 bytes),因為數據量變大的,可想而知,花的 gas 會更多,交易速度就會不及 ZK Rollup。另一部份是,因為不是用 zk-SNARK 做驗證,就需要數據驗證的輔助方法(validity game),這邊就不詳細介紹,有機會再寫一篇 Plasma/Optimistic Rollup 的詳細介紹。

在估算上,交易速度約是 100 tps,若簽章方式改為 BLS,約可提升到 450 tps。而在 10 月的硬分岔後,gas 會下跌,預估的交易速度也會分別到達 400/2000 tps。(許願:希望有人可以介紹一下 10 月的硬分岔細節 XD)

註:在中文的媒體文章中,都稱他是 Casper 的核心研究員之一,但是從我一開始知道這個人,都是在大力宣揚 Plasma,他的部落格、twitter 都是跟 Plasma 相關的文章,不確定他在 Plasma Group 的角色,但我是把他定位成 Plasma Group 的 leader

來源鏈接:mp.weixin.qq.com

提示:投資有風險,入市需謹慎,本資訊不作為投資理財建議。請理性投資,切實提高風險防範意識;如有發現的違法犯罪線索,可積極向有關部門舉報反映。
你可能還喜歡