diff --git a/src/WEETHModule.sol b/src/WEETHModule.sol index a6e943ef..491cfed9 100644 --- a/src/WEETHModule.sol +++ b/src/WEETHModule.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.21; import { AccessControlEnumerable } from "openzeppelin-contracts/contracts/access/extensions/AccessControlEnumerable.sol"; import { IERC20Metadata as IERC20 } from "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import { SafeERC20 } from "openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; import { Ethereum } from "spark-address-registry/Ethereum.sol"; @@ -16,6 +17,8 @@ interface IWithdrawRequestNFTLike { contract WEETHModule is AccessControlEnumerable { + using SafeERC20 for IERC20; + address public immutable almProxy; /**********************************************************************************************/ @@ -58,7 +61,7 @@ contract WEETHModule is AccessControlEnumerable { // Wrap ETH to WETH. IWETHLike(Ethereum.WETH).deposit{value: ethReceived}(); - IERC20(Ethereum.WETH).transfer(almProxy, ethReceived); + IERC20(Ethereum.WETH).safeTransfer(almProxy, ethReceived); } function onERC721Received(address, address, uint256, bytes calldata) external returns (bytes4) { diff --git a/src/libraries/WEETHLib.sol b/src/libraries/WEETHLib.sol index b2ad2218..6d8a148a 100644 --- a/src/libraries/WEETHLib.sol +++ b/src/libraries/WEETHLib.sol @@ -26,7 +26,6 @@ interface ILiquidityPoolLike { interface IWEETHLike is IERC20 { function eETH() external view returns (address); - function getEETHByWeETH(uint256 weETHAmount) external view returns (uint256); function unwrap(uint256 amount) external returns (uint256); function wrap(uint256 amount) external returns (uint256); } diff --git a/test/mainnet-fork/weETH.t.sol b/test/mainnet-fork/weETH.t.sol index 4b89b1d1..0d8f03c7 100644 --- a/test/mainnet-fork/weETH.t.sol +++ b/test/mainnet-fork/weETH.t.sol @@ -3,7 +3,7 @@ pragma solidity >=0.8.0; import { ReentrancyGuard } from "../../lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol"; -import { IWEETHLike, IEETHLike } from "../../src/libraries/WEETHLib.sol"; +import { IEETHLike } from "../../src/libraries/WEETHLib.sol"; import { WEETHModule } from "../../src/WEETHModule.sol"; @@ -26,6 +26,11 @@ interface IWithdrawRequestNFTLike { function roleRegistry() external view returns (address); } +interface IWEETHLike is IERC20 { + function eETH() external view returns (address); + function getEETHByWeETH(uint256 weETHAmount) external view returns (uint256); +} + contract MainnetControllerWeETHTestBase is ForkTestBase { IWEETHLike weETH = IWEETHLike(Ethereum.WEETH);