BTC $63,716.70 -2.63%
ETH $1,885.34 -3.77%
BNB $565.88 -1.63%
XRP $1.06 -4.37%
SOL $73.94 -3.70%
TRX $0.3250 -2.02%
DOGE $0.0702 -4.09%
ADA $0.1548 -6.65%
BCH $211.29 -2.48%
LINK $8.39 -4.61%
HYPE $56.00 -6.19%
AAVE $97.52 -2.90%
SUI $0.6774 -6.35%
XLM $0.1716 -6.11%
ZEC $477.88 -5.61%
BTC $63,716.70 -2.63%
ETH $1,885.34 -3.77%
BNB $565.88 -1.63%
XRP $1.06 -4.37%
SOL $73.94 -3.70%
TRX $0.3250 -2.02%
DOGE $0.0702 -4.09%
ADA $0.1548 -6.65%
BCH $211.29 -2.48%
LINK $8.39 -4.61%
HYPE $56.00 -6.19%
AAVE $97.52 -2.90%
SUI $0.6774 -6.35%
XLM $0.1716 -6.11%
ZEC $477.88 -5.61%

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

Summary: 本文將從 Dankrad 的視角出發,通過對 Layer2 的細節作進一步分析,來深入理解為何 Validium 不是嚴格意義上的“Layer2”。
極客 Web3
2023-08-18 11:58:58
收藏
本文將從 Dankrad 的視角出發,通過對 Layer2 的細節作進一步分析,來深入理解為何 Validium 不是嚴格意義上的“Layer2”。

作者:Faust,極客 web3

導語:近日,Danksharding 的提出者 、以太坊基金會的研究員 Dankrad Feist 在推特上發表了一番頗具爭議的言論。他明確指出,不採用 ETH 作 DA 層(數據可用性層)的模塊化區塊鏈不是 Rollup,同時也不是以太坊 Layer2。如果按照 Dankrad 的說法,Arbitrum Nova 和 Immutable X、Mantle 都要從 Layer2 名單裡"除名",因為它們只在 ETH 之外(自己構建了名為 DAC 的鏈下 DA 網絡)披露交易數據。

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

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

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

Dankrad 此言一出,便引來了諸多 Rollup 領域的 Founder 或 Researcher 質疑。畢竟有許多"Layer2"項目為了節約成本,並沒有採用 ETH 作為 DA(數據可用性)層,如果把這些項目踢出 L2 名單,必然波及到相當多的擴容網絡;同時,如果 validium 不算 L2,Plasma 應該也沒資格算作L2。

對此,Dankrad 表示,Plasma 用戶在 DA 不可用時 (就是指鏈下的DA層網絡搞數據扣留,不公開交易數據),仍然可以把自己的資產安全撤出至 L1 ;但相同的情況下,Validium (大多數採用 StarkEx 方案的項目都是 validium)卻可以讓用戶無法撤資至L1,把錢凍住。

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

顯然,Dankrad 打算從"是否安全"來界定一個擴容項目是否為以太坊 Layer2。如果從"安全性"的角度來考量,Validium 在定序器故障 + DA 層發動數據扣留攻擊(隱瞞新數據)的極端情況下,的確可以把用戶資產凍結在 L2 無法提到 L1;Plasma 因在設計上與 Validium 不同,雖然多數時候安全保障不及 Validium,但在定序器故障 + DA 層發動數據扣留攻擊(隱瞞新數據)時,卻允許用戶把資產安全撤離至 L1。所以 Dankrad 的說辭不無道理。

本文打算從 Dankrad 的視角出發 ,通過對 Layer2 的細節作進一步分析,來深入理解為何 Validium 不是嚴格意義上的"Layer2"。

到底怎麼定義Layer2?

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

按照 ethereum.org 網站和多數以太坊社區成員的定義,Layer2 是"給以太坊擴容+繼承以太坊安全性的獨立區塊鏈" 。首先,"給以太坊擴容"就是指分流以太坊無法承載的流量,分擔TPS方面的壓力。而"繼承以太坊安全性",其實可以轉譯為"借助以太坊保障自身安全性"

比如,Layer2 上所有的交易 Tx 都要在 ETH 上完成最終結算 Finalize,數據有錯誤的 Tx 不會被放行;如果要回滾 Layer2 的區塊,要先回滾以太坊區塊,只要以太坊主網不發生類似 51% 攻擊的區塊回滾,L2 區塊就不會回滾。

如果我們更進一步探討 Layer2 的安全性,其實還要考慮許多極端情況。比如,如果 L2 項目方跑路、定序器 Sequencer 故障、鏈下 DA 層掛掉 ,在這些極端事件發生時,用戶能否把自己在 L2 上的資金安全撤出到 L1 上?

Layer2的"強制提款"機制

不考慮L2合約升級/多簽隱患等因素,其實如 Arbitrum 或 StarkEx 都有為用戶設置強制提款的出口 。假設 L2 的定序器發動審查攻擊,故意拒絕用戶的交易/提款請求,或乾脆永久宕機,Arbitrum 用戶可以調用 L1 上 Sequencer Inbox 合約的 force Inclusion 函數,將交易數據直接提交至 L1;如果在 24 小時內,定序器沒有處理這筆需要"強制包含"的交易/提款,該交易會被直接包含進 Rollup 帳本的交易序列中,這就為 L2 用戶創造了一個可強制提款的"安全出口"。

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

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

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

L2 狀態凍結後,用戶可以構造與當前狀態相關的 Merkle Proof,證明自己在 L2 上有 XX 數額的資金,通過 L1 上的逃生艙 Escape Hetch 相關合約來提款。這便是 StarkEx 方案所提供的"全額提款"服務。即便 L2 項目方沒了,定序器永久故障了,用戶還是有辦法把資金撤出 L2。

但這裡存在一個問題:用 StarkEx 方案的 L2 大多是 Validium(比如 Immutable X 和 ApeX),並不會把 DA 所需的數據發布到 ETH,構造當前 L2 狀態樹的信息都存在鏈下。如果用戶無法在鏈下獲取構造 Merkle Proof 的數據 (比如鏈下 DA 層發動數據扣留攻擊),是無法通過逃生艙來提款的。

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

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

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

Validium 和 Plasma 在發生數據扣留攻擊時的區別

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

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2(圖源:eckoDAO)

單憑 stateroot 無法還原出此刻的狀態樹 world state trie ,也就無法知曉每個 L2 賬戶的具體狀態(包含資金餘額),L2 用戶就無法構造對應當前合法 Stateroot 的 Merkle Proof。這便是 Validium 不利的地方。

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

(Merkle Proof 其實就是 root 生成過程中所需的數據,也就是圖中暗色的部分。要構造對應 Stateroot 的 Merkle Proof,必須要知道狀態樹的構造,需要有 DA 數據)

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

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

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

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

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

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

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

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

但 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 數據。

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

同時,欺詐證明機制能在此刻生效的前提,是此刻 L2 的 DA 可用,也即 Plasma 的 Verifier 節點可以獲取此刻的 DA 所涉數據,這樣才能生成此刻的欺詐證明(如果有必要的話)。

那麼一切都很簡單了:Plasma 正常工作的前提是此刻 L2 的 DA 數據可用。如果從此刻開始,L2 的 DA 不可用了,用戶能安全撤資嗎?

這個問題不難分析,假設 Plasma 的窗口期是 7 天,如果從某個時間點 T0 開始,新的 DA 數據就不可用(DAC 發動數據扣留攻擊,不讓誠實的 L2 節點獲取 T0 往後的數據)。因為 T0 及此后一段時間內的合法 Stateroot,是 T0 時刻前提交的,而 T0 時刻前的歷史數據可追溯,所以用戶可以構造 Merkle Proof 來強制提款。

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

即便很多人無法立刻察覺異常,但因為有窗口期存在(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 對應的默克爾證明來提款,因為這會導致雙重支付)

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

所以,鏈下 DA 層的數據扣留攻擊會造成許多安全隱患,但 Celestia 嘗試解決的正是這個問題。此外,因為大多數 Layer2 項目都會提供讓 L2 節點與定序器保持鏈下同步的服務端口,所以 Dankrad 的憂慮其實往往只是理論上的,而不是現實中的。

如果我們用雞蛋裡挑骨頭的態度,再提出更極端的假設:所有的 Plasma 鏈下節點都不可用了,那麼那些沒跑過 L2 節點的普通用戶都無法強制提款到 L1。但這種事情發生的概率,等價於一條公鏈的所有節點集體永久性宕機的概率,可能永遠不會發生。

所以,很多時候,大家只是在談論一些根本就不會發生的事情。正如美劇《切爾諾貝利》裡克格勃副主席對主角說的那段金句:"為何要擔心根本就不會發生的事情呢?"

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

開除 Validium?從 Danksharding 提出者的視角重新理解 Layer2

warnning 風險提示
app_icon
ChainCatcher 與創新者共建Web3世界