Skip to content

Commit 724abf5

Browse files
authored
Merge pull request #134 from OffchainLabs/ha/mv-remove-switch-func
MasterVault: remove switchSubVault
2 parents bd1dffb + a05eddc commit 724abf5

File tree

2 files changed

+3
-65
lines changed

2 files changed

+3
-65
lines changed

contracts/tokenbridge/libraries/vault/MasterVault.sol

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,6 @@ contract MasterVault is Initializable, ERC4626Upgradeable, AccessControlUpgradea
9999
/// @param _subVault The subvault to set. Must be an ERC4626 vault with the same asset as this MasterVault.
100100
/// @param minSubVaultExchRateWad Minimum acceptable ratio (times 1e18) of new subvault shares to outstanding MasterVault shares after deposit.
101101
function setSubVault(IERC4626 _subVault, uint256 minSubVaultExchRateWad) external onlyRole(VAULT_MANAGER_ROLE) {
102-
_setSubVault(_subVault, minSubVaultExchRateWad);
103-
}
104-
105-
/// @notice Revokes the current subvault, moving all assets back to MasterVault
106-
/// @param minAssetExchRateWad Minimum acceptable ratio (times 1e18) of assets received from subvault to outstanding MasterVault shares
107-
function revokeSubVault(uint256 minAssetExchRateWad) external onlyRole(VAULT_MANAGER_ROLE) {
108-
_revokeSubVault(minAssetExchRateWad);
109-
}
110-
111-
function _setSubVault(IERC4626 _subVault, uint256 minSubVaultExchRateWad) internal {
112102
IERC20 underlyingAsset = IERC20(asset());
113103
if (address(subVault) != address(0)) revert SubVaultAlreadySet();
114104
if (address(_subVault.asset()) != address(underlyingAsset)) revert SubVaultAssetMismatch();
@@ -124,7 +114,9 @@ contract MasterVault is Initializable, ERC4626Upgradeable, AccessControlUpgradea
124114
emit SubvaultChanged(address(0), address(_subVault));
125115
}
126116

127-
function _revokeSubVault(uint256 minAssetExchRateWad) internal {
117+
/// @notice Revokes the current subvault, moving all assets back to MasterVault
118+
/// @param minAssetExchRateWad Minimum acceptable ratio (times 1e18) of assets received from subvault to outstanding MasterVault shares
119+
function revokeSubVault(uint256 minAssetExchRateWad) external onlyRole(VAULT_MANAGER_ROLE) {
128120
IERC4626 oldSubVault = subVault;
129121
if (address(oldSubVault) == address(0)) revert NoExistingSubVault();
130122

@@ -139,18 +131,6 @@ contract MasterVault is Initializable, ERC4626Upgradeable, AccessControlUpgradea
139131
emit SubvaultChanged(address(oldSubVault), address(0));
140132
}
141133

142-
/// @notice Switches to a new subvault or revokes current subvault if newSubVault is zero address
143-
/// @param newSubVault The new subvault to switch to, or zero address to revoke current subvault
144-
/// @param minAssetExchRateWad Minimum acceptable ratio (times 1e18) of assets received from old subvault to outstanding MasterVault shares
145-
/// @param minNewSubVaultExchRateWad Minimum acceptable ratio (times 1e18) of new subvault shares to outstanding MasterVault shares after deposit
146-
function switchSubVault(IERC4626 newSubVault, uint256 minAssetExchRateWad, uint256 minNewSubVaultExchRateWad) external onlyRole(VAULT_MANAGER_ROLE) {
147-
_revokeSubVault(minAssetExchRateWad);
148-
149-
if (address(newSubVault) != address(0)) {
150-
_setSubVault(newSubVault, minNewSubVaultExchRateWad);
151-
}
152-
}
153-
154134
function masterSharesToSubShares(uint256 masterShares, MathUpgradeable.Rounding rounding) public view returns (uint256) {
155135
// masterShares * totalSubVaultShares / totalMasterShares
156136
return masterShares.mulDiv(subVault.balanceOf(address(this)), totalSupply(), rounding);

test-foundry/libraries/vault/MasterVault.t.sol

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -126,48 +126,6 @@ contract MasterVaultTest is Test {
126126
assertEq(subVault.balanceOf(address(vault)), depositAmount, "SubVault should have received assets");
127127
}
128128

129-
function test_switchSubvault() public {
130-
MockSubVault oldSubVault = new MockSubVault(
131-
IERC20(address(token)),
132-
"Old Sub Vault",
133-
"osvTST"
134-
);
135-
136-
MockSubVault newSubVault = new MockSubVault(
137-
IERC20(address(token)),
138-
"New Sub Vault",
139-
"nsvTST"
140-
);
141-
142-
vm.startPrank(user);
143-
token.mint();
144-
uint256 depositAmount = token.balanceOf(user);
145-
token.approve(address(vault), depositAmount);
146-
vault.deposit(depositAmount, user, 0);
147-
vm.stopPrank();
148-
149-
vault.setSubVault(oldSubVault, 1e18);
150-
151-
assertEq(address(vault.subVault()), address(oldSubVault), "Old subvault should be set");
152-
assertEq(oldSubVault.balanceOf(address(vault)), depositAmount, "Old subvault should have assets");
153-
assertEq(newSubVault.balanceOf(address(vault)), 0, "New subvault should have no assets initially");
154-
155-
uint256 minAssetExchRateWad = 1e18;
156-
uint256 minNewSubVaultExchRateWad = 1e18;
157-
158-
vm.expectEmit(true, true, false, false);
159-
emit SubvaultChanged(address(oldSubVault), address(0));
160-
vm.expectEmit(true, true, false, false);
161-
emit SubvaultChanged(address(0), address(newSubVault));
162-
163-
vault.switchSubVault(newSubVault, minAssetExchRateWad, minNewSubVaultExchRateWad);
164-
165-
assertEq(address(vault.subVault()), address(newSubVault), "New subvault should be set");
166-
assertEq(vault.totalAssets(), depositAmount, "Total assets should remain the same");
167-
assertEq(oldSubVault.balanceOf(address(vault)), 0, "Old subvault should have no assets");
168-
assertEq(newSubVault.balanceOf(address(vault)), depositAmount, "New subvault should have received assets");
169-
}
170-
171129
function test_revokeSubvault() public {
172130
MockSubVault subVault = new MockSubVault(
173131
IERC20(address(token)),

0 commit comments

Comments
 (0)