Polygon 工程師:為什麼說 Blast 完全不是 L2?

推薦閱讀
2023-11-24 15:36:16
收藏
在目前的狀態下發送資金到 Blast 是有風險的。

原文標題:《代碼分析:為什麼說 Blast 完全不是 L2》

原文作者:Jarrod Watts

原文編譯:金色財經 0xjs


編者按:新 L2 網絡 Blast 自本週推出以來,一直都處在輿論熱點。不僅有 NFT 巨鯨 Christian 將 500 枚 stETH 存入 Blast,在22日,Blast 還宣布其完成了 2000 萬美元融資。不少開發者也圍繞著 Blast 的代碼和其本質展開爭論,其中 Polygon 的 Jarrod Watts 更是直言,Blast 並不是一條 Layer2 網絡。本文翻譯自其 X 推文。

有人說「Blast 只是個 3/5 多重簽名……」

過去幾天我深入研究了源代碼,看看這個說法是否屬實。

下面是我看到的一切:

1.一個新錢包 0x52c31 部署了兩個合約: 1)0xa01:Blast Deposit 代理合約;2)0x5f6:Blast Deposit 實現合約。

如果你不熟悉這些「代理合約」設置,後文還會回到這個。

2.0x52c31 部署這些合約後,將所有權轉移給 Gnosis Safe 智能合約

Gnosis Safe 或「Safe2」合約是最受歡迎和最值得信賴的多重簽名智能合約。它們要求大多數簽名者簽名才能執行交易。


3.現在擁有 Blast 合約的 Safe 合約中有 5 個簽名者。

這意味著大多數(即 3/5)簽名者需要代表此 Safe 合約執行交易。這 5 個錢包都是非常新的錢包,但主人不詳。


4.所以 3/5 多重簽名合約現在是 Blast Deposit 合約的「所有者」。

正如我們所提到的,Blast Deposit 合約由兩個合約組成:代理和實現。

成為它們的「所有者」實際上意味著什麼呢?


5.對於常規智能合約,一旦部署到區塊鏈,你就無法更改代碼。代理智能合約允許你對智能合約執行「升級」(更改),而無需替換整個合約。這通常用於修復錯誤或添加功能。


6.Blast 代理實現 OpenZeppelin 的 UUPSUpgradeable 合約。這包括諸如「_upgradeTo」之類的函數,允許更改實現合約的邏輯。這意味著用戶交互的合約能夠維護相同的合約地址。


7.這種可升級性的最壞情況是(多重簽名)所有者將合約的邏輯更改為惡意的內容

這聽起來有點可怕,對吧?……實際上,這些「輔助功能」被當今大多數 L2 採用。


8.像 Optimism 和 Arbitrum 這樣的 Optimistic Rollups 也有這個功能

根據 L2Beat:

·保護 OP Mainnet 和 Base 系統的代碼可以任意更改,恕不另行通知。


·Arbitrum One 的升級大約需要 12 天的延遲,但理事會可以毫不延遲批准。


9.zkEVM 世界也是如此

根據 L2Beat:

·保護 Linea、Scroll 和 zkSync 系統的代碼可以任意更改,恕不另行通知。

·Polygon zkEVM 的升級有約 10 天的延遲(除非啟動緊急狀態)

10.這些 Rollup 具有可以執行升級的多重簽名的原因是為了在技術成熟時實現臨時安全。正如 L2Beat 在其 L2 階段博客中概述的那樣,Rollup 的最後階段應該限制這些安全委員會解決「嚴重缺陷」的能力。


11.安全理事會的能力隨著時間的推移而減弱。然而,成員知名度很重要。

例如,Polygon PIP-29 提議由 13 個成員來管理「對系統智能合約的範圍狹窄、時間限制的變更」。


12.因此,雖然 Blast 確實有可能通過多重簽名來執行代碼升級並立即竊取資金,但*目前*許多其他 L2 解決方案也具有相同的功能。

到目前為止,我一直在為 Blast 辯護。但是,下面是壞消息了… 讓我們繼續。


13.Blast 不是 L2。


Blast 只是個具有兩個功能的智能合約: 1、接受用戶的資金。2、將用戶的資金投入 Lido 等協議中。


沒有測試網,沒有交易,沒有橋,沒有 Rollup,也沒有向以太坊發送交易數據。這不是 L2。


14.通過向 Blast 合約存款,你基本上信任 3-5 個陌生人會為你質押你的資金。


除非這 3-5 個人決定將來做正確的事情,否則你將無法在任何時候提取這筆錢。再說一次,這裡沒有橋。


15.這對我來說真的很瘋狂…


你無法從 Blast 取回你的錢,直到:


由陌生人組成的 3/5 多重簽名部署了一份新合約;


該合約具有從中提取資金的功能;


他們將所有資金轉移到新合約中。


16.但是,還有更糟的情況。

我可以告訴你,他們甚至不需要進行「升級」來竊取合約中的所有資金,而這個合約裡用戶存進的資金其他人都不能取出。

我們接著看。


17.函數「enableTransition」要求「mainnetBridge」合約作為參數。

這個「mainnetBridge」合約的功能: 獲取所有質押的 ETH 、DAI。

那麼,這個「mainnetBridge」合約什麼樣?


18.它絕對可以是任何東西!Blast 批准任意「mainnetBridge」合約,以花費最大可能數量的 LIDO 和 DAI…

這個合約的正確性肯定有一些限制?好吧,*是的*,讓我們看看該代碼。


19.下面是「_setMainnetBridge」函數中的斷言語句。


它… 檢查該地址是否有任何代碼!是的,只要它不是 EOA 地址即可;它已批准擁有合約中的所有資金。目前資金總量已經超過 2 億美元。


20.因此,可以假設,它們可以:

1)創建一個極其簡單的智能合約並將其設置為 mainnetBridge 合約;


2)讓該智能合約接收所有質押的 ETH 和 DAI(2 億+)


調用智能合約將所有資金提取到 EOA 錢包。


21.我們發現的兩個主要威脅是:

·經 3/5 多重簽名批准升級惡意代碼以竊取資金。


·製作惡意智能合約並將其設置為「mainnetBridge」智能合約來竊取資金,同樣是通過 3/5 多重簽名。


22.這會真的發生嗎?就我個人而言,如果我必須猜測的話,我認為資金不會被盜。

無論如何,我實際上認為 Blast 原生收益的想法是一個非常有趣的權衡。


23.因此,雖然我個人認為在目前的狀態下發送資金到 Blast 是有風險的,但發送不發送最終是用戶的決定,我只是在這裡分享我看到的東西。

我仍然祝願 Blast 團隊和所有已經存款的人一切順利。


鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
ChainCatcher 與創新者共建Web3世界