本月初,StarkWare 團隊推出了全新的以太坊主網layer 2 擴展方案。

這個全新的項目—— StarkEx,沒有完全按照已被大眾接受的現有layer 2 架構(如zkRollup、Optimistic Rollup,或Plasma)來做。 StarkWare 的聯合創始人Eli Ben-Sasson 將這種新的layer 2 架構稱為“ Validium ” —— 這個名字獲得Vitalik 的背書,因此“ Validium ” 的叫法應該是板上釘釘的事。

本期Build Blockchain 中,我們會通過經典的二階矩陣,重新回顧以太坊生態系中出現過的layer 2 設計;最終引出Validium 作為收尾,探討這個新方案的利弊。

Layer 2 二階矩陣

以太坊layer 2 的擴展研究的演進之路已經成為現實中許多工程項目的研究案例。然而理想很豐滿,現實很骨感,很多具有前瞻性的想法,直到真正實踐的時候,工程師才會意識到可行的方案中充滿著權衡及折中的考慮。經過多年的研究和嘗試,以太坊layer 2 生態的擴展方案可以用二階矩陣做歸結(我第一次看到這麼總結的是StarkWare 團隊的Avihu Levy )。

在區塊鏈layer 1 中,所有的計算過程和數據存儲都在主鏈進行(交易數據存在區塊中,全節點執行所有計算過程);但layer 2 不同,我們可以根據layer 2 如何解決這兩個擴展相關的瓶頸問題(計算& 數據存儲)來對他們分類,正如上圖的二階矩陣所示。讓我們繼續完成這個矩陣,最終看看Validium 應該定位在哪。

Plasma

Plasma 由Vitalik Buterin 和Joseph Poon 在2017 年共同提出;Plasma 作為被寄予厚望的理論思想,可以說是開啟了以太坊擴展研究的先驅。我們將其放在矩陣右下角:

從本質來說,Plasma 的思想相對直觀。為了獲得更好的擴展性,Plasma 將計算和數據存儲都遷移到layer 2 進行;由layer 2 的執行者周期性地向主鏈遞交Merkle 根形式的“狀態承諾” 。如果執行者遞交無效的狀態,用戶可以向主鏈上的智能合約提供錯誤性證明(fraud proof);一旦確認執行者出現欺詐行為,則智能合約會罰沒他的保證金。

雖然這個想法簡單優雅,但細節實現起來卻是困難重重—— 其中一個問題就出在數據可用性( data availability )。雖然說我們可以通過錯誤性證明,使得提供無效承諾的執行者在主鏈上遭到懲罰;但用戶如果想要提供錯誤性證明,首先得取得構造出錯誤承諾的錯誤數據。這時候問題就來了—— 如果plasma 的執行者拒絕在主鏈上公開數據,那用戶能怎麼辦? (這會導致主網上記載的layer-2 狀態被推進到錯誤的狀態,且無法對執行者追責)

針對這個問題, Plasma 衍生出一些相應的方案,如延長資產從layer 2 退出的時間——當出現作惡行為,就能允許大量資產從Plasma 鏈退出。但經過這些年的摸索,可行的方案還沒有真正實現;這也促使二階矩陣其他像限的方案的出現。

zkRollup

下一個值得關注的方案被放在Plasma 斜對角象限——也就是zkRollup;有意思的是,zkRollup 是由某個以太坊研究員提出的,而非Vitalik Buterin 。

zkRollup 通過一種間接的方式解決了數據可用性問題—— 將所有layer 2 上的交易數據,作為參數發送到主鏈上的某個智能合約內;這意味任何人都能通過觀察區塊鏈上的“calldata (數據調用)” 來獲得layer 2 的所有數據,但這同時讓zkRollup 能帶來的可擴展性優勢僅限於計算這一個維度上了。

Plasma 設計了錯誤性證明激勵機制,來保證計算的正確;而zkRollup 則是靠著在主鏈完成零知識證明,保證無效的狀態絕不會發生。因為所有計算都被“匯總” 到證明里,所以無需信任或是檢查執行者。

另外,zkRollups 對數據存儲方面也帶來了一定程度上的擴展性提升。舉例來說,zkRollups 可以發送壓縮過的數據給智能合約,而且全節點不需要將calldata 存儲在活躍狀態裡面,減輕了全節點的使用負擔;在zkRollups 鏈上無需包含簽名數據,因為零知識證明就足以證明交易的有效與否。

zkRollup 強大的功能卻也成為它主要的短板:這些強大的功能依託於零知識證明—— 一種非常前沿的密碼學方法。 zkRollup 除了很難安全部署,大眾對當前可用的零知識證明接受度也不高,所以現有的zkRollup 技術只專注於應用在某幾個特定項目,如Loopring 的去中心化layer 2 交易所。

Optimistic Rollup

