將作為Layer 2解決方案?其實「ZK Rollup」並不是一個新提案
以太坊愛好者/張詠晴編譯
2019-10-07 11:50

 

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 設計已經改進了不少)

 

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

 

現今以太坊每個區塊的 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。

 

04

-https://medium.com/matter-labs/introducing-matter-testnet-502fab5a6f17-

 

延遲…

 

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

 

今年初,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。

 

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

 

本文為巴比特資訊授權刊登,原文標題為「如何理解 layer 2 數據可用性解決方案 ZK Rollup?