技術丨為什麼 Vitalik 看好區塊鏈二層擴充套件方案 Rollup?

買賣虛擬貨幣

本文作者朱光宇,區塊鏈愛好者,前阿里巴巴JVM專家。現就職於Westar實驗室(westar.io),從事智慧合約程式語言及其執行引擎的研發。原標題為《深入理解區塊鏈二層擴充套件方案Rollup》,文章版權歸原作者所有,如有侵權請聯絡刪除。

01

背景

最近,以太坊創始人 Vitalik Buterin 在一篇題為「混合式二層協議的曙光」的文章[1]裡對 Rollup 方案大加讚賞,認為它為智慧合約的可擴充套件性開啟了大門。那麼什麼是 Rollup ?它包括哪些主流方案?這些方案各自有什麼優缺點?它們未來發展前景怎樣?為了找到這些問題的答案,筆者對相關專案做了一番調研,將收集到的資訊整理成下面這篇文章。

02

Rollup 的出現

最近幾年,以太坊二層(Layer-2)擴容技術得到迅猛發展。所謂二層,就是將一部分資金儲存在主鏈智慧合約裡,在保證足夠安全的前提下,把一部分交易放到主鏈之外進行,好像鏈下多出來一層網路。二層方案裡表現比較突出的是狀態通道和 Plasma 側鏈。雖然這兩種方案誕生時間很早,但是發展的卻比較緩慢。其背後的原因歸根結底是資料的可用性(Data Availability)問題。

什麼是資料可用性呢?這裡有個不太恰當的例子。假設你去賭場玩撲克,首先要把現金換成籌碼,這可以理解成在鏈上建立狀態通道,並存入押金。然後你開始玩撲克,這就是所謂的鏈下交易。在贏得一手大牌之後,你想要兌現走人,突然有人給你腦後來了一悶棍,醒來後桌上的籌碼不翼而飛。你記不起來牌局的細節,所以無法追回已經贏得的籌碼,這就是所謂的「資料不可用」。無論是狀態通道還是 Plasma 側鏈,完整的交易記錄和見證資料都只儲存在鏈下,出現爭端時如果參與者沒有及時提供正確的交易和見證資料,交易的安全性就無法保證。就好像是那個忘記了牌局細節的人,很難追回屬於自己的籌碼。

就在二層擴容技術舉步維艱的時候,一種名叫 Rollup 的新方案被提了出來。與狀態通道和 Plasma 不同的是,它可以「打包」交易,並將「打包」後的交易資料連同一個 SNARK 零知識證明發布到鏈上。打包的正確性可以透過零知識證明來見證,負責「打包」的操作者不可能釋出惡意或無效的交易。這就是後來被 Vitalik Buterin 稱之為 ZK Rollup 的二層擴容方案。ZK Rollup 並非萬能,它遇到的最大問題是通用性。除非要證明的交易非常簡單,否則建立 SNARK 證明的成本會非常高。因此,一種名叫 Optimistic Rollup 的折衷方案被提了出來。Optimistic Rollup也是把交易資料都放到鏈上,但不是用 SNARK 做見證,而是採用「加密經濟學有效性博弈」來實現有效性驗證。

03

工作原理

Rollup 的核心思想是將「打包」後的交易資料區塊釋出在鏈上,從而降低交易有效性驗證的難度。交易資料的上鍊和驗證是基於智慧合約完成的。操作者收集到不同參與者提交的鏈下交易後,在鏈上執行 Rollup 智慧合約提供的指令碼,將打包後的交易資料區塊作為引數提交給合約,合約驗證資料有效後為每個參與者記賬。這相當於一次性執行了一批鏈下交易,但是在鏈上只執行了一個交易。

