diff --git a/contracts/README.md b/contracts/README.md
index 8403927e9f..1e88700f01 100644
--- a/contracts/README.md
+++ b/contracts/README.md
@@ -125,11 +125,10 @@ You can enable the "hot deploy" mode when doing fork testing development. The mo
To enable Hot Deploys set the HOT_DEPLOY variable in the contracts/.env file. Enable various modes using comma separated flags to direct which contracts need source updated (in the node runtime):
- strategy -> strategy contract associated to fixture
-- vaultCore -> vaultCore or oethVaultCore depending on the nature of the fixture
-- vaultAdmin -> vaultAdmin or oethVaultAdmin depending on the nature of the fixture
+- vault -> OUSDVault or OETHVault depending on the nature of the fixture
- harvester -> harvester or oethHarvester (not yet supported)
-example: HOT_DEPLOY=strategy,vaultCore,vaultAdmin,harvester
+example: HOT_DEPLOY=strategy,vault,harvester
#### Supporting new fixtures / contracts
diff --git a/contracts/contracts/interfaces/IVault.sol b/contracts/contracts/interfaces/IVault.sol
index e294c2cde9..c517cf82b0 100644
--- a/contracts/contracts/interfaces/IVault.sol
+++ b/contracts/contracts/interfaces/IVault.sol
@@ -49,8 +49,6 @@ interface IVault {
function governor() external view returns (address);
- function ADMIN_IMPLEMENTATION() external view returns (address);
-
// VaultAdmin.sol
function setVaultBuffer(uint256 _vaultBuffer) external;
@@ -167,8 +165,6 @@ interface IVault {
function initialize(address) external;
- function setAdminImpl(address) external;
-
function addWithdrawalQueueLiquidity() external;
function requestWithdrawal(uint256 _amount)
diff --git a/contracts/contracts/mocks/MockOETHVault.sol b/contracts/contracts/mocks/MockOETHVault.sol
index 2cdd9e8a99..7b72c90189 100644
--- a/contracts/contracts/mocks/MockOETHVault.sol
+++ b/contracts/contracts/mocks/MockOETHVault.sol
@@ -1,14 +1,14 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
-import { OETHVaultCore } from "../vault/OETHVaultCore.sol";
+import { OETHVault } from "../vault/OETHVault.sol";
import { StableMath } from "../utils/StableMath.sol";
import "../utils/Helpers.sol";
-contract MockOETHVault is OETHVaultCore {
+contract MockOETHVault is OETHVault {
using StableMath for uint256;
- constructor(address _weth) OETHVaultCore(_weth) {
+ constructor(address _weth) OETHVault(_weth) {
_setGovernor(msg.sender);
}
diff --git a/contracts/contracts/mocks/MockOETHVaultAdmin.sol b/contracts/contracts/mocks/MockOETHVaultAdmin.sol
index ba5d1313d2..43c9689bd8 100644
--- a/contracts/contracts/mocks/MockOETHVaultAdmin.sol
+++ b/contracts/contracts/mocks/MockOETHVaultAdmin.sol
@@ -1,10 +1,10 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
-import { OETHVaultAdmin } from "../vault/OETHVaultAdmin.sol";
+import { OETHVault } from "../vault/OETHVault.sol";
-contract MockOETHVaultAdmin is OETHVaultAdmin {
- constructor(address _weth) OETHVaultAdmin(_weth) {}
+contract MockOETHVault is OETHVault {
+ constructor(address _weth) OETHVault(_weth) {}
// fetches the WETH amount in outstanding withdrawals
function outstandingWithdrawalsAmount()
diff --git a/contracts/contracts/mocks/MockVault.sol b/contracts/contracts/mocks/MockVault.sol
index b037530dd8..fb084b6883 100644
--- a/contracts/contracts/mocks/MockVault.sol
+++ b/contracts/contracts/mocks/MockVault.sol
@@ -1,16 +1,16 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
-import { VaultCore } from "../vault/VaultCore.sol";
+import { VaultAdmin } from "../vault/VaultAdmin.sol";
import { StableMath } from "../utils/StableMath.sol";
import "../utils/Helpers.sol";
-contract MockVault is VaultCore {
+contract MockVault is VaultAdmin {
using StableMath for uint256;
uint256 storedTotalValue;
- constructor(address _asset) VaultCore(_asset) {}
+ constructor(address _asset) VaultAdmin(_asset) {}
function setTotalValue(uint256 _value) public {
storedTotalValue = _value;
@@ -39,8 +39,4 @@ contract MockVault is VaultCore {
return 0;
}
}
-
- function setMaxSupplyDiff(uint256 _maxSupplyDiff) external onlyGovernor {
- maxSupplyDiff = _maxSupplyDiff;
- }
}
diff --git a/contracts/contracts/vault/OETHBaseVaultAdmin.sol b/contracts/contracts/vault/OETHBaseVault.sol
similarity index 84%
rename from contracts/contracts/vault/OETHBaseVaultAdmin.sol
rename to contracts/contracts/vault/OETHBaseVault.sol
index f663e7b4ea..16eebe01f5 100644
--- a/contracts/contracts/vault/OETHBaseVaultAdmin.sol
+++ b/contracts/contracts/vault/OETHBaseVault.sol
@@ -7,6 +7,6 @@ import { VaultAdmin } from "./VaultAdmin.sol";
* @title OETH Base VaultAdmin Contract
* @author Origin Protocol Inc
*/
-contract OETHBaseVaultAdmin is VaultAdmin {
+contract OETHBaseVault is VaultAdmin {
constructor(address _weth) VaultAdmin(_weth) {}
}
diff --git a/contracts/contracts/vault/OETHBaseVaultCore.sol b/contracts/contracts/vault/OETHBaseVaultCore.sol
deleted file mode 100644
index 9b9b0a83f3..0000000000
--- a/contracts/contracts/vault/OETHBaseVaultCore.sol
+++ /dev/null
@@ -1,12 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.0;
-
-import { VaultCore } from "./VaultCore.sol";
-
-/**
- * @title OETH Base VaultCore Contract
- * @author Origin Protocol Inc
- */
-contract OETHBaseVaultCore is VaultCore {
- constructor(address _weth) VaultCore(_weth) {}
-}
diff --git a/contracts/contracts/vault/OETHPlumeVaultCore.sol b/contracts/contracts/vault/OETHPlumeVault.sol
similarity index 73%
rename from contracts/contracts/vault/OETHPlumeVaultCore.sol
rename to contracts/contracts/vault/OETHPlumeVault.sol
index 5492ffa919..5a4e8e81a8 100644
--- a/contracts/contracts/vault/OETHPlumeVaultCore.sol
+++ b/contracts/contracts/vault/OETHPlumeVault.sol
@@ -1,16 +1,16 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
-import { VaultCore } from "./VaultCore.sol";
+import { VaultAdmin } from "./VaultAdmin.sol";
/**
- * @title OETH Plume VaultCore Contract
+ * @title OETH Plume VaultAdmin Contract
* @author Origin Protocol Inc
*/
-contract OETHPlumeVaultCore is VaultCore {
- constructor(address _weth) VaultCore(_weth) {}
+contract OETHPlumeVault is VaultAdmin {
+ constructor(address _weth) VaultAdmin(_weth) {}
- // @inheritdoc VaultCore
+ // @inheritdoc VaultAdmin
function _mint(
address,
uint256 _amount,
diff --git a/contracts/contracts/vault/OETHVaultAdmin.sol b/contracts/contracts/vault/OETHVault.sol
similarity index 85%
rename from contracts/contracts/vault/OETHVaultAdmin.sol
rename to contracts/contracts/vault/OETHVault.sol
index 8bf2e417ad..eb7d3b9f55 100644
--- a/contracts/contracts/vault/OETHVaultAdmin.sol
+++ b/contracts/contracts/vault/OETHVault.sol
@@ -7,6 +7,6 @@ import { VaultAdmin } from "./VaultAdmin.sol";
* @title OETH VaultAdmin Contract
* @author Origin Protocol Inc
*/
-contract OETHVaultAdmin is VaultAdmin {
+contract OETHVault is VaultAdmin {
constructor(address _weth) VaultAdmin(_weth) {}
}
diff --git a/contracts/contracts/vault/OETHVaultCore.sol b/contracts/contracts/vault/OETHVaultCore.sol
deleted file mode 100644
index 8356b95b0d..0000000000
--- a/contracts/contracts/vault/OETHVaultCore.sol
+++ /dev/null
@@ -1,12 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.0;
-
-import { VaultCore } from "./VaultCore.sol";
-
-/**
- * @title OETH VaultCore Contract
- * @author Origin Protocol Inc
- */
-contract OETHVaultCore is VaultCore {
- constructor(address _weth) VaultCore(_weth) {}
-}
diff --git a/contracts/contracts/vault/OSonicVaultAdmin.sol b/contracts/contracts/vault/OSVault.sol
similarity index 85%
rename from contracts/contracts/vault/OSonicVaultAdmin.sol
rename to contracts/contracts/vault/OSVault.sol
index aefc3d661d..c965871034 100644
--- a/contracts/contracts/vault/OSonicVaultAdmin.sol
+++ b/contracts/contracts/vault/OSVault.sol
@@ -7,6 +7,6 @@ import { VaultAdmin } from "./VaultAdmin.sol";
* @title Origin Sonic VaultAdmin contract on Sonic
* @author Origin Protocol Inc
*/
-contract OSonicVaultAdmin is VaultAdmin {
+contract OSVault is VaultAdmin {
constructor(address _wS) VaultAdmin(_wS) {}
}
diff --git a/contracts/contracts/vault/OSonicVault.sol b/contracts/contracts/vault/OSonicVault.sol
new file mode 100644
index 0000000000..9f65d3d0d7
--- /dev/null
+++ b/contracts/contracts/vault/OSonicVault.sol
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.0;
+
+import { VaultAdmin } from "./VaultAdmin.sol";
+
+/**
+ * @title Origin Sonic VaultAdmin contract on Sonic
+ * @author Origin Protocol Inc
+ */
+contract OSonicVault is VaultAdmin {
+ constructor(address _wS) VaultAdmin(_wS) {}
+}
diff --git a/contracts/contracts/vault/OSonicVaultCore.sol b/contracts/contracts/vault/OSonicVaultCore.sol
deleted file mode 100644
index 2af58f1830..0000000000
--- a/contracts/contracts/vault/OSonicVaultCore.sol
+++ /dev/null
@@ -1,13 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.0;
-
-import { VaultCore } from "./VaultCore.sol";
-
-/**
- * @title Origin Sonic VaultCore contract on Sonic
- * @author Origin Protocol Inc
- */
-contract OSonicVaultCore is VaultCore {
- /// @param _wS Sonic's Wrapped S token
- constructor(address _wS) VaultCore(_wS) {}
-}
diff --git a/contracts/contracts/vault/OUSDVaultAdmin.sol b/contracts/contracts/vault/OUSDVault.sol
similarity index 85%
rename from contracts/contracts/vault/OUSDVaultAdmin.sol
rename to contracts/contracts/vault/OUSDVault.sol
index 5ec50a406f..a800636b91 100644
--- a/contracts/contracts/vault/OUSDVaultAdmin.sol
+++ b/contracts/contracts/vault/OUSDVault.sol
@@ -7,6 +7,6 @@ import { VaultAdmin } from "./VaultAdmin.sol";
* @title OUSD VaultAdmin Contract
* @author Origin Protocol Inc
*/
-contract OUSDVaultAdmin is VaultAdmin {
+contract OUSDVault is VaultAdmin {
constructor(address _usdc) VaultAdmin(_usdc) {}
}
diff --git a/contracts/contracts/vault/OUSDVaultCore.sol b/contracts/contracts/vault/OUSDVaultCore.sol
deleted file mode 100644
index 28ae839d58..0000000000
--- a/contracts/contracts/vault/OUSDVaultCore.sol
+++ /dev/null
@@ -1,12 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.0;
-
-import { VaultCore } from "./VaultCore.sol";
-
-/**
- * @title OUSD VaultCore Contract
- * @author Origin Protocol Inc
- */
-contract OUSDVaultCore is VaultCore {
- constructor(address _usdc) VaultCore(_usdc) {}
-}
diff --git a/contracts/contracts/vault/README.md b/contracts/contracts/vault/README.md
index 651a49f2d6..868f4d7b2a 100644
--- a/contracts/contracts/vault/README.md
+++ b/contracts/contracts/vault/README.md
@@ -2,60 +2,14 @@
## Hierarchy
-
+
-## OUSD Vault
+## Vault
-## Vault Core Squashed
+## Vault Squashed
-
+
### Storage

-
-## Vault Admin Squashed
-
-
-
-## OETH Vault
-
-## Vault Core Squashed
-
-
-
-## Vault Admin Squashed
-
-
-
-### Storage
-
-
-
-## Base OETH Vault
-
-## Vault Core Squashed
-
-
-
-## Vault Admin Squashed
-
-
-
-### Storage
-
-
-
-## Origin Sonic (OS) Vault
-
-## Vault Core Squashed
-
-
-
-## Vault Admin Squashed
-
-
-
-### Storage
-
-
\ No newline at end of file
diff --git a/contracts/contracts/vault/VaultAdmin.sol b/contracts/contracts/vault/VaultAdmin.sol
index acc67a82bd..261b9d70d4 100644
--- a/contracts/contracts/vault/VaultAdmin.sol
+++ b/contracts/contracts/vault/VaultAdmin.sol
@@ -13,9 +13,9 @@ import { IVault } from "../interfaces/IVault.sol";
import { StableMath } from "../utils/StableMath.sol";
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
-import "./VaultStorage.sol";
+import "./VaultCore.sol";
-abstract contract VaultAdmin is VaultStorage {
+abstract contract VaultAdmin is VaultCore {
using SafeERC20 for IERC20;
using StableMath for uint256;
using SafeCast for uint256;
@@ -31,7 +31,7 @@ abstract contract VaultAdmin is VaultStorage {
_;
}
- constructor(address _asset) VaultStorage(_asset) {}
+ constructor(address _asset) VaultCore(_asset) {}
/***************************************
Configuration
@@ -415,27 +415,6 @@ abstract contract VaultAdmin is VaultStorage {
IERC20(_asset).safeTransfer(governor(), _amount);
}
- /**
- * @dev Calculate how much asset (eg. WETH or USDC) in the vault is not reserved for the withdrawal queue.
- * That is, it is available to be redeemed or deposited into a strategy.
- */
- function _assetAvailable() internal view returns (uint256 assetAvailable) {
- WithdrawalQueueMetadata memory queue = withdrawalQueueMetadata;
-
- // The amount of asset that is still to be claimed in the withdrawal queue
- uint256 outstandingWithdrawals = queue.queued - queue.claimed;
-
- // The amount of sitting in asset in the vault
- uint256 assetBalance = IERC20(asset).balanceOf(address(this));
-
- // If there is not enough asset in the vault to cover the outstanding withdrawals
- if (assetBalance <= outstandingWithdrawals) {
- return 0;
- }
-
- return assetBalance - outstandingWithdrawals;
- }
-
/***************************************
Strategies Admin
****************************************/
diff --git a/contracts/contracts/vault/VaultCore.sol b/contracts/contracts/vault/VaultCore.sol
index 53970e6b09..99047e8d98 100644
--- a/contracts/contracts/vault/VaultCore.sol
+++ b/contracts/contracts/vault/VaultCore.sol
@@ -736,53 +736,6 @@ abstract contract VaultCore is VaultInitializer {
return asset == _asset;
}
- function ADMIN_IMPLEMENTATION() external view returns (address adminImpl) {
- bytes32 slot = adminImplPosition;
- // solhint-disable-next-line no-inline-assembly
- assembly {
- adminImpl := sload(slot)
- }
- }
-
- /**
- * @dev Falldown to the admin implementation
- * @notice This is a catch all for all functions not declared in core
- */
- // solhint-disable-next-line no-complex-fallback
- fallback() external {
- bytes32 slot = adminImplPosition;
- // solhint-disable-next-line no-inline-assembly
- assembly {
- // Copy msg.data. We take full control of memory in this inline assembly
- // block because it will not return to Solidity code. We overwrite the
- // Solidity scratch pad at memory position 0.
- calldatacopy(0, 0, calldatasize())
-
- // Call the implementation.
- // out and outsize are 0 because we don't know the size yet.
- let result := delegatecall(
- gas(),
- sload(slot),
- 0,
- calldatasize(),
- 0,
- 0
- )
-
- // Copy the returned data.
- returndatacopy(0, 0, returndatasize())
-
- switch result
- // delegatecall returns 0 on error.
- case 0 {
- revert(0, returndatasize())
- }
- default {
- return(0, returndatasize())
- }
- }
- }
-
function _min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
diff --git a/contracts/contracts/vault/VaultStorage.sol b/contracts/contracts/vault/VaultStorage.sol
index 64a9e13169..00fc068449 100644
--- a/contracts/contracts/vault/VaultStorage.sol
+++ b/contracts/contracts/vault/VaultStorage.sol
@@ -97,11 +97,6 @@ abstract contract VaultStorage is Initializable, Governable {
/// @dev Address of the OToken token. eg OUSD or OETH.
OUSD public oUSD;
- /// @dev Storage slot for the address of the VaultAdmin contract that is delegated to
- // keccak256("OUSD.vault.governor.admin.impl");
- bytes32 public constant adminImplPosition =
- 0xa2bd3d3cf188a41358c8b401076eb59066b09dec5775650c0de4c55187d17bd9;
-
/// @dev Address of the contract responsible for post rebase syncs with AMMs
address private _deprecated_rebaseHooksAddr = address(0);
@@ -227,20 +222,4 @@ abstract contract VaultStorage is Initializable, Governable {
asset = _asset;
assetDecimals = _decimals;
}
-
- /**
- * @notice set the implementation for the admin, this needs to be in a base class else we cannot set it
- * @param newImpl address of the implementation
- */
- function setAdminImpl(address newImpl) external onlyGovernor {
- require(
- Address.isContract(newImpl),
- "new implementation is not a contract"
- );
- bytes32 position = adminImplPosition;
- // solhint-disable-next-line no-inline-assembly
- assembly {
- sstore(position, newImpl)
- }
- }
}
diff --git a/contracts/contracts/vault/AbstractOTokenZapper.sol b/contracts/contracts/zapper/AbstractOTokenZapper.sol
similarity index 100%
rename from contracts/contracts/vault/AbstractOTokenZapper.sol
rename to contracts/contracts/zapper/AbstractOTokenZapper.sol
diff --git a/contracts/contracts/vault/OETHBaseZapper.sol b/contracts/contracts/zapper/OETHBaseZapper.sol
similarity index 100%
rename from contracts/contracts/vault/OETHBaseZapper.sol
rename to contracts/contracts/zapper/OETHBaseZapper.sol
diff --git a/contracts/contracts/vault/OETHZapper.sol b/contracts/contracts/zapper/OETHZapper.sol
similarity index 100%
rename from contracts/contracts/vault/OETHZapper.sol
rename to contracts/contracts/zapper/OETHZapper.sol
diff --git a/contracts/contracts/vault/OSonicZapper.sol b/contracts/contracts/zapper/OSonicZapper.sol
similarity index 100%
rename from contracts/contracts/vault/OSonicZapper.sol
rename to contracts/contracts/zapper/OSonicZapper.sol
diff --git a/contracts/deploy/base/000_mock.js b/contracts/deploy/base/000_mock.js
index 53a2df1bad..9691f51043 100644
--- a/contracts/deploy/base/000_mock.js
+++ b/contracts/deploy/base/000_mock.js
@@ -22,11 +22,11 @@ const deployWOETH = async () => {
// Initialize the proxy
// prettier-ignore
await cWOETHProxy["initialize(address,address,bytes)"](
- cWOETHImpl.address,
- governorAddr,
- "0x",
- await getTxOpts()
- );
+ cWOETHImpl.address,
+ governorAddr,
+ "0x",
+ await getTxOpts()
+ );
// Initialize implementation
const cWOETH = await ethers.getContractAt(
@@ -83,10 +83,7 @@ const deployCore = async () => {
const dwOETHb = await deployWithConfirmation("WOETHBase", [
cOETHbProxy.address, // Base token
]);
- const dOETHbVaultCore = await deployWithConfirmation("OETHBaseVaultCore", [
- cWETH.address,
- ]);
- const dOETHbVaultAdmin = await deployWithConfirmation("OETHBaseVaultAdmin", [
+ const dOETHbVaultAdmin = await deployWithConfirmation("OETHBaseVault", [
cWETH.address,
]);
@@ -125,7 +122,7 @@ const deployCore = async () => {
// prettier-ignore
await cOETHbVaultProxy
.connect(sDeployer)["initialize(address,address,bytes)"](
- dOETHbVaultCore.address,
+ dOETHbVaultAdmin.address,
governorAddr,
initDataOETHbVault
);
@@ -143,8 +140,7 @@ const deployCore = async () => {
initDatawOETHb
)
- await cOETHbVaultProxy.connect(sGovernor).upgradeTo(dOETHbVaultCore.address);
- await cOETHbVault.connect(sGovernor).setAdminImpl(dOETHbVaultAdmin.address);
+ await cOETHbVaultProxy.connect(sGovernor).upgradeTo(dOETHbVaultAdmin.address);
await cOETHbVault.connect(sGovernor).unpauseCapital();
};
diff --git a/contracts/deploy/base/040_vault_upgrade.js b/contracts/deploy/base/040_vault_upgrade.js
index 1a72a580ac..b44242adb2 100644
--- a/contracts/deploy/base/040_vault_upgrade.js
+++ b/contracts/deploy/base/040_vault_upgrade.js
@@ -8,18 +8,11 @@ module.exports = deployOnBase(
//proposalId: "",
},
async ({ ethers }) => {
- // 1. Deploy new VaultCore and VaultAdmin implementations
- const dOETHbVaultCore = await deployWithConfirmation(
- "OETHBaseVaultCore",
+ // 1. Deploy OETHBaseVault implementations
+ const dOETHbVault = await deployWithConfirmation(
+ "OETHBaseVault",
[addresses.base.WETH],
- "OETHBaseVaultCore",
- true
- );
-
- const dOETHbVaultAdmin = await deployWithConfirmation(
- "OETHBaseVaultAdmin",
- [addresses.base.WETH],
- "OETHBaseVaultAdmin",
+ "OETHBaseVault",
true
);
@@ -60,7 +53,7 @@ module.exports = deployOnBase(
// Governance Actions
// ----------------
return {
- name: "Upgrade OETHBase Vault to new Core and Admin implementations",
+ name: "Upgrade OETHBaseVault to new single Vault implementations",
actions: [
// 1. Upgrade Bridged WOETH Strategy implementation
{
@@ -68,19 +61,13 @@ module.exports = deployOnBase(
signature: "upgradeTo(address)",
args: [dStrategyImpl.address],
},
- // 2. Upgrade VaultCore implementation
+ // 2. Upgrade OETHBaseVaultProxy to new implementation
{
contract: cOETHbVaultProxy,
signature: "upgradeTo(address)",
- args: [dOETHbVaultCore.address],
- },
- // 3. Set VaultAdmin implementation
- {
- contract: cOETHbVault,
- signature: "setAdminImpl(address)",
- args: [dOETHbVaultAdmin.address],
+ args: [dOETHbVault.address],
},
- // 4. Set Aerodrome AMO as default strategy
+ // 3. Set Aerodrome AMO as default strategy
{
contract: cOETHbVault,
signature: "setDefaultStrategy(address)",
diff --git a/contracts/deploy/deployActions.js b/contracts/deploy/deployActions.js
index 76878e69d6..175d4b4f44 100644
--- a/contracts/deploy/deployActions.js
+++ b/contracts/deploy/deployActions.js
@@ -1074,10 +1074,7 @@ const deployOETHCore = async () => {
// Main contracts
const dOETH = await deployWithConfirmation("OETH");
- const dOETHVaultCore = await deployWithConfirmation("OETHVaultCore", [
- assetAddresses.WETH,
- ]);
- const dOETHVaultAdmin = await deployWithConfirmation("OETHVaultAdmin", [
+ const dOETHVault = await deployWithConfirmation("OETHVault", [
assetAddresses.WETH,
]);
@@ -1103,7 +1100,7 @@ const deployOETHCore = async () => {
// prettier-ignore
await withConfirmation(
cOETHVaultProxy.connect(sDeployer)["initialize(address,address,bytes)"](
- dOETHVaultCore.address,
+ dOETHVault.address,
governorAddr,
[],
await getTxOpts()
@@ -1119,15 +1116,10 @@ const deployOETHCore = async () => {
log("Initialized OETHVault");
await withConfirmation(
- cOETHVaultProxy.connect(sGovernor).upgradeTo(dOETHVaultCore.address)
+ cOETHVaultProxy.connect(sGovernor).upgradeTo(dOETHVault.address)
);
log("Upgraded VaultCore implementation");
- await withConfirmation(
- cOETHVault.connect(sGovernor).setAdminImpl(dOETHVaultAdmin.address)
- );
-
- log("Initialized VaultAdmin implementation");
// Initialize OETH
/* Set the original resolution to 27 decimals. We used to have it set to 18
* decimals at launch and then migrated to 27. Having it set to 27 it will
@@ -1175,10 +1167,7 @@ const deployOUSDCore = async () => {
}
// Deploy Vault implementations
- const dVaultCore = await deployWithConfirmation("OUSDVaultCore", [
- assetAddresses.USDC,
- ]);
- const dVaultAdmin = await deployWithConfirmation("OUSDVaultAdmin", [
+ const dVaultAdmin = await deployWithConfirmation("OUSDVault", [
assetAddresses.USDC,
]);
log("Deployed OUSD Vault implementations (Core, Admin)");
@@ -1203,7 +1192,7 @@ const deployOUSDCore = async () => {
// prettier-ignore
await withConfirmation(
cVaultProxy.connect(sDeployer)["initialize(address,address,bytes)"](
- dVaultCore.address,
+ dVaultAdmin.address,
governorAddr,
[],
await getTxOpts()
@@ -1217,12 +1206,6 @@ const deployOUSDCore = async () => {
);
log("Initialized OUSD Vault Core");
- // Set Vault implementation
- await withConfirmation(
- cVault.connect(sGovernor).setAdminImpl(dVaultAdmin.address)
- );
- log("Initialized OUSD VaultAdmin implementation");
-
// Initialize OUSD
/* Set the original resolution to 27 decimals. We used to have it set to 18
* decimals at launch and then migrated to 27. Having it set to 27 it will
diff --git a/contracts/deploy/mainnet/166_ousd_vault_upgrade.js b/contracts/deploy/mainnet/166_ousd_vault_upgrade.js
index 240547d634..deecc6d252 100644
--- a/contracts/deploy/mainnet/166_ousd_vault_upgrade.js
+++ b/contracts/deploy/mainnet/166_ousd_vault_upgrade.js
@@ -15,10 +15,7 @@ module.exports = deploymentWithGovernanceProposal(
// ----------------
// 1. Deploy new OUSD Vault Core and Admin implementations
- const dVaultCore = await deployWithConfirmation("OUSDVaultCore", [
- addresses.mainnet.USDC,
- ]);
- const dVaultAdmin = await deployWithConfirmation("OUSDVaultAdmin", [
+ const dVault = await deployWithConfirmation("OUSDVault", [
addresses.mainnet.USDC,
]);
@@ -38,21 +35,15 @@ module.exports = deploymentWithGovernanceProposal(
{
contract: cVaultProxy,
signature: "upgradeTo(address)",
- args: [dVaultCore.address],
- },
- // 2. Set OUSD Vault proxy to the new admin vault implementation
- {
- contract: cVault,
- signature: "setAdminImpl(address)",
- args: [dVaultAdmin.address],
+ args: [dVault.address],
},
- // 3. Add OUSD/USDC AMO to mint whitelist
+ // 2. Add OUSD/USDC AMO to mint whitelist
{
contract: cVault,
signature: "addStrategyToMintWhitelist(address)",
args: [cOUSDAMO.address],
},
- // 4. Set OUSD/USDC AMO as default strategy
+ // 3. Set OUSD/USDC AMO as default strategy
{
contract: cVault,
signature: "setDefaultStrategy(address)",
diff --git a/contracts/deploy/mainnet/167_oeth_vault_upgrade.js b/contracts/deploy/mainnet/167_oeth_vault_upgrade.js
index 85898f0172..3ccf98a10e 100644
--- a/contracts/deploy/mainnet/167_oeth_vault_upgrade.js
+++ b/contracts/deploy/mainnet/167_oeth_vault_upgrade.js
@@ -15,14 +15,8 @@ module.exports = deploymentWithGovernanceProposal(
// ----------------
// 1. Deploy new OETH Vault Core and Admin implementations
- const dVaultCore = await deployWithConfirmation(
- "OETHVaultCore",
- [addresses.mainnet.WETH],
- undefined,
- true
- );
const dVaultAdmin = await deployWithConfirmation(
- "OETHVaultAdmin",
+ "OETHVault",
[addresses.mainnet.WETH],
undefined,
true
@@ -46,15 +40,9 @@ module.exports = deploymentWithGovernanceProposal(
{
contract: cVaultProxy,
signature: "upgradeTo(address)",
- args: [dVaultCore.address],
- },
- // 2. Set OETH Vault proxy to the new admin vault implementation
- {
- contract: cVault,
- signature: "setAdminImpl(address)",
args: [dVaultAdmin.address],
},
- // 3. Set OETH/WETH AMO as default strategy
+ // 2. Set OETH/WETH AMO as default strategy
{
contract: cVault,
signature: "setDefaultStrategy(address)",
diff --git a/contracts/deploy/plume/002_core.js b/contracts/deploy/plume/002_core.js
index ba6eae2b9a..c090140a6c 100644
--- a/contracts/deploy/plume/002_core.js
+++ b/contracts/deploy/plume/002_core.js
@@ -53,11 +53,10 @@ module.exports = deployOnPlume(
const dOETHpVaultCore = await deployWithConfirmation("OETHBaseVaultCore", [
addresses.plume.WETH,
]);
- const dOETHpVaultAdmin = await deployWithConfirmation(
- "OETHBaseVaultAdmin",
- [addresses.plume.WETH]
- );
- console.log("OETHBaseVaultAdmin deployed at", dOETHpVaultAdmin.address);
+ const dOETHpVaultAdmin = await deployWithConfirmation("OETHBaseVault", [
+ addresses.plume.WETH,
+ ]);
+ console.log("OETHBaseVault deployed at", dOETHpVaultAdmin.address);
// Get contract instances
const cOETHp = await ethers.getContractAt("OETHPlume", cOETHpProxy.address);
const cwOETHp = await ethers.getContractAt(
diff --git a/contracts/deploy/sonic/000_mock.js b/contracts/deploy/sonic/000_mock.js
index 3abd7cb04e..6612533399 100644
--- a/contracts/deploy/sonic/000_mock.js
+++ b/contracts/deploy/sonic/000_mock.js
@@ -46,11 +46,8 @@ const deployCore = async () => {
const dWOSonic = await deployWithConfirmation("WOSonic", [
cOSonicProxy.address, // Base token
]);
- const dOSonicVaultCore = await deployWithConfirmation("OSonicVaultCore", [
- cWS.address,
- ]);
- const dOSonicVaultAdmin = await deployWithConfirmation("OSonicVaultAdmin", [
+ const dOSonicVault = await deployWithConfirmation("OSonicVault", [
cWS.address,
]);
@@ -89,7 +86,7 @@ const deployCore = async () => {
// prettier-ignore
await cOSonicVaultProxy
.connect(sDeployer)["initialize(address,address,bytes)"](
- dOSonicVaultCore.address,
+ dOSonicVault.address,
governorAddr,
initDataOSonicVault
);
@@ -107,10 +104,7 @@ const deployCore = async () => {
initDataWOSonic
)
- await cOSonicVaultProxy
- .connect(sGovernor)
- .upgradeTo(dOSonicVaultCore.address);
- await cOSonicVault.connect(sGovernor).setAdminImpl(dOSonicVaultAdmin.address);
+ await cOSonicVaultProxy.connect(sGovernor).upgradeTo(dOSonicVault.address);
await cOSonicVault.connect(sGovernor).unpauseCapital();
// Set withdrawal claim delay to 1 day
@@ -160,13 +154,13 @@ const deployStakingStrategy = async () => {
cSonicStakingStrategy.interface.encodeFunctionData("initialize()", []);
// prettier-ignore
await withConfirmation(
- cSonicStakingStrategyProxy
- .connect(sDeployer)["initialize(address,address,bytes)"](
- dSonicStakingStrategy.address,
- governorAddr,
- initSonicStakingStrategy
- )
- );
+ cSonicStakingStrategyProxy
+ .connect(sDeployer)["initialize(address,address,bytes)"](
+ dSonicStakingStrategy.address,
+ governorAddr,
+ initSonicStakingStrategy
+ )
+ );
};
const deployDripper = async () => {
@@ -188,12 +182,12 @@ const deployDripper = async () => {
// prettier-ignore
await withConfirmation(
cOSonicDripperProxy
- .connect(sDeployer)["initialize(address,address,bytes)"](
- dFixedRateDripper.address,
- governorAddr,
- "0x"
- )
- );
+ .connect(sDeployer)["initialize(address,address,bytes)"](
+ dFixedRateDripper.address,
+ governorAddr,
+ "0x"
+ )
+ );
};
const main = async () => {
diff --git a/contracts/deploy/sonic/001_vault_and_token.js b/contracts/deploy/sonic/001_vault_and_token.js
index 0ecb106f98..73b4ec9c81 100644
--- a/contracts/deploy/sonic/001_vault_and_token.js
+++ b/contracts/deploy/sonic/001_vault_and_token.js
@@ -49,10 +49,10 @@ module.exports = deployOnSonic(
]);
console.log(`Deployed Vault Core to ${dOSonicVaultCore.address}`);
- const dOSonicVaultAdmin = await deployWithConfirmation("OSonicVaultAdmin", [
+ const dOSonicVault = await deployWithConfirmation("OSonicVault", [
cWS.address,
]);
- console.log(`Deployed Vault Admin to ${dOSonicVaultAdmin.address}`);
+ console.log(`Deployed Vault Admin to ${dOSonicVault.address}`);
// Get contract instances
const cOSonic = await ethers.getContractAt("OSonic", cOSonicProxy.address);
@@ -77,11 +77,11 @@ module.exports = deployOnSonic(
// prettier-ignore
await cOSonicProxy
- .connect(sDeployer)["initialize(address,address,bytes)"](
- dOSonic.address,
- addresses.sonic.timelock,
- initDataOSonic
- );
+ .connect(sDeployer)["initialize(address,address,bytes)"](
+ dOSonic.address,
+ addresses.sonic.timelock,
+ initDataOSonic
+ );
console.log("Initialized Origin S");
// Init OSonicVault
@@ -94,11 +94,11 @@ module.exports = deployOnSonic(
);
// prettier-ignore
await cOSonicVaultProxy
- .connect(sDeployer)["initialize(address,address,bytes)"](
- dOSonicVaultCore.address,
- addresses.sonic.timelock,
- initDataOSonicVault
- );
+ .connect(sDeployer)["initialize(address,address,bytes)"](
+ dOSonicVaultCore.address,
+ addresses.sonic.timelock,
+ initDataOSonicVault
+ );
console.log("Initialized Origin S Vault");
// Init WOSonic
@@ -108,11 +108,11 @@ module.exports = deployOnSonic(
);
// prettier-ignore
await cWOSonicProxy
- .connect(sDeployer)["initialize(address,address,bytes)"](
- dWOSonic.address,
- addresses.sonic.timelock,
- initDataWOSonic
- )
+ .connect(sDeployer)["initialize(address,address,bytes)"](
+ dWOSonic.address,
+ addresses.sonic.timelock,
+ initDataWOSonic
+ )
console.log("Initialized Wrapper Origin S");
// Deploy the Dripper
@@ -133,7 +133,7 @@ module.exports = deployOnSonic(
// Init the Dripper proxy
// prettier-ignore
await withConfirmation(
- cOSonicDripperProxy
+ cOSonicDripperProxy
.connect(sDeployer)["initialize(address,address,bytes)"](
dFixedRateDripper.address,
addresses.sonic.timelock,
@@ -170,7 +170,7 @@ module.exports = deployOnSonic(
{
contract: cOSonicVault,
signature: "setAdminImpl(address)",
- args: [dOSonicVaultAdmin.address],
+ args: [dOSonicVault.address],
},
// 3. Support wrapped S
{
diff --git a/contracts/deploy/sonic/026_vault_upgrade.js b/contracts/deploy/sonic/026_vault_upgrade.js
index 5099a0632d..30725e2e3a 100644
--- a/contracts/deploy/sonic/026_vault_upgrade.js
+++ b/contracts/deploy/sonic/026_vault_upgrade.js
@@ -8,18 +8,11 @@ module.exports = deployOnSonic(
//proposalId: "",
},
async ({ ethers }) => {
- // 1. Deploy new VaultCore and VaultAdmin implementations
- const dOSonicVaultCore = await deployWithConfirmation(
- "OSonicVaultCore",
+ // 1. Deploy new OSonicVault implementations
+ const dOSonicVault = await deployWithConfirmation(
+ "OSVault",
[addresses.sonic.wS],
- "OSonicVaultCore",
- true
- );
-
- const dOSonicVaultAdmin = await deployWithConfirmation(
- "OSonicVaultAdmin",
- [addresses.sonic.wS],
- "OSonicVaultAdmin",
+ "OSVault",
true
);
@@ -43,21 +36,15 @@ module.exports = deployOnSonic(
// Governance Actions
// ----------------
return {
- name: "Upgrade OSonic Vault to new Core and Admin implementations",
+ name: "Upgrade OSonicVault to new single Vault implementations",
actions: [
- // 1. Upgrade VaultCore implementation
+ // 1. Upgrade OSonicVaultProxy to new implementation
{
contract: cOSonicVaultProxy,
signature: "upgradeTo(address)",
- args: [dOSonicVaultCore.address],
- },
- // 2. Set VaultAdmin implementation
- {
- contract: cOSonicVault,
- signature: "setAdminImpl(address)",
- args: [dOSonicVaultAdmin.address],
+ args: [dOSonicVault.address],
},
- // 3. Set Sonic Staking Strategy as default strategy
+ // 2. Set Sonic Staking Strategy as default strategy
{
contract: cOSonicVault,
signature: "setDefaultStrategy(address)",
diff --git a/contracts/docs/OETHBaseVaultAdminSquashed.svg b/contracts/docs/OETHBaseVaultAdminSquashed.svg
deleted file mode 100644
index a4f23c6a14..0000000000
--- a/contracts/docs/OETHBaseVaultAdminSquashed.svg
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-
diff --git a/contracts/docs/OETHBaseVaultCoreSquashed.svg b/contracts/docs/OETHBaseVaultCoreSquashed.svg
deleted file mode 100644
index 194fb658f8..0000000000
--- a/contracts/docs/OETHBaseVaultCoreSquashed.svg
+++ /dev/null
@@ -1,173 +0,0 @@
-
-
-
-
-
diff --git a/contracts/docs/OETHBaseVaultStorage.svg b/contracts/docs/OETHBaseVaultStorage.svg
deleted file mode 100644
index f768dd006b..0000000000
--- a/contracts/docs/OETHBaseVaultStorage.svg
+++ /dev/null
@@ -1,382 +0,0 @@
-
-
-
-
-
diff --git a/contracts/docs/OETHVaultAdminSquashed.svg b/contracts/docs/OETHVaultAdminSquashed.svg
deleted file mode 100644
index 42ba2da7ee..0000000000
--- a/contracts/docs/OETHVaultAdminSquashed.svg
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-
diff --git a/contracts/docs/OETHVaultCoreSquashed.svg b/contracts/docs/OETHVaultCoreSquashed.svg
deleted file mode 100644
index 4bb8488671..0000000000
--- a/contracts/docs/OETHVaultCoreSquashed.svg
+++ /dev/null
@@ -1,173 +0,0 @@
-
-
-
-
-
diff --git a/contracts/docs/OETHVaultStorage.svg b/contracts/docs/OETHVaultStorage.svg
deleted file mode 100644
index e425f8712d..0000000000
--- a/contracts/docs/OETHVaultStorage.svg
+++ /dev/null
@@ -1,359 +0,0 @@
-
-
-
-
-
diff --git a/contracts/docs/OSonicVaultAdminSquashed.svg b/contracts/docs/OSonicVaultAdminSquashed.svg
deleted file mode 100644
index ba51485b4e..0000000000
--- a/contracts/docs/OSonicVaultAdminSquashed.svg
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-
diff --git a/contracts/docs/OSonicVaultCoreSquashed.svg b/contracts/docs/OSonicVaultCoreSquashed.svg
deleted file mode 100644
index 9d467a3367..0000000000
--- a/contracts/docs/OSonicVaultCoreSquashed.svg
+++ /dev/null
@@ -1,173 +0,0 @@
-
-
-
-
-
diff --git a/contracts/docs/OSonicVaultStorage.svg b/contracts/docs/OSonicVaultStorage.svg
deleted file mode 100644
index 1f9243ad89..0000000000
--- a/contracts/docs/OSonicVaultStorage.svg
+++ /dev/null
@@ -1,359 +0,0 @@
-
-
-
-
-
diff --git a/contracts/docs/VaultCoreSquashed.svg b/contracts/docs/VaultCoreSquashed.svg
deleted file mode 100644
index e0accdf3c5..0000000000
--- a/contracts/docs/VaultCoreSquashed.svg
+++ /dev/null
@@ -1,174 +0,0 @@
-
-
-
-
-
diff --git a/contracts/docs/VaultHierarchy.svg b/contracts/docs/VaultHierarchy.svg
index 2954412d6e..d7d69bf0d9 100644
--- a/contracts/docs/VaultHierarchy.svg
+++ b/contracts/docs/VaultHierarchy.svg
@@ -4,180 +4,159 @@
-