多重簽名不是 Rollup 的全部,但它是更大系統架構中重要的一小部分。
原文:Is a Rollup Just a Multisig?(Cryptofrens)
編譯:Luffy,Foresight News
封面:Photo by Jigar Panchal on Unsplash
任何與加密資產交互的資料庫終有一天都會選擇 Rollup 作為技術堆疊。 開發人員做出這樣的決定是有很多充分理由的:
- 即時審計
- 默認償付能力證明
- 用戶資金的託管是可選的
- 誠實的一方參與者可以保護整個系統
最重要的是,Rollup 的所有設計和實現工作都集中於保護使用者、他們的資金以及他們的所有交互,免受潛在未知且強大的系統操作員的侵害。
即使整個系統離線,使用者也可以憑一己之力收回資金。
如果 Rollup 能夠作為技術堆疊得到廣泛部署,那麼我們可能有能力打破信任壁壘,使全球社區中的任何人都能進行財務互動,從而進入全球電子商務、遠端招聘和無摩擦提供服務的新時代。
要使 Rollup 正確執行,確實需要付出很多努力。
多重簽名怎麼樣?
這聽起來不錯,但整個系統最終由多重簽名控制。 如果簽名者受到損害或萌生惡意,那麼他們可以輕而易舉地竊取所有資金。
那麼,誰會關心 Rollup 呢? CT 上的某個地方。
確實,當前所有 Rollup 都具有多重簽名,有權升級底層智能合約,但正如我們將看到的,它是一種保護用戶資金的保守主義機制,並且是更廣泛的系統架構的一部分。
安全委員會的責任
多重簽名是一個技術術語,指的是需要多個簽名者授權某項操作的系統。 例如,N 個簽名者中的 K 個完成數位簽名,交易才會被允許。
在 Rollup 的背景下,多重簽名通常被稱為安全委員會,簽名者被賦予升級所有相關智慧合約的權力。
讓我們看一下 Arbitrum 中的安全委員會(因為我對它非常熟悉),以了解這個組織可能承擔的職責類型:
- 否決權。 如果安全委員會認為 Arbitrum DAO 通過的提案違反了 Arbitrum 章程並可能損害 Arbitrum 生態系統,則可以取消該提案。 例如,取消因受到治理攻擊而通過的提案。
- 維護。 升級 Arbitrum 智慧合約套件以進行細微更改,這些更改影響較小,不需要 Arbitrum DAO 參與進來。
- 緊急事件。 在緊急情況下迅速回應,如果他們認為用戶資金面臨迫在眉睫的風險,則可以緊急升級智能合約。
當然,最重要的是,安全委員會的首要職責是應對緊急事件並迅速採取行動保護用戶資金。
安全委員會的成員需要非常值得信賴的人員來擔任。
人們相信簽名者能夠迅速做出反應,在緊急情況發生時能夠升級智能合約,並相信他們會盡最大努力保護智慧合約中的資金安全。
選擇正確的多重簽名閾值
在決定設立安全委員會時,需要考慮兩個重要因素:
- 一共有多少簽名者?
- 至少需要多少簽名者才能批准一項行動?
這看似是一個微不足道的問題,畢竟它只是兩個數位,但必須考慮一個平衡行為:
- 安全違規: K 個成員可能串通更改智慧合約並竊取用戶資金。
- 活性違規:N-K+1 成員串通阻止對智慧合約進行任何更改,如果發現嚴重漏洞,問題尤其嚴重。
難處在於確定一個閾值,既能在和平時期維護資金安全,又能在緊急情況下當用戶資金受到威脅時迅速採取行動。
讓我們考慮一個具體的例子。 假設閾值設置為 9/10,其中 9 個簽名者必須共同簽署一條消息。 這是一個嚴苛的安全閾值,因為必須 9 個簽名者合謀才能竊取資金。 然而,缺點是任何兩個簽名者都可以阻止緊急情況下的任何行動。 例如,如果兩名簽署者乘坐跨大西洋航班遠遊,則安全委員會將無法履行其職責。
當然,如果安全閾值較低,假設為 2/10,那麼只需任意兩個簽名者串通(或私鑰被洩露),用戶資金就會被盜。
選擇適當的閾值更多的是一個社會問題,而不是一個技術問題,我認為這更多的是一門藝術而不是一門科學。 安全性很大程度上取決於個人簽名者的誠信度。 正如我們很快就會看到的,有一些方法可以減少對多重簽名的信任,但這會帶來一系列權衡。
安全委員會成員
主要 Rollup 即時升級所有智慧合約所需的多簽閾值
大多數 Rollup 在其安全委員會中都有一組匿名簽名者。 我們懷疑這可能是由於:
- Rollup 的發展階段,
- 保護成員人身安全,
- 認為匿名是保護用戶資金的最佳選擇。
另一方面,有三個 Rollup 專案公開宣佈了其安全委員會成員身份:
- Arbitrum:簽名者由公開選舉產生,當前名單可在 Tally 上查看。 只有三名簽署者與 Arbitrum 專案相關(兩名來自 Offchain Labs,一名來自 Arbitrum 基金會)。
- Base:2/2 多重簽名,一個由 Base 控制,另一個由 Optimism 控制。
- Polygon zkEVM:尚未實施,但他們已宣佈會將其多重簽名升級至 10/13,其中包括來自 Polygon Labs 的兩名成員以及 Polygon Labs 的一名顧問。
- zkSync Lite:zkSync Lite 應該與 ZkSync Era 區別開,其安全委員會是公開宣佈的,並且不包括來自 Rollup 專案的直接附屬機構(zkSync 的投資者除外)。
在 Arbitrum 中以及在即將到來的 Polygon 中,只有少數簽名者與 Rollup 專案直接相關,而且數量足夠小以確保附屬機構不能串通阻止安全委員會採取的行動。 在 zkSync Lite 中,除了 zkSync 的投資者之外,他們還任命了獨立於項目的簽名者。
在所有情況下,Rollup 都非常重視與項目沒有直接關係的簽名者。
然而,對於如何構成良好的多重簽名似乎缺乏共識,這給我們帶來了幾個設計問題:
- 是否應該允許匿名成員?
- 成員應該來自不同的地域嗎?
- 成員應該是個人還是公司?
- 成員應該由任命還是選舉產生?
- 應允許多少名來自同一公司(或國家)的成員?
- 是否存在被認為合適的最小規模和閾值?
一般經驗法則應該是挑選高度誠信的成員,以便公眾對系統的安全充滿信心。 至少,我相信大多數專案可能都會這樣做,即使這並不總是可以公開驗證。
附注 Arbitrum 安全委員會的六名成員目前已被預先任命,但他們將在三月份的選舉中被替換。
削弱委員會的權力
到目前為止,我們只考慮了一個有權立即升級智慧合約的委員會,但有一些方法可以限制委員會的權力:
時間延遲(Time delay)。 委員會授權的所有操作只有在時間 T 過去後才會被執行並生效。
僅暫停(Pause-only)。 原生跨鏈橋持有的所有資產都可以被委員會凍結。 這可能會暫停以下功能:
- 將消息從 L2 傳遞到 L1(即取款),
- 完成待處理交易的排序,
- 完成新的檢查點 / 證書,
- 接受新的 Rollup 資料(即待處理的事務)。
繞過委員會(Removed)。 放棄委員會並依靠另一種治理機制(如 DAO)來批准升級。
當然,這會限制委員會迅速採取行動的能力以及他們能否有效應對威脅用戶資金的緊急事件。
如果漏洞已私下向委員會披露,但尚未被駭客利用,則安委員會可以選擇升級智慧合約並修復錯誤。 在升級中加入時間延遲,會增加攻擊者研究公開披露的升級、找到漏洞然後利用它的風險。
例如,比特幣中的 CVE-2018-17144 最初被宣傳為 DDoS 漏洞,而試圖隱藏更嚴重的代幣通脹漏洞。 升級速度對於防止其被利用至關重要。
評估僅暫停機制的防禦能力
讓我們考慮一下攻擊者主動利用漏洞的潛在場景:
- 惡意 L2 → L1 消息。 攻擊者可以製作源自 Rollup 上的智慧合約的任意消息,並通過原生跨鏈橋將消息轉發到乙太坊上的智能合約。
- 無效的狀態轉換。 攻擊者可以在 Rollup 上執行違反狀態轉換函數規則的交易,通常應將其視為無效。
- 提款漏洞。 攻擊者只需在乙太坊(第 1 層)上發出交易即可從原生跨鏈橋提取資金。
在這三種情況下,時間延遲只會讓攻擊者有更多時間繼續竊取資金,並減少委員會保衛系統的機會視窗。 延時功能無法防禦主動攻擊,只能用於日常維護和不緊急的任務。
我們只會評估暫停系統的能力以及系統可以暫停的程度。
在惡意 L2 → L1 消息的情況下,暫停功能可以減輕攻擊而不干擾交易活動。 委員會應暫停消息傳遞和 / 或最終確定新檢查點的功能。 有一種觀點認為,L2 → L1 消息在執行之前應該有一個時間延遲,以便委員會有時間檢測錯誤並對緊急事件做出反應。
防禦無效狀態轉換更加棘手,因為交易最終性在 Rollup 中具有不同的層。 如果我們只考慮 Rollup 交易而不考慮任何副作用,那麼安全委員會的最佳防禦就是停止檢查點最終確定的能力,但繼續允許交易排序。 這可以留出時間來修復錯誤、重新啟動檢查點完成以及簡單地忽略無效交易。
然而,如果不關閉 Rollup 上的交易活動,那麼用戶體驗將會很混亂,並且 Rollup 可能會出現被嚴重破壞的狀態,直到用戶端軟體升級為止。
這將我們帶入下一個場景。 如果我們考慮 Rollup 上的無效交易可能如何影響其他系統,委員會應該如何反應。 最好的防線是凍結原生跨鏈橋最終確定交易排序的能力,或者完全關閉排序器。
這是因為某些系統,例如將資金從一個 Rollup 轉移到另一個 Rollup 的快速跨鏈橋,一旦它們認為 Rollup 的交易(包括無效交易)被排序,就可能會授權資金轉移。 在這個例子中,它可能允許攻擊者利用 Rollup 上的 DeFi 協議,然後通過快速跨鏈橋將其轉移到另一個 Rollup 來快速轉移資金。
當委員會修復漏洞並恢復無效交易時,損害可能已經造成。 無論是 DeFi 協議還是跨鏈橋中的 LP 都可能承擔攻擊帶來的損失。
最後,如果該漏洞允許攻擊者直接從原生跨鏈橋提取資金,類似於 Nomad Hack,則安全委員會可能無力阻止。
暫停機制存在一個最終的總體問題。 我們必須假設有一個更廣泛的治理系統可以批准升級並重新啟動 Rollup。 如果我們假設治理系統是一個帶有在 Rollup 上運行的鏈上投票系統的 DAO,那麼就會出現棘手的實施問題。
例如,如果 L2→L1 消息跨鏈橋暫停,則 DAO 的投票結果無法從 Rollup 傳遞到乙太坊上的原生跨鏈橋,必須存在一種 DAO 發送批准資訊並執行升級的替代方法。
逐步取消安全委員會
社區中有些人認為應該逐步取消安全委員會,但在我看來,這會帶來兩個問題:
錯誤的安全感。 瞭解漏洞利用的攻擊者會等到安全委員會逐步淘汰后再執行攻擊。 隨著時間的推移,這會削弱我們對系統安全性的信心。
恢復選項有限。 如果沒有安全委員會,社區就無法反擊攻擊者。 唯一可用的選擇是進行並行的白帽駭客攻擊,並希望奪回部分資金。
我認為,安全委員會永遠是必要的,但賦予它們的權力應該逐漸縮減。
考慮到這一點,設計問題應該是:
我們如何才能讓安全委員會在對用戶影響最小的情況下暫停系統,同時允許更廣泛的社區參與決定如何修復錯誤並重新激活系統?
換句話說,我們需要一個真正允許社區介入並恢復系統的方案,然後再限制安全委員會的暫停權力。
在 Layer 1 區塊鏈領域,社區確實可以通過使用用戶啟動的分叉來直接達成,但這種方法不適用於乙太坊上的智慧合約(如 Rollup),因為無需分叉整個乙太坊。 在某些情況下,乙太坊社區可能會集體決定保存 Rollup,就像 2016 年的 TheDAO,但 Rollup 永遠不應該依賴或期望這樣一個結果。
沿著這些思路的另一個有趣的想法是實現乙太坊最高法院來決定智慧合約升級並啟用類似於用戶啟動的分叉。
如前所述,如果 Rollup 將其安全性委託給 DAO,那麼應該有一個實現允許 DAO 直接在乙太坊上投票。 這是非常棘手的,特別是如果投票協定存在於 Rollup 中。
最後一點,我認為要對可能需要安理會做出反應的情況類型進行全面審查,以幫助圍繞其必要性的討論。
如果有了多重簽名,為什麼還要擔心 Rollup?
我們花了相當多的時間來理解安全委員會的責任、設計和需求,但重要的是回到本文最初的問題:
Rollup 只是多重簽名嗎?
答案是不。
為了説明理解為什麼,最好退一步並理解區塊鏈系統真正想要做什麼。
區塊鏈協定是一種工具,允許使用者計算資料庫的副本,並確信他們擁有與其他人相同的資料庫。
考慮到這一點,任何區塊鏈系統都有兩個元件:
- 區塊鏈協定。 軟體、密碼學和分散式系統的組合,使任何人都對資料庫的完整性充滿信心。
- 治理系統。 一種協調機制,允許所有利益相關方共同努力並同意更改區塊鏈協定。
任何區塊鏈系統(包括 Rollup)的目標都是確保區塊鏈協議始終以 99.9999% 的極其可靠的正常運行時間運行。 受信任的系統運營商對系統的日常運行應該幾乎沒有干擾。 最終負責保護用戶餘額、智慧合約代碼和狀態的應該是軟體、密碼學和分散式系統。
有時需要更改區塊鏈協定以改善使用者的利益。 社區可能想要修復配置問題、添加新功能或對威脅系統完整性的關鍵漏洞做出反應。 這需要人工干預,並且只能在 0.0001% 的時間內被調用。
治理系統負責實現人為干預,多年來已經出現了幾種方法:
- 集權政黨:單方可以單獨決定如何升級系統(包括比特幣在內的許多專案都是以這種方式開始的)。
- 粗略共識:大多數參與者表示他們已準備好部署升級,確定標記日,然後在標記日執行升級(比特幣 / 乙太坊)。
- 投票協定:各方參與選舉並明確投票決定是否批准升級。
- 無法干涉:智慧合約可以是不可變的,系統永遠無法更改。
除上述內容外,社區還可以決定任命一個安全委員會作為治理的補充選項,以在緊急情況中迅速採取行動。
安全委員會不阻止攻擊。 這是一種被動機制,當區塊鏈協定的用戶資金或系統可靠性 / 性能的受到攻擊時,它與治理一起發揮作用。
最後
所有圍繞區塊鏈協定、治理和安全委員會的討論都至關重要。 這種討論的存在使得加密貨幣如此特別。
這是信任工程的一個很好的例子:專注於識別、測量和減少 / 消除系統中信任元素的工程學科。
在加密貨幣中,我們專注於構建不僅能夠保護使用者免受強大的系統運營商侵害的系統,而且能夠使系統在最不利的條件下可靠(安全)地運行。
這就是為什麼社區成員對安全委員會的作用保持懷疑是健康的,但他們有責任在緊急事件期間提出更好的解決方案,以被動的方式保護用戶資金。
我希望這篇文章能夠清楚地說明為什麼安全委員會有用,它們在今天是必要的,但也只是智慧合約系統更廣泛架構的一小部分。
免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。