下圖是 ZK Rollup 提交上鍊的打包資料。它包含一組壓縮後的交易資料 [Tx](不包含任何簽名)、執行這批交易之前的老的使用者狀態的 merkle 樹樹根,以及執行交易之後的新的使用者狀態的 merkle 樹樹根。除此之外還包含一個 SNARK 零知識證明,合約用它來驗證在老的使用者狀態上施加這批交易 [Tx] 後結果就是新的使用者狀態。零知識證明具體是如何工作的?這不是三言兩語就能解釋清楚的,大家可以參考文章[2],裡面對零知識證明的工作原理做了詳細闡述。

生成 SNARK 的成本非常高,所以 Optimistic Rollup 採用了不同的方法——「欺詐證明」來驗證交易有效性。這裡的「欺詐證明」並非 SNARK 那樣的見證資料,它實際上指的是加密經濟學有效性博弈(Cryptoeconomic Validity Game)。越說越暈了,其實很簡單,就是每次打包後的交易被提交到鏈上時,智慧合約都假定它們是正確的,無需驗證。如果有人篡改了交易,操作者或者其它參與者都可以挑戰非法交易,挑戰成功後透過智慧合約回滾不正確的區塊,作弊者會受到懲罰,它的押金將會被沒收,部分押金會獎勵給挑戰者。這就是所謂的基於加密經濟學有效性博弈的「欺詐證明」,實際上是讓參與各方互相監督,透過懲罰機制來提高作弊成本。為了實現「欺詐證明」,光有 ZK Rollup 那樣的交易資料 [Tx] 是不夠的,Tx資料需要包含交易提交者的簽名,合約透過校驗簽名來判斷交易是否合法。

04

安全性

Rollup 的安全性來自於資料可用性和交易有效性。有了資料可用性和交易有效性,就能保證 Rollup 操作者永遠不能破壞狀態或竊取資金,即使操作者不配合,參與者也能方便的追回 Rollup 網路上的資產。Rollup 將交易資料釋出到鏈上,就像「錨」一樣將 Rollup 網路錨定到了以太坊主鏈上。就好比是賭場裡裝上了攝像頭,即便是玩撲克的人被打了一悶棍,還是能透過影片記錄證明自己確實贏了錢。

對於交易有效性驗證,ZK Rollup 和 Optimistic Rollup 採取了不同的方法[3]。ZK Rollup 採用零知識證明來保證交易有效。它的安全性建立在密碼學基礎之上,智慧合約僅在交易資料被證明為正確之後才會接受狀態轉換。每次狀態轉換都有一個零知識證明,這保證了鏈上總是對應著一個正確的二層狀態。Optimistic Rollup 採用基於加密經濟學有效性博弈的「欺詐證明」,它無需為每一次狀態轉換都提供證明,只在有人認為狀態轉換有誤的時候提供。因為沉默將被視為同意,所以它要求交易方必須每時每刻都要線上。相比較 ZK Rollup,Optimistic Rollup 的安全性有所降低,它需要採取額外的措施來防止 DDoS 攻擊造成的「默許」。

05

可擴充套件性

Rollup 透過一次鏈上交易可以執行一大批打包後的鏈下交易,主鏈不需要透過執行每筆交易來驗證其有效性,而且交易資料是作為函式引數釋出的,驗證完有效性後就會被丟棄,這樣就不會佔據主鏈的儲存空間。因此 Rollup 可以大幅度提升主鏈的可擴充套件性。

但是這種提升並非沒有限制,雖然只有一次鏈上交易,但是它會受到交易資料本身 gas 成本的制約。以太坊資料的 gas 成本在伊斯坦布林升級前是每位元組 68 單位,而以太坊上每個地址就會佔用 20 位元組,所以如果用以太坊交易的資料結構來表示鏈下交易,gas 費用會非常高,因此 Rollup 對交易資料進行了壓縮。

