來源 | Hackernoon
作者 | DeGate
Layer 2 擴容解決方案是當前以太坊社區熱議的話題,也是整個區塊鏈技術社區正在討論的熱門話題,基于 Optimistic Rollups 的 Arbitrum 是目前最具有吸引力的 Layer 2 擴容解決方案之一,它率先部署了主網 beta 版本,并獲得了 Uniswap 和 Compound 等核心 DeFi 項目的支持。
對于打算從以太坊主網遷移至 Layer 2 的用戶來說,他們最關心的一個問題就是 Layer 2 解決方案的安全機制如何,本文將深入探討 Arbitrum 的安全機制,包括:Arbitrum 如何植根于以太坊的安全性中;為什么挑戰期是七天;以及如何防御審查攻擊。
植根于以太坊的安全性中
眾所周知 Layer 2 解決方案與其他擴容解決方案相比,最大的一個優勢就是其安全性依賴于以太坊主網的安全性。然而,大部分人可能都知道這個道理,但卻不知道為什么,那么 Arbitrum 如何根植于以太坊的安全性中呢?
我們首先來回顧一下 Optimistic Rollup 解決方案的主要特點:
- 在一個 Rollup 解決方案中,交易 (作為 calldata) 編寫在 L1 上,但是其實際計算和合約的存儲在 L2 上完成,以實現擴容,
- 驗證者在 L1 上發布一個斷言 (assertion),可以理解為將所有交易和結果打包成一個 Rollup 區塊,然后發送到 L1 的交易中。
- Optimistic Rollup 之所以稱為”樂觀的“ rollup 解決方案,因為當一個斷言發布時,其不包含保證其有效性的隨附證明,即默認該斷言有效。相反,屆時會有一個時間窗口,而任何人都可以在這個時間內挑戰該斷言,如果挑戰成功,那么此斷言內的所有交易都將被撤回,并且提出斷言的人會失去其保證金,如果挑戰期到期且沒人挑戰成功,那么斷言就會被最終確認。
在了解了這個解決方案之后,我們再從幾個角度來思考 Arbitrum 是如何植根于以太坊的安全性的。
數據可用性
所有在 L2 上執行的交易首先會提交至在 L1 上運行的收件箱智能合約,然后作為 calldata 編寫進 L1 中。任何人都可以利用該數據來檢索回 L2 上的所有交易并將 L2 恢復到其原始狀態。這些數據可用性通過 L1 得到保證,用戶不必擔心 L2 因出現故障而導致其損失 L2 上的資產,
AnyTrust
AnyTrust 是 Rollup 協議的關鍵安全功能。這個功能允許任意誠實驗證者確保交易在 L2 上正確地執行。無論有多少攻擊者惡意阻止交易的進行,你或者你雇傭的任何人都能夠強制確保交易的正確執行,而無需信任任何第三方。
緊急退出機制
Arbitrum 當前沒有一個特定的緊急退出機制,但是有一系列安全機制來確保用戶可以安全退出。
首先,數據可用性確保用戶存儲在 L2 上的資產和數據可以在任意時候從 L1 上恢復,并且永遠不會丟失。
其次,任意用戶都能向 L1 上的收件箱合約發送一個交易請求來強制退出,
最后,AnyTrust 機制確保用戶可以強制 L2 正確地處理退出交易,
在以上三點中,用戶不需要信任任意第三方,這充分地展示了 Arbitrum 植根于以太坊的安全性中,并且是去信任的,
為什么挑戰期是七天
Arbitrum 是一個多輪交互的 Rollup 解決方案,這個解決方案首先會樂觀地相信驗證者做出的斷言是有效的,而在挑戰期其他驗證者可能會對此提出質疑和挑戰,在大多數情況下,不會有挑戰提出,那么整個系統就可以更高效且成本更低。
顯然,挑戰期越長,整個系統就越安全,但同時用戶體驗也會更差 (因為用戶需要等到挑戰期結束之后才能退出)。那么我們是如何確定最佳的挑戰時期呢?
Arbitrum 團隊提出這種模型來計算最佳的挑戰時期:
- 假設一個挑戰時期等于 C 區塊的長度,以及攻擊者在 L2 上可以獲得的最大值為 V,
則攻擊者獲得的預期價值為 V exp(-AC),
注解:exp 為指數函數”e“,A 為某常數 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 = ln(10A / W) / A,
現在我們將一些合理的數字插入上述等式中,以獲得一個大概的最佳挑戰期限。
假設一個區塊時間內的連續審查成功率高達 99.99%,即 A = -ln(0.99) = 0.01。
進一步假設每天提款為總值的 1%,并且每個區塊的提款百分比約為 W=0.000002,基于出塊時間為 15 秒的前提,
將這些代入公式中,我們得到的最佳挑戰期限為 C = 62146 區塊,即 10.79 天。這與 Arbitrum 團隊最終選擇的 7 天挑戰期限非常接近。
如何防御審查攻擊
在這一部分,我們討論了 Arbitrum 如何防御四種主要的審查攻擊:分叉攻擊 (forking attacks)、回避攻擊 (shunning attacks)、干擾攻擊 (jamming attacks) 和快速攻擊 (speed demon attacks),
分叉攻擊 (forking attacks):礦工合謀 (或受賄) 丟棄包含正常挑戰的區塊,以便接受不包含挑戰的替代鏈,
首先,由于挑戰者的存在,一旦發生分叉攻擊,難免會被某個挑戰者發現,而當大家發現區塊鏈中的挖礦算力壟斷者 (這是分叉攻擊的先決條件) 為了盈利而肆無忌憚地違反規則時,區塊鏈本身就被摧毀了。此時,Arbitrum 是否采用挑戰期設計模型還存在爭議。
回避攻擊 (shunning attacks): 礦工們合謀 (或受賄) 忽略掉他們生產出的區塊中的普通挑戰。
我們假設壟斷者控制了 90% 的挖礦算力,并且期限為 50 個區塊。那么壟斷者需要將 50 個連續的區塊打包起來才能完成攻擊,這個概率是 0.9 的 50 次方,也就是 0.5%,而實際挑戰期限遠不止 50 個區塊,所以攻擊成功的概率極小。在 Arbitrum 的設計中,攻擊者在攻擊失敗時會支付巨額罰款,因此壟斷者發起回避攻擊是非常不劃算的。
干擾攻擊 (jamming attacks) :攻擊者發起”老式的拒絕服務攻擊 (DoS)“ 來阻止任何一方發布任何交易 (不能發布包含挑戰的交易)。
因為只要有一個正直的挑戰者,攻擊就會失敗,所以攻擊者必須阻止所有有可能的挑戰者。如果有很多這樣的挑戰者,攻擊將很難完成。更糟糕的是,任意利益相關的一方都可能雇傭一個沉默的監察者以作為備用計劃,他們只在主要參與方太晚發布挑戰或者在發布挑戰時遇到了困難時才會介入,攻擊者并不知道網路中是否有沉默的監察者,或者盡管知道他們存在,也不知道他們是誰,所有在這些監察者有實際行動之前,攻擊者都無法向他們發起 DoS 攻擊,
快速攻擊 (speed demon attacks):攻擊者生成鏈上斷言的速度十分快,以至于其他方不能在時間截止之前檢查并且挑戰所有斷言,
Arbtirum 采取的應對方法是:限制創建斷言的速率,以確保在任何時候檢查未決斷言和挑戰其中一個斷言所需的總工作量能夠在協議的期限之內完成,具體來說,對 Rollup 鏈中的智能合約運作進程施加速度限制,因此即使有人能夠快速生成大量斷言,它最終也必須慢下來,
總之,我們不需要太擔心分叉攻擊,如果出現惡意挖礦算力壟斷的情況,那么可以說這個區塊鏈已經基本上變得沒有吸引力了,Arbitrum 可以通過適當的設計或者實踐來防御其他三種審查攻擊,
序列器模式 (Sequencer Mode) 的優勢和風險
Sequencer 模式是 Arbitrum 的一個可選功能,Offchain Labs 在主網的發布版本上運行唯一的 Sequencer 節點,
Sequencer 被賦予有限的權力來控制收件箱中每筆交易的排序,以保證用戶的交易結果能夠立即被確定,無需在以太坊上等待五分鐘至區塊被確認,甚至不需要像在以太坊一樣等待 15 秒的出塊時間。
同時,一個表現良好的 sequencer 可以有效地防御搶跑攻擊。
因此,一個由 Offchain Labs 運營的中心化的、表現良好的 Sequencer 節點,對于項目的早期開發是非常有利的,并為其減少了很多麻煩,但是安全隱患也很明顯 (雖然很難想象 Offchain Labs 會作惡,但也不排除這樣的可能性),Offchain Labs 承諾在技術成熟后立即切換到去中心化的、多個 Sequencer 節點的解決方案,
此外,收件箱也將一分為二,一個接受由 Sequencer 提交的交易,另一個則接受由常規聚合器或者用戶提交的交易,這也為不信任中心化的 Sequencer 的用戶提供了另一種選擇,