有時候,我們只想安全地發送 ETH。 進入 Solady 的新 `safeMoveETH`。 在智能合約中發送 ETH 有很多方法: - `CALL`:容易受到燃氣騷擾和重入攻擊。 - `transfer`:實際上這是一個帶有 3000 燃氣補貼的 `CALL`。如果燃氣價格發生變化(例如,具有自定義燃氣費用的 L2),或者目標是具有回退函數的合約,這就會出問題。 - `WETH`:在所有 L2 中沒有標準的 WETH 合約。沒有人有字節碼空間來硬編碼所有不同的地址)。此外,您將花費 2 萬燃氣進行新的 SSTORE,5 千燃氣進行 SSTORE 更新。非常昂貴。 - `SELFDESTRUCT`:我們可以用它做一些事情。在 EIP-6780 之後,這可以被濫用以實現相當高效的強制轉移。 `safeMoveETH` 使用標準的最小 `SELFDESTRUCT` 來移動 ETH,而不會觸發 `fallback`。 如果將來 `SELFDESTRUCT` 被禁用(核心開發者請不要),它會優雅地降級為每個地址的即時創建 2 號倉庫,以鏈無關的方式積累 ETH。 基本上,無論發生什麼,ETH 都不會被卡住。
21.44K