A veces, solo queremos enviar ETH de forma segura. Presentamos el nuevo `safeMoveETH` de Solady. Hay muchas formas de enviar ETH en el contrato inteligente: - `CALL`: Abre la posibilidad de ataques de gas griefing y reentrancia. - `transfer`: En realidad, esto es un `CALL` con un estipendio de gas de 3000 gas bajo el capó. Si los precios del gas cambian (por ejemplo, un L2 con costos de gas personalizados), o si el objetivo es un contrato con una función de fallback, esto se rompe. - `WETH`: No hay un contrato WETH canónico en todos los L2s. Nadie tiene espacio de bytecode para codificar todas las diferentes direcciones). Además, gastarás 20k gas para un SSTORE nuevo, 5k gas para una actualización de SSTORE. Muy caro. - `SELFDESTRUCT`: Podemos cocinar algo con esto. Después de EIP-6780, esto puede ser abusado para una transferencia forzada bastante eficiente. `safeMoveETH` utiliza un `SELFDESTRUCT` mínimo canónico para mover ETH sin activar nunca el `fallback`. Si `SELFDESTRUCT` se bloquea en el futuro (desarrolladores principales, por favor no lo hagan), se degradará de manera elegante a un vault de create2 por dirección justo a tiempo para acumular ETH de una manera independiente de la cadena. Básicamente, pase lo que pase, el ETH nunca se quedará atascado.
29,03K