Layer 2 擴容解決方案是當前以太坊社區乃至整個區塊鏈技術圈最熱門的話題,而 Arbitrum 在率先部署主網測試版之後,又獲得 Uniswap、Compound 等核心 DeFi 項目的支持,無疑成為了當下最引人注目的 Layer 2 方案。
對於打算從以太坊主網遷移到 Layer 2 網路的用戶來說,Layer 2 方案的安全機制是其最關心的議題之一。本文將全面解析 Arbitrum 的安全機制,包括:Arbitrum 是如何繼承以太坊安全性的、為什麼挑戰期設置為 7 天、如何防禦審查攻擊等。
繼承以太坊安全性
大家都知道 Layer 2 相比其他擴容方案,最大的優勢之一就是完全繼承以太坊安全性,但可能大多數人知其然而不知其所以然,Arbitrum 到底是如何繼承以太坊的安全性的呢?
首先我們再回顧下 Optimistic Rollup 方案的主要特點:
在 Rollup 方案中,交易數據被寫入 L1 (作為 calldata),但合約的實際計算和存儲則是在 L2 上完成,以此來實現擴容;
某個驗證者(Validator),會將一個斷言提交到 L1,可以理解為該斷言就是將一個 Rollup 區塊內的所有交易、結果打包到了 L1 的一筆交易里;
而 Optimistic 主要是指系統對待斷言的態度是樂觀的,即當一個斷言發布時,它不需要包含任何保證其有效性的附帶證明,相反,會有一個時間窗口供任何質疑的人去挑戰。挑戰成功,則這個斷言包含的所有交易都將被回撤,發布斷言的驗證者將被沒收所有押金;挑戰失敗 / 無人挑戰,則斷言被接受並獲得終局性。
了解了具體方案,我們再從幾個角度考量 Arbitrum 是如何繼承以太坊安全性的。
數據可用性
在 L2 上執行的所有交易,首先都會被提交到 L1 上運行的 Inbox 智能合約中,即作為 calldata 寫入 L1。任何人都可以通過這些數據,還原 L2 上的所有交易,並將 L2 恢復到中斷之前的正確狀態。這些數據的可用性是通過 L1 來保證的,也因此人們完全不用擔心 L2 的故障或者下線會導致自己在 L2 上的資產受損。
AnyTrust
AnyTrust 是 Rollup 協議的關鍵安全屬性,它表示任何一個誠實的驗證者都可以強制確認 L2 鏈的正確執行,也就是說無論有多少想作惡的人試圖阻止你,你或你僱傭的人都可以強制正確處理你自己的交易,你無須信任任何第三方。
緊急退出機制
目前 Arbitrum 並沒有專門定義緊急退出機制,但一系列的安全機制已經確保了用戶可以達成緊急退出的目的:
首先,數據可用性確保了用戶在二層的資產、數據隨時可以從 L1 恢復,永遠不會丟失;
其次,任何用戶都可以將交易請求發送到 L1 的 Inbox 合約中,來強制發起提現;
最後,AnyTrust 機制確保了用戶自己就可以強制 L2 正確的處理這筆提現交易。
以上三點,用戶都無須信任任何第三方,這充分表明 Arbitrum 完全繼承了以太坊的安全性,是 Trustless 的。
為什麼挑戰期是 7 天
Arbitrum 是多輪互動式 Rollup 方案,方案會首先樂觀的認為驗證者提出的斷言是正確的,直到在挑戰期內由其他驗證者提出挑戰或反駁。大多數情況下並不會出現挑戰,因此整個系統得以更快速和低成本的推進執行。
顯而易見,挑戰期越長,整個系統會越安全,但同時用戶體驗則會越差(因為用戶提款時需要等待一個挑戰期結束),所以如何找出挑戰期的最優時長?
Arbitrum 團隊提出了這樣的模型來計算最優挑戰期時長:
假設一個挑戰期為 C 個區塊的時長,攻擊者可以獲得的最大收益為 L2 上的所有資產 V,則攻擊者得到的預期收益為:V exp(-AC),註:exp 指 e 的指數函數,A 為某個常數,AC 前的負號指 C 和預期收益成反比;
為了應對攻擊,斷言者需要質押的資產遠遠大於攻擊可得的收益,我們假設為 10 倍,則斷言者的成本為 10V exp(-AC)I,I 為資金利率;
我們再假設提現用戶被鎖定在挑戰期內的提現資金為 CWV (W 為小數,WV 即 L2 總資產的一部分,每一個時間點將有 C 個區塊未結束挑戰),則用戶的資金成本為 CWVI;
最佳挑戰期時長即斷言者和提現用戶的資金總成本最低,即 C 取何值時,10V exp(-AC)I+CWVI 最小。V 和 I 在前後兩項中都存在,因此不影響最小點,可將其約掉,我們只需對 C 求導,再令倒數等於 0,然後解出 C:
C = ln(10A/W)
現在我們將某個合理數值代入上面的公式,即可得到一個粗略的最優挑戰期。
假設一個區塊的時間內持續審查的成功率高達 99.99%,則 A=-ln(0.9999)=0.0001;
再假設每天都有 1% 的資金需要取出,按 15 秒 1 個區塊計算,每個區塊的取款比例約為 W=0.000002;
代入公式得出最優挑戰期為 C=62146 個區塊,即 10.79 天,這與 Arbitrum 團隊最終選擇的 7 天最優挑戰期已經非常接近。
如何防禦審查攻擊
這一節我們討論 Arbitrum 如何應對主要的 4 種審查攻擊:分叉攻擊、拒絕服務攻擊、阻塞攻擊、飽和攻擊。
分叉攻擊:礦工串通(或被賄賂)棄置包含正常挑戰的區塊,並通過分叉,使另一條沒有包含任何挑戰的區塊鏈被接受。
首先,由於挑戰者的存在,一旦發生分叉攻擊,必然會被某個挑戰者發現。而當大家發現所處的區塊鏈存在算力壟斷者(這是分叉攻擊的前提條件),並且會為了利益不受約束的破壞規則時,對於這個區塊鏈將會是毀滅性的打擊,Arbitrum 是否採取挑戰期設計模式已經無關緊要了。
拒絕服務攻擊:礦工密謀(或被賄賂)在出塊時不打包正常的挑戰。
我們假設壟斷者控制了 90% 的算力,挑戰窗口期為 50 個區塊,那麼需要連續 50 個區塊都由壟斷者打包才能完成攻擊,其概率為 0.9 的 50 次方,僅為 0.5%,而實際的挑戰期遠遠多於 50 個區塊,因此攻擊成功概率極小。而在 Arbitrum 的設計中,每次攻擊失敗,攻擊者都將支付大量的罰金,所以發起拒絕服務攻擊對壟斷者而言是相當不經濟的。
阻塞攻擊:攻擊者通過傳統的拒絕服務攻擊(DoS),使得其他人無法提出挑戰(無法發出包含挑戰的交易)
由於只要出現一個正直的挑戰者,攻擊就會失敗,所以攻擊者必須阻止「所有」可能的挑戰者,如果挑戰者足夠多,這是很難完成的。更進一步的,利益相關方可能會僱傭暗中監視者,它們作為後備方案,只有在參與方來不及或難以發出挑戰時才介入,攻擊者根本無法提前辨別這些潛伏的挑戰者,自然也沒辦法對其發起 DoS 攻擊。
飽和攻擊:攻擊者在很短的時間內提出大量的鏈上斷言,讓其他人來不及在時間窗口內對所有斷言進行檢查和挑戰。
Arbitrum 防禦飽和攻擊的方法是對提出斷言的頻率進行限制,保證協議在設定的挑戰窗口期內的任何時間點,全網都有足夠的能力去檢查待處理的斷言和挑戰。具體來說,會針對一條 Rollup 區塊鏈的智能合約處理能力實施速度限制,使得即使存在某個能快速提出大量斷言的人,最終也不得不慢下來。
綜上所述,我們基本上不需要對分叉攻擊過於擔心,因為存在一個作惡的算力壟斷者讓這條區塊鏈毫無吸引力;至於另外三種審查攻擊,Arbitrum 都能夠通過合理的設計和實踐進行有效的防禦。
Sequencer Mode 的優勢和風險
Sequencer Mode 是 Arbitrum 的一個可選特性,主網上線的初期,官方(Offchain Labs)會運營唯一的 Sequencer 節點。
Sequencer 被賦予權利,可以控制每筆交易在 Inbox 中的順序,從而確保它可以立即確定客戶交易的結果,而無須等待以太坊上 5 分鐘左右的區塊確認時間,甚至也不需要等待 15 秒的區塊創建時間。
同時,一個正直的 Sequencer 可以有效的防禦搶跑攻擊(Front-Running Attack)。
因此,由官方運營一個中心化的正直的 Sequencer 節點,對項目早期的發展可能是非常有益的,可以減少很多麻煩,但安全風險也顯而易見(雖然很難想像官方會去自己作惡)。所幸官方承諾,會在技術成熟後,儘快切換至去中心化的多 Sequencer 節點方案。
除此以外,Inbox 會被一分為二,一個接受 Sequencer 提交的交易,一個接受常規的 Aggregator 或者用戶提交的交易,這也給不信任中心化 Sequencer 的用戶提供了另一個選擇。
冷萃財經原創,作者:awing,轉載請註明出處:https://www.lccjd.top/2021/06/17/%e5%85%a8%e9%9d%a2%e8%a7%a3%e6%9e%90-arbitrum-%e5%ae%89%e5%85%a8%e6%9c%ba%e5%88%b6%ef%bc%9a%e5%a6%82%e4%bd%95%e7%bb%a7%e6%89%bf%e4%bb%a5%e5%a4%aa%e5%9d%8a%e5%ae%89%e5%85%a8%e6%80%a7%ef%bc%9f/?variant=zh-tw
文章評論