From 6416e236e56ab1d776e0fdb0181d0157de2c603c Mon Sep 17 00:00:00 2001 From: Pablo Veyrat Date: Fri, 10 Jan 2025 18:17:07 +0100 Subject: [PATCH] fix: sToken immutable --- contracts/partners/tokenWrappers/SonicFragment.sol | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/contracts/partners/tokenWrappers/SonicFragment.sol b/contracts/partners/tokenWrappers/SonicFragment.sol index 7838bdd..c71a4c7 100644 --- a/contracts/partners/tokenWrappers/SonicFragment.sol +++ b/contracts/partners/tokenWrappers/SonicFragment.sol @@ -15,20 +15,24 @@ contract SonicFragment is ERC2O { using SafeERC20 for IERC20; /// @notice `AccessControlManager` contract handling access control - IAccessControlManager public accessControlManager; + IAccessControlManager public immutable accessControlManager; + address public immutable sToken; + uint256 public exchangeRate; - address public sToken; uint8 public contractSettled; constructor( address _accessControlManager, address recipient, + address _sToken, uint256 _totalSupply, string memory _name, string memory _symbol ) ERC20(_name, _symbol) { // Zero address check + if (_sToken == address(0)) revert ZeroAddress(); IAccessControlManager(_accessControlManager).isGovernor(msg.sender); + sToken = _sToken; accessControlManager = IAccessControlManager(_accessControlManager); _mint(recipient, _totalSupply); } @@ -50,12 +54,6 @@ contract SonicFragment is ERC2O { exchangeRate = (sTokenAmount * 1 ether) / _totalSupply; } - /// @notice Sets the S address - /// @dev Cannot be set once redemption is activated - function setSTokenAddress(address sTokenAddress) external onlyGovernor { - if (contractSettled == 0) sToken = sTokenAddress; - } - /// @notice Recovers leftover tokens after sometime function recover(uint256 amount, address recipient) external onlyGovernor { IERC20(sToken).safeTransfer(recipient, amount);