原文標題:《開除Validium? 從Danksharding 提出者的視角重新理解Layer2》
原文作者:Faust,極客web3
導語:近日,Danksharding 的提出者、以太坊基金會的研究員Dankrad Feist 在推特上發表了一番頗具爭議的言論。他明確指出,不採用 ETH 作 DA 層(資料可用性層)的模組化區塊鏈不是 Rollup,同時也不是以太坊 Layer2。如果按照 Dankrad 的說法,Arbitrum Nova 和 Immutable X、Mantle 都要從 Layer2 名單裡「除名」,因為它們只在 ETH 之外(自己建立了名為 DAC 的鏈下 DA 網路)披露交易資料。

同時,Dankrad 也表示,像Plasmas 和狀態通道這種不需要鏈上資料可用性(Data Availability)來確保安全的方案仍算是Layer2,但Validium(不用ETH 作DA 層的ZKRollup)不算Layer2。


Dankrad 此言一出,便引來了許多Rollup 領域的Founder 或Researcher 質疑。畢竟有許多「Layer2」專案為了節省成本,並沒有採用ETH 作為DA( 資料可用性) 層,如果把這些專案踢出L2 名單,必然波及到相當多的擴容網路;同時,如果validium 不算L2,Plasma應該也沒資格算L2。
對此,Dankrad 表示,Plasma 用戶在DA 不可用時(就是指鏈下的DA 層網路搞資料扣留,不公開交易資料),仍然可以把自己的資產安全撤出至L1;但相同的情況下,Validium(大多數採用StarkEx 方案的項目都是validium)卻可以讓用戶無法撤資至L1,把錢凍住。

顯然,Dankrad 打算從「是否安全」來界定一個擴容項目是否為以太坊Layer2。如果從「安全性」的角度來考慮,Validium 在定序器故障+ DA 層發動資料扣留攻擊( 隱瞞新資料) 的極端情況下,的確可以把用戶資產凍結在L2 無法提到L1;Plasma 因在設計上與Validium 不同,雖然多數時候安全保障不及Validium,但在定序器故障+ DA 層發動資料扣留攻擊( 隱瞞新資料) 時,卻允許使用者把資產安全撤離至L1。所以 Dankrad 的說辭不無道理。
本文打算從 Dankrad 的視角出發,透過對 Layer2 的細節作進一步分析,來深入理解為何 Validium 不是嚴格意義上的「Layer2」。

依照ethereum.org 網站和多數以太坊社群成員的定義,Layer2 是「給以太坊擴容+ 繼承以太坊安全性的獨立區塊鏈」。首先,「為以太坊擴容」是指分流以太坊無法承載的流量,分擔 TPS 方面的壓力。而「繼承以太坊安全性」,其實可以轉譯為「借助以太坊保障自身安全性」。
例如,Layer2 上所有的交易Tx 都要在ETH 上完成最終結算Finalize,資料有錯誤的Tx 不會被放行;如果要回滾Layer2的區塊,要先回滾以太坊區塊,只要以太坊主網不發生類似51% 攻擊的區塊回滾,L2 區塊就不會回滾。
如果我們更進一步探討 Layer2 的安全性,其實還要考慮許多極端情況。例如,如果 L2 專案方跑路、定序器 Sequencer 故障、鏈下 DA 層掛掉,在這些極端事件發生時,使用者能否把自己在 L2 上的資金安全撤出到 L1 上?
不考慮L2 合約升級/ 多簽隱患等因素,其實如Arbitrum 或StarkEx 都有為用戶設定強制提款的出口。假設L2 的定序器發動審查攻擊,故意拒絕使用者的交易/ 提款請求,或乾脆永久宕機,Arbitrum 使用者可以呼叫L1 上Sequencer Inbox 合約的force Inclusion 函數,將交易資料直接提交至L1;如果在24 小時內,定序器沒有處理這筆需要「強制包含」的交易/ 提款,該交易會被直接包含進Rollup 帳本的交易序列中,這就為L2 用戶創造了一個可強制提款的“安全出口」。

相較之下,有逃生艙Escape Hetch 機制的StarkEx 方案要有過之無不及。如果 L2 使用者在 L1 提交的 Forced Withdrawal 請求在 7 天視窗期結束時,未得到定序器回應,則該使用者可以呼叫 freeze Request 功能讓 L2 進入凍結期。此時,L2 定序器將無法在 L1 上更新 L2 的狀態,L2 狀態凍結後要過 1 年才能解凍。


L2 狀態凍結後,使用者可以建構與目前狀態相關的Merkle Proof,證明自己在L2 上有XX 金額的資金,透過L1 上的逃生艙Escape Hetch 相關合約來提款。這便是 StarkEx 方案所提供的「全額提款」服務。即便 L2 專案方沒了,定序器永久故障了,使用者還是有辦法把資金撤出 L2。
但這裡有個問題:用StarkEx 方案的L2 大多是Validium(如Immutable X 和ApeX),不會把DA 所需的資料發佈到ETH,構造目前L2 狀態樹的資訊都存在鏈下。如果使用者無法在鏈下取得建構 Merkle Proof 的資料(例如鏈下 DA 層發動資料扣留攻擊),是無法透過逃生艙來提款的。

至此,文章開頭提到的Dankrad 認為Validium 不安全的原因,其實很明確了:因為Validium 不像Rollup 一樣把DA 的資料發到鏈上,所以用戶可能無法建構出「強制提款」所需的Merkle Proof。


事實上,Validium 的定序器只在L1 鏈上發布L2 最新的Stateroot(狀態樹的根),再提交一個Validity Proof(ZK Proof),證明新的Stateroot 生成過程涉及的狀態轉換(用戶資金變化),都是正確的。


(圖源:eckoDAO)
但單憑stateroot 無法還原出此刻的狀態樹world state trie ,也就無法知曉每個L2 帳號的具體狀態(包含資金餘額),L2 使用者就無法建構對應目前合法Stateroot 的Merkle Proof。這便是 Validium 不利的地方。

(Merkle Proof 其實是root 產生過程中所需的數據,也就是圖中暗色的部分。 p>
這裡必須要強調下DAC 這個東西。 Validium 的DA 所涉數據,例如定序器最新處理的一批交易,會同步給名為數據可用性委員會DAC(Data Availability Committee)的L2 專屬DA 網絡,DAC 由多台節點伺服器構成,一般由L2 官方和社區成員或其他單位負責運作和監督(但這只是表面上的,實際上DAC 成員都有誰,外界很難查證)。

有趣的地方在於, Validium 的DAC 成員需要經常在L1 提交多簽,證明L2 定序器在L1 提交的新Stateroot 和Validity Proof,與DAC 同步到的DA 資料能對上號。 DAC 的多簽提交後,新的 Stateroot 和 Validity Proof 才會被認為是合法的。

目前Immutable X 的DAC 採用5/7多簽,dYdX 雖然是ZKRollup,但也有DAC,用的是1/2 多簽。 (dYdX 只在L1 發布State diff 即狀態變化,而非完整交易資料。但取得了歷史記錄裡的State diff,就可以還原全部L2 位址的資產餘額,此時就可以建構Merkle Proof 來全額提款)。

Dankrad 的觀點不無道理。 Validium 的DAC 成員如果合謀,發起資料扣留攻擊,不讓其他L2 節點同步此刻的最新數據,並且更新此刻L2 的合法Stateroot,使用者無法建構此刻合法root 對應的Merkle Proof 來提款(因為此刻往後的DA 資料不可用了,可用的是先前的DA 資料)。

但Dankrad 考慮的只是理論上的極端情況,現實中大多數Validium 定序器都會即時的把新處理的交易資料廣播給其他L2 節點,其中不乏誠實節點。只要有 1 個誠實節點能夠及時取得 DA 數據,使用者就可以從 L2 全身而退。
可理論上存在於 Validium 身上的問題,為何不存在於 Plasma 身上?這是因為 Plasma 判定合法 Stateroot 的方式,和 Validium 不同,有詐欺證明窗口期的緣故。 Plasma 是 OPRollup 之前的 L2 擴充方案,與 OPR 一樣靠詐欺證明保證 L2 的安全。
Plasma 與OPR 一樣有窗口期的設定,定序器發布的新stateroot 不會立刻判定為合法,要等窗口期close 且沒有L2節點發布詐欺證明。所以 Plasma 和 OPR 的當前合法 Stateroot,都是幾天以前提交的(這就好比我們看到的星光,其實都是很久以前發出的),而用戶往往可以獲得過去時刻的 DA 數據。

同時,詐欺證明機制能在此刻生效的前提,是此刻L2 的DA 可用,也即Plasma 的Verifier 節點可以獲取此刻的DA 所涉數據,這樣才能產生此刻的欺詐證明( 如果有必要的話)。
那麼一切都很簡單了:Plasma 正常運作的前提是此刻 L2 的 DA 資料可用。如果從此刻開始,L2 的 DA 不可用了,使用者能安全撤資嗎?
這個問題不難分析,假設Plasma 的視窗期是7 天,如果從某個時間點T0 開始,新的DA 資料就不可用(DAC發動資料扣留攻擊,不讓誠實的L2 節點取得T0 往後的資料)。因為 T0 及此後一段時間內的合法 Stateroot,是 T0 時刻前提交的,而 T0 時刻前的歷史數據可追溯,所以用戶可以構造 Merkle Proof 來強制提款。

即便很多人無法立刻察覺異常,但因為有窗口期存在(OP 是7 天),只要T0 時刻提交的Stateroot 還未合法化,且T0 之前的DA 資料可追溯,用戶就可以把錢安全撤出L2。
至此我們大致可以理清楚Validium 和Plasma 在安全性上的區別:
Validium 的定序器發布Stateroot 後,只要立刻發布Validity Proof 和DAC 多簽,就可以使其合法,成為最新的合法Stateroot;如果使用者和誠實L2 節點遭遇資料扣留攻擊,無法建構目前合法Stateroot 對應的Merkle Proof,就無法提款到L1。
而 Plasma 提交新的 Stateroot 後,要等窗口期結束才能合法,此時的合法 Stateroot 是過去提交的。因為有視窗期(ARB 是3 天,OP 是7 天)存在,即便新提交的Stateroot 的DA 資料不可用,使用者也有目前合法Stateroot 的DA 資料(合法root 是過去提交的),有足夠的時間強制提款到L1。
所以,Dankrad 說的話有道理。當發生資料扣留攻擊時,Validium 存在把用戶資產困在 L2 的可能,但 Plasma 並不存在這個問題。
(下圖中Dankrad 說的有一點不對,Plasma 應該不允許構造過時的合法Stateroot 對應的默克爾證明來提款,因為這會導致雙重支付)

所以,鏈下DA 層的資料扣留攻擊會造成許多安全隱患,但Celestia 嘗試解決的正是這個問題。此外,因為大多數 Layer2 專案都會提供讓 L2 節點與定序器保持鏈下同步的服務端口,所以 Dankrad 的憂慮其實往往只是理論上的,而不是現實中的。
如果我們用雞蛋裡挑骨頭的態度,再提出更極端的假設:所有的Plasma 鏈下節點都不可用了,那麼那些沒跑過L2節點的普通用戶都無法強制提款到L1。但這種事情發生的機率,等價於一條公鏈的所有節點集體永久性宕機的機率,可能永遠不會發生。
所以,很多時候,大家只是在談論一些根本就不會發生的事情。正如美劇《切爾諾貝利》里克格勃副主席對主角說的那段金句:「為何要擔心根本就不會發生的事情呢?」
歡迎加入律動 BlockBeats 官方社群:
Telegram 訂閱群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方帳號:https://twitter.com/BlockBeatsAsia