對Layer2而言 強制提款與逃生艙功能到底有多重要?

2023-11-08 13:03 極客 Web3


作者:Faust,極客Web3

在現實世界中,幾乎每一棟高樓大廈都有一個不可或缺的要素:安全出口。當火災地震等突發事件降臨時,安全出口就是保障人們生命安全的救命稻草。而在以太坊Layer2這個承載了百億美元資產的托管平台體系中,可以讓用戶把資產安全撤回至Layer1的“強制提款”功能,已然成爲不可或缺的必備設施。

Vitalik在最近的文章“Different types of layer 2s”中也強調,用戶能否順利的把資產從Layer2撤回至Layer1,是一個非常重要的安全指標。

但“順利提款”問題在過去似乎沒有得到大多數人的重視,甚至許多Layer2項目方都沒有上线“強制提款”或“逃生艙”功能。在L2生態體系未成火候的時代,漠視“無需許可的提款”似乎不成問題。但如今Layer2已經承載了120多億美元的資產,已然變成了一棟“太大而不能倒”的大廈。如果這樣的一棟摩天大樓沒有安全出口,後果簡直是不可想象的。

抱着讓廣大讀者重視Layer2安全風險的目的,《極客web3》將在下文以路印協議V3和Arbitrum爲例,爲大家闡明爲何forced withdraw與escape hatch等“無需許可的提款功能”是Layer2不可缺少的一環

(根據L2BEAT dYdX瀏覽器顯示,迄今爲止dYdX強制交易/提款功能,總計被使用過152次,超過100萬美元的大額提款多達7筆)

抗審查性是大問題:如果Sequencer故意拒絕你的請求,怎么辦

過去關於Layer2的科普文章往往有一個問題,就是大多數時候都着重強調“安全性”與表面上的“可用性”,卻忽略了“抗審查性”。即便是在談論去中心化排序器方案時,很多人注意到的也是MEV是否去中心化,而不是抗審查性的改善。

換句話說,大多數人往往注重Layer2的狀態轉換是否有效,排序器能不能盜幣,欺詐證明/有效性證明系統有沒有投入使用,卻忽略了一個不該被忽視的風險:如果Sequencer一直拒絕你的交易請求,或者幹脆長時間故障,甚至停機,這個時候怎么辦?

要知道,在Solana宕機期間,曾有人因爲資產面臨清算而無法及時補倉,使得幾百萬美元的資產面臨風險。此類拒絕用戶請求的場景一旦發生,造成的經濟損失並不可小視。

即便只有個別人可能遭遇此類情況,但如果落到了一些手握大量資金的鯨魚身上,整個市場都可能連帶遭殃(假設某人在以太坊上的Defi借貸協議有幾億美元資產可能在一周內被清算,但他因爲用了Tornado而被OFAC列入制裁名單。此人大部分資金都在OP上,而OP排序器配合OFAC拒絕它的請求)

我們不妨把這個問題投射到avalanche或polygon等獨立於以太坊的公鏈上去分析。如果Avalanche上超過2/3的Validator共識節點決定對你展开交易審查,那么它們可以拒絕把你發起的Txn打包進區塊裏,或者不承認包含你的Txn的區塊。這個時候,你的錢基本就被埋在了這條鏈裏出不來:

除非你能拉攏一些Validator,使得參與審查攻擊的Validator不足2/3,或者你能號召一些人通過社會共識的方法,把Avalanche分叉。顯然在這個時候,你還是有辦法把資金快速撤出Avalanche的,並且我們要考慮到,超過2/3的Validator聯合起來對某個地址發起交易審查,本身就需要一段時間去達成,這會給被審查的用戶留下充沛時間“逃出生天”。

