From a5427bb177e3f08f55160a3449a7c90016c9e506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 17 Feb 2023 13:12:05 -0300 Subject: [PATCH] Make refund and reward addresses `payable`. --- ethereum/contracts/interfaces/IRelayProvider.sol | 2 +- ethereum/contracts/relayProvider/RelayProvider.sol | 2 +- .../contracts/relayProvider/RelayProviderGetters.sol | 2 +- .../relayProvider/RelayProviderGovernance.sol | 2 +- .../contracts/relayProvider/RelayProviderSetters.sol | 2 +- .../contracts/relayProvider/RelayProviderState.sol | 2 +- ethereum/forge-test/CoreRelayer.t.sol | 10 ++++++---- 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/ethereum/contracts/interfaces/IRelayProvider.sol b/ethereum/contracts/interfaces/IRelayProvider.sol index 30d7c2d..cf35852 100644 --- a/ethereum/contracts/interfaces/IRelayProvider.sol +++ b/ethereum/contracts/interfaces/IRelayProvider.sol @@ -26,7 +26,7 @@ interface IRelayProvider { //Otherwise, the delivery on the target chain (msg.sender) must equal this address. function getDeliveryAddress(uint16 targetChain) external view returns (bytes32 whAddress); - function getRewardAddress() external view returns (address rewardAddress); + function getRewardAddress() external view returns (address payable rewardAddress); function getConsistencyLevel() external view returns (uint8 consistencyLevel); } diff --git a/ethereum/contracts/relayProvider/RelayProvider.sol b/ethereum/contracts/relayProvider/RelayProvider.sol index fe46321..fde596b 100644 --- a/ethereum/contracts/relayProvider/RelayProvider.sol +++ b/ethereum/contracts/relayProvider/RelayProvider.sol @@ -52,7 +52,7 @@ contract RelayProvider is RelayProviderGovernance, IRelayProvider { } //Returns the address on this chain that rewards should be sent to - function getRewardAddress() public view override returns (address) { + function getRewardAddress() public view override returns (address payable) { return rewardAddress(); } diff --git a/ethereum/contracts/relayProvider/RelayProviderGetters.sol b/ethereum/contracts/relayProvider/RelayProviderGetters.sol index df19e22..32900eb 100644 --- a/ethereum/contracts/relayProvider/RelayProviderGetters.sol +++ b/ethereum/contracts/relayProvider/RelayProviderGetters.sol @@ -52,7 +52,7 @@ contract RelayProviderGetters is RelayProviderState { return _state.wormholeFee[targetChainId]; } - function rewardAddress() public view returns (address) { + function rewardAddress() public view returns (address payable) { return _state.rewardAddress; } diff --git a/ethereum/contracts/relayProvider/RelayProviderGovernance.sol b/ethereum/contracts/relayProvider/RelayProviderGovernance.sol index ae10826..26c5733 100644 --- a/ethereum/contracts/relayProvider/RelayProviderGovernance.sol +++ b/ethereum/contracts/relayProvider/RelayProviderGovernance.sol @@ -40,7 +40,7 @@ abstract contract RelayProviderGovernance is RelayProviderGetters, RelayProvider emit ApprovedSenderUpdated(sender, approved); } - function updateRewardAddress(address newAddress) public onlyOwner { + function updateRewardAddress(address payable newAddress) public onlyOwner { setRewardAddress(newAddress); emit RewardAddressUpdated(newAddress); } diff --git a/ethereum/contracts/relayProvider/RelayProviderSetters.sol b/ethereum/contracts/relayProvider/RelayProviderSetters.sol index 179156e..f5f422a 100644 --- a/ethereum/contracts/relayProvider/RelayProviderSetters.sol +++ b/ethereum/contracts/relayProvider/RelayProviderSetters.sol @@ -40,7 +40,7 @@ contract RelayProviderSetters is Context, RelayProviderState { _state.wormholeFee[chainId] = wormholeFee; } - function setRewardAddress(address rewardAddress) internal { + function setRewardAddress(address payable rewardAddress) internal { _state.rewardAddress = rewardAddress; } diff --git a/ethereum/contracts/relayProvider/RelayProviderState.sol b/ethereum/contracts/relayProvider/RelayProviderState.sol index 5c3a8d9..b06dc5b 100644 --- a/ethereum/contracts/relayProvider/RelayProviderState.sol +++ b/ethereum/contracts/relayProvider/RelayProviderState.sol @@ -42,7 +42,7 @@ contract RelayProviderStorage { // Dictionary of wormhole chain id -> assetConversionBufferDenominator mapping(uint16 => uint16) assetConversionBufferDenominator; // Reward address for the relayer. The CoreRelayer contract transfers the reward for relaying messages here. - address rewardAddress; + address payable rewardAddress; } } diff --git a/ethereum/forge-test/CoreRelayer.t.sol b/ethereum/forge-test/CoreRelayer.t.sol index 53f710a..bbd199c 100644 --- a/ethereum/forge-test/CoreRelayer.t.sol +++ b/ethereum/forge-test/CoreRelayer.t.sol @@ -220,8 +220,8 @@ contract TestCoreRelayer is Test { CoreRelayer coreRelayerFull; MockRelayerIntegration integration; address relayer; - address rewardAddress; - address refundAddress; + address payable rewardAddress; + address payable refundAddress; uint16 chainId; } @@ -236,8 +236,10 @@ contract TestCoreRelayer is Test { mapEntry.coreRelayerFull = CoreRelayer(address(mapEntry.coreRelayer)); mapEntry.integration = new MockRelayerIntegration(address(mapEntry.wormhole), address(mapEntry.coreRelayer)); mapEntry.relayer = address(uint160(uint256(keccak256(abi.encodePacked(bytes("relayer"), i))))); - mapEntry.refundAddress = address(uint160(uint256(keccak256(abi.encodePacked(bytes("refundAddress"), i))))); - mapEntry.rewardAddress = address(uint160(uint256(keccak256(abi.encodePacked(bytes("rewardAddress"), i))))); + mapEntry.refundAddress = + payable(address(uint160(uint256(keccak256(abi.encodePacked(bytes("refundAddress"), i)))))); + mapEntry.rewardAddress = + payable(address(uint160(uint256(keccak256(abi.encodePacked(bytes("rewardAddress"), i)))))); mapEntry.chainId = i; map[i] = mapEntry; }