Às vezes, só queremos enviar ETH com segurança. Apresentamos o novo `safeMoveETH` da Solady. Existem muitas maneiras de enviar ETH no contrato inteligente: - `CALL`: Abre-se a riscos de gas griefing e ataques de reentrância. - `transfer`: Na verdade, isso é um `CALL` com um limite de gás de 3000 gás por baixo dos panos. Se os preços do gás mudarem (por exemplo, um L2 com custos de gás personalizados), ou se o destino for um contrato com uma função de fallback, isso falha. - `WETH`: Não existe um contrato WETH canônico em todos os L2s. Ninguém tem espaço de bytecode para codificar todos os diferentes endereços). Além disso, você gastará 20k gás para um novo SSTORE, 5k gás para uma atualização de SSTORE. Muito caro. - `SELFDESTRUCT`: Podemos cozinhar algo com isso. Após o EIP-6780, isso pode ser abusado para uma transferência forçada bastante eficiente. `safeMoveETH` usa um `SELFDESTRUCT` mínimo canônico para mover ETH sem acionar o `fallback` nunca. Se o `SELFDESTRUCT` for algum dia bloqueado no futuro (desenvolvedores principais, por favor, não façam isso), ele degrada graciosamente para um vault de create2-just-in-time por endereço para acumular ETH de uma maneira independente da cadeia. Basicamente, não importa o que aconteça, o ETH nunca ficará preso.
21,43K