有时候,我们只想安全地发送 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