ZK Rollup 在智慧合約裡用 merkle 樹來記錄地址,這樣地址就可以表示成樹的索引值,地址資料的大小就從原本的 20 bytes 減少到只有 3 bytes 到 4 bytes。每筆交易就被壓縮成 10 幾個位元組,再加上一個約 100-300 位元組的 SNARK,理論上可以將以太坊吞吐量從 32 TPS 提升到約 680 TPS,伊斯坦布林升級後可達到 2000 TPS。下圖是壓縮後 ZK Rollup 每筆交易資料的格式:

Optimistic Rollup 的吞吐量理論上只有 100 TPS,主要原因是上文提到過的,為了支援「欺詐證明」,Optimistic Rollup的每筆交易資料需要包含交易提交者的簽名。每條簽名的大小是 64 bytes,這大大增加了提交上鍊的交易資料的位元組數,從而很快達到 gas 上限。為了減少交易資料的位元組數,一種 BLS 聚合簽名機制被提了出來。如下圖所示, BLS 聚合簽名機制是在操作者收集到所有交易後,將打包後的交易傳送給每個交易提交者簽名,因為每個簽名都是針對相同的資料,所以可以被操作者聚合成一個 BSL 簽名。傳送給鏈上合約的將是壓縮後的交易資料加上聚合後的 BLS 簽名,從而大幅減少了交易資料所消耗的 gas。BLS 簽名可以將 Optimistic Rollup 的吞吐量從100 TPS提升到 450 TPS,伊斯坦布林升級後也可以達到 2000 TPS。

06

延遲

Optimistic Rollup 基於加密經濟學有效性博弈,只有過了1~2周的挑戰期才能確認交易生效。ZK Rollup的延遲相對較小,如果一個打包區塊中有 1000 筆交易,在普通的伺服器上大概需要 20 分鐘可以構造出一個證明。開發者已經提出很多減少延遲的方法,比如採用 GPU 加速可以將零知識證明構造時間壓縮到 1 分鐘。還有一種叫做「即時交易收據」(instant tx receipts)的方法兩種 Rollup 方案都適用。它主要藉助經濟學博弈來完成,就是負責打包的操作員需抵押一部分安全保證金,如果某個交易沒有被打包到區塊中,這筆錢就會被沒收。理論上「即時交易收據」可以將交易確認時間壓縮到 1 秒以內,但是實現相對複雜,安全性有所降低。

07

通用性

通用性方面,Optimistic Rollup 明顯好於ZK Rollup,當然它的設計目標就是支援任意智慧合約。而 ZK Rollup 目前僅適用於支付之類的特定交易,對於通用智慧合約,由於建立零知識證明的成本非常高,部署起來困難較大。為了提高效率, 開發者正在開發專門的零知識證明虛擬機器,比如 ZEXE。它在一定程度上可以縮短建立證明的時間,但是缺點是合約開發者需要大量的專業知識。Matter Labs團隊基於ZK Rollup開發的新一代區塊鏈擴充套件方案 ZK Sync[4],設計開發了一款以委託的方式生成零知識證明的沙盒式虛擬機器,開發者不需要深入瞭解零知識證明領域的技術細節就可以編寫出高效且安全的智慧合約。

08

總結與展望

本文簡要介紹了區塊鏈擴容方案 Rollup 的工作原理,對比分析了兩種 Rollup 方案 ZK Rollup 和 Optimistic Rollup 在可擴充套件性、延遲、通用性、安全性上的優劣。

(可擴充套件性*伊斯坦布林升級後可達到2000 TPS;延遲**使用「即時交易收據」最佳化後可達1秒)

根據以上的對比分析,短期看來 Optimistic Rollup 由於較好的通用性會受到開發者的青睞;但從長期來看,隨著零知識證明虛擬機器的演進,ZK Rollup 會在通用性上不斷提高。它能否主宰智慧合約可擴充套件性的未來呢?這個問題只能留給時間來回答了。

參考文章:

[1]《混合式二層協議的曙光》

[2]《零知識證明–zkSNARK 入門》

[3]《有效性證明和錯誤證明》

[4]《ZK Sync 介紹》

免責聲明:

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

推荐阅读

;