為了在layer 2 也能使用智能合約,研究者們開始探索一種“與zkRollups 架構相似,但不依靠零知識證明” 的擴展方案。有個現成的方案是重新採用交互式錯誤性證明,也就是接下來我們要談到的Optimistic Rollups 。

前面我們已經聊過Plasma 和zkRollup,那麼Optimistic Rollup 也很好理解。 Optimistic Rollups 保留calldata ,可以在主鏈獲得所有layer 2 的數據;同時Optimistic Rollup 採用錯誤性證明(跟Plasma 方案一樣),對提交無效狀態的執行者進行懲罰。

相比於Plasma 和zkRollup, Optimistic Rollup 做了一些權衡,所以帶來的擴展性提升幅度最小。但這也是為什麼Optimistic Rollup 如此令人感興趣,因為Optimistic Rollup 不依賴於什麼過於前沿的技術或懸而未決的問題,實際推廣中Optimistic Rollup 更好落地。

有多個團隊(比如“Optimism Group” )都已接近將Optimistic Rollup 架構部署到主網上。

Validium

最後,終於盼來二階矩陣中最後一個空格了!這個像限裡我們要填入剛完成命名的Validium,並討論Validium 方案的首個落地實現—— StarkEx 。

Validium 選擇將layer 2 的交易數據放在鏈下,因而比rollup 架構有著更高的擴展性。驗證計算方面,Validium 不像Plasma 依托詐欺證明,而是採用零知識證明。如先前在討論zkRollup 時提到的,這樣做會導致Validium 在目前的應用部署,只能局限於特定目的(普適性低),比如StarkEx 就是面向去中心化交易所的方案。

但這些權衡使得Validium 在某些方面優於Plasma 。在主網進行零知識證明驗證能避免執行者提供無效狀態,也能降低執行者不公開數據造成的後果。舉例來說,想要勾結執行者,讓狀態錯誤地轉變為“把他人的錢轉到自己賬戶” 是不可能辦到的;因此Validium 不需要在協議中設計“大量資金退出” 激勵博弈,也不需要延長資金從layer 2 退出的時間。

正如其他研究者指出的,零知識證明並不是解決數據可用性問題的萬靈丹:比如(惡意)執行者修改自己所控制的賬戶的狀態是沒有問題的,然後積壓關於這些交易的數據,這會導致某些用戶想退出資金時,無法提供Merkle proof 。

這種攻擊在本質上就是凍結layer 2 上的賬戶,也為執行者的受賄行為大開方便之門—— 執行者可以拒絕提供某用戶需要的狀態,以此進行勒索或受賄。

為了避免此類攻擊發生,StarkWare 團隊使用了一種手段,我稱之為“engineering hack (工程黑客)”技術。這個術語我用得很親切,因為我整個職業生涯中就時常與“engineering hack ”打交道。 StarkEx 系統中包含了一個“數據可用性委員會” —— 委員負責對數據簽名,並保證數據始終可用。只要其中有一位委員在線且他是誠實的,用戶就一定能獲得退出資金需要的數據。

Validium 不是最完美的方案,但它可能是目前各種場景最能接受的一種方案,但要記住每件事情都有其權衡及折中的考量。相較於主鏈上完全去信任的DEX ,StarkEx 交易所的確面臨更高的第三方風險;但作為相應的優點,StarkEx 交易所在性能上高出DEX 幾個量級——高頻交易者非常看重這個優點。而相較於傳統的中心化交易所,Validium 仍然安全得多,也最大程度地去信任化。

生產過程公開化

正如我先前提到的,以太坊layer 2 的擴展研究是工程領域很好的例子,因為原先工程領域那些放在檯面下、不為人知的研究過程,在以太坊中都能看得一清二楚。當然如果有人對其看似曲折而緩慢的發展過程冷嘲熱諷,我也不會覺得太驚訝。

在大多數研究的開始階段,會有許多方案的迭代轉換發生在設計檯面下;隨著工程師被迫直面理論與現實的差距,一個可實施的方案真正需要做的權衡,才會成為關注點。對於以太坊layer 2 擴展研究來說,這些不同方案的發掘過程是直接放在檯面上討論的;業內的大牛和方案支持者們都能夠詳細的審查這些方案,貢獻自己的心力。

就我來說,我覺得以太坊layer 2 生態非常健壯,研究者和開發者通過反複試驗,煞費苦心地制定出layer 2 的設計框架。現在許多的團隊都在加緊尋找能夠滿足用戶實際需求的具體的解決方案,這過程當然包含很多權衡和折中。考慮到最近幾個月以太坊layer 2 的發展,以及以太坊主網越來越擁堵的問題,我認為layer 2 方案已經箭在弦上、蓄勢待發。我猜測在接下來12~18 個月內,就能看到layer 2 方案套用到實際應用中。

讓我們拭目以待。