但在Layer2上,這種情況可能大不相同。Layer2的Sequencer一般都是由官方自己在運行,如果Sequencer想要對你展开審查攻擊,它可以把你的錢“凍結在Layer2”,也就是徹底拒絕你發起的,把資產從L2跨到L1的交易請求。顯然按照L2的運作機理,如果你不能繞开排序器執行提款操作,是完全可能被Sequencer把資產凍結在L2不能轉移走的。

那么該怎么解決這種問題呢?其實說白了就是,怎么實現“無需許可”的提款功能,讓用戶在被Sequencer或Layer2項目方審查的情況下,安然無恙的把資產撤回到Layer1上?有一些項目方提出了去中心化Sequencer的方案,但這治標不治本,如果這些數量極爲有限的排序器聯合起來審查你,還是可以把你的資產“凍結”,況且POS節點的反女巫也是個棘手的問題(參考Multichain事件)。

真正最有效的辦法,是直接在L1鏈上設置一個“出口”,讓用戶在長時間得不到Sequencer響應時,通過L1上的專用出口把資金從L2撤出。

路印協議V3版本的強制提款與破產清算模式

這裏我們以路印協議的V3版本爲例,它針對用戶發起的強制提款分列了兩種不同情況,第一種情況是:

用戶直接在Layer1上通過ExchangeV3合約中的forcedWithdraw函數發起強制提款,聲明自己在路印協議的L2账戶是哪個,以及要提走哪種Token。之後,ExchangeV3合約會拋出一個鏈上事件,提示有人發起了強制提款請求。由於路印協議的所有節點(包括Sequencer)都運行着Geth客戶端,所以會從以太坊區塊中獲知,有人發起強制提款並觸發了對應的鏈上事件。

要注意的是,強制提款不會被立刻處理,而是置入pendingForcedWithdrawals隊列,處於待處理狀態。Sequencer注意到有人在Layer1發起強制提款後,一般會在15天內觸發ExchangeV3合約中的Process函數,在以太坊鏈上把Token轉給提款發起者(從L2項目方在以太坊鏈上的存款地址,給提款者轉錢)。 

如果Sequencer在15天內沒有響應用戶的強制提款請求,用戶可以調用notifyForcedRequestTooOld函數,讓ExchangeV3合約拋出名爲WithdrawalModeActivated的事件,通知路印協議的全節點,破產清算模式被激活了。

如果破產清算模式被激活,此時路印協議V3會停止接收Sequencer提交的新L2區塊,也就是說這個時候路印協議整個就停止了運轉。這個過程會持續至少30天。

但在破產清算模式下,用戶依然可以在Layer1上把自己的資產提走,只不過需要提交merkle proof證明自己的資產狀況/狀態,在L2的狀態樹上是可查的。(證明自己在Layer2的資產余額,和自己發起提款時聲明的金額是一致的

路印協議的這種破產清算模式,在L2BEAT上也被稱作Escape Hatch逃生艙機制。這種模式的觸發有個先決條件,就是排序器在規定的時間內沒有響應用戶的強制提款請求,或者Sequencer長期故障或停機。此時用戶可以通過手動觸發的方式,讓Rollup合約進入凍結模式/停止運轉。然後用戶可以構造merkle Proof證明自己在Layer2上的資產情況,從L2項目方在L1的存款地址中,把屬於自己的那部分資產提走。

在StarkEx的文檔中,還爲這一過程畫了專門的示意圖。如果L2用戶在L1提交的Forced Withdrawal請求在7天窗口期結束時,未得到定序器響應,則該用戶可以調用freeze Request功能讓L2進入凍結期。此時,L2定序器將無法在L1上更新L2的狀態,L2狀態凍結後要過1年才能解凍。之後用戶可以提交merkle proof並提款。

但要構造Merkle Proof,需要先獲知完整的L2狀態樹,也就是需要找一個L2全節點索要數據,同時需要一段代碼來生成merkle Proof,顯然這需要一定的技術門檻。爲了方便廣大用戶,L2BEAT此前曾聲明,Layer2應該設置一批權限开放且代碼开源的全節點,幫用戶獲知L2上全體账戶的狀態(包含余額、交易次數等)。這一舉動其實也說明了強制提款與逃生艙機制的重要性。

Arbitrum的“強制包含交易”功能

但強制提款/逃生艙似乎不是唯一的抗審查解決方案。比如,Arbitrum採用了“強制包含交易”的方式,用戶可以先在L1上的delayed Inbox合約提交需要被Sequencer處理的Txn/withdraw,如果Sequencer超過24小時沒有處理,用戶可以調用L1上Sequencer Inbox合約的force Inclusion函數,讓Txn直接被包含進Arbitrum的交易序列中(拋出一個鏈上event告知Arbitrum全節點,幾筆delayed Inbox上有記錄的Txn需要被包含進L2的账本中)。

相比之下,Arbitrum的方法要更簡單些,但這種方法還是略帶不足:因爲它只拋出一個鏈上事件告訴Arbitrum節點,有幾筆被排序器忽略了的交易需要被包含進L2最長鏈中,而不是像路印協議和StarkEx的 破產模式/逃生艙 那樣允許用戶直接在L1上把錢提走。如果Arbitrum的挑战者節點聯合起來發動審查攻擊,似乎還是可以讓用戶的錢被凍結在L2。

所以說Arbitrum的force Inclusion還不夠permissionless,雖然只要有一個誠實節點愿意發布欺詐證明,就可以指出排序器忽略了某個用戶的forceInclusion請求,但這還是引入了一定程度的信任假設,只不過程度很輕微。

更確切的說,“需要被強制包含的交易”是要被至少1個ARB的挑战者節點認可的,這些節點目前有9個,它們有權決定給哪些L2-L1之間的跨鏈消息放行,現在也只有它們能發布欺詐證明。只要這9個節點聯合串謀,理論上還是可以讓用戶的“強制交易”無效。

所以,目前Arbitrum的強制包含交易/提款,不像路印和StarkEx的破產清算模式那樣無需L2節點許可。但L2BEAT還是對Arbitrum的這個方案給予了很高的評價。因爲在未來,Arbitrum會上线名爲BOLD的Permissionless的欺詐證明發布機制,挑战者節點屆時將難以或無法串謀(現在其實就很難串謀)。

按照L2BEAT的數據,目前TVL超過5000萬美元,且沒有針對Sequencer Failure或Proposer Failure中的某項提供應對舉措的,包括:OP Mainnet、Base、zkSync Era、Mantle、Starknet、Linea、Polygon zkEVM、Metis。這些L2都可以在極端情況下導致用戶資產被凍結在L2提不出來。

所以顯而易見,強制提款或破產清算模式有其存在的必要性,雖然目前它只是依靠用戶-排序器這個對手方之間的博弈來發揮作用,還稱不上真正意義的“隨時可提款”(Arbitrum有24小時延時且可能失敗,路印最長15天延時,StarkEx有7天最大延時),但顯然“有總比沒有好”。而且強制提款的延時問題,相信可以在未來靠着更精巧的機制設計被妥善解決(目前主要顧及到某些MEV科學家可能利用forceInclusion發起搶跑交易,所以要引入延時。具體詳情可以閱讀各大L2項目方的官方資料)。

隨着去中心化Sequencer被越來越多L2納入路线圖,以及Vitalik爲首的以太坊基金會不斷向人們加強對Layer2安全性的教育,類似強制提款的抗審查交易功能勢必會被越來越多人所重視,這將使得以太坊Layer2體系更接近一個抗審查、去信任化的金融基礎設施體系。如果Layer2實現了去信任化的資金進入進出方式,相信將會有更多做市商與流動性提供者進入L2基礎設施,爲整個web3的mass adoption向前推進一步。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

標題:對Layer2而言 強制提款與逃生艙功能到底有多重要?

地址:https://www.sgitmedia.com/article/14997.html

相關閱讀: