diff --git a/contracts/deploy/001_core.js b/contracts/deploy/deployActions.js similarity index 80% rename from contracts/deploy/001_core.js rename to contracts/deploy/deployActions.js index 2577e0fd9f..f10d75d06d 100644 --- a/contracts/deploy/001_core.js +++ b/contracts/deploy/deployActions.js @@ -5,8 +5,8 @@ const { getAssetAddresses, getOracleAddresses, isMainnet, - isFork, isMainnetOrFork, + isHolesky, } = require("../test/helpers.js"); const { deployWithConfirmation, withConfirmation } = require("../utils/deploy"); const { @@ -14,7 +14,7 @@ const { lusdMetapoolLPCRVPid, } = require("../utils/constants"); -const log = require("../utils/logger")("deploy:001_core"); +const log = require("../utils/logger")("deploy:core"); /** * Deploy AAVE Strategy which only supports DAI. @@ -449,7 +449,7 @@ const configureVault = async () => { /** * Configure OETH Vault by adding supported assets and Strategies. */ -const configureOETHVault = async () => { +const configureOETHVault = async (isSimpleOETH) => { const assetAddresses = await getAssetAddresses(deployments); const { governorAddr, strategistAddr } = await getNamedAccounts(); // Signers @@ -463,7 +463,8 @@ const configureOETHVault = async () => { ); // Set up supported assets for Vault const { WETH, RETH, stETH, frxETH } = assetAddresses; - for (const asset of [WETH, RETH, stETH, frxETH]) { + const assets = isSimpleOETH ? [WETH] : [WETH, RETH, stETH, frxETH]; + for (const asset of assets) { await withConfirmation(cVault.connect(sGovernor).supportAsset(asset, 0)); } log("Added assets to OETH Vault"); @@ -497,45 +498,29 @@ const configureOETHVault = async () => { ); }; -/** - * Deploy Harvester - */ -const deployHarvesters = async () => { +const deployOUSDHarvester = async (ousdDripper) => { const assetAddresses = await getAssetAddresses(deployments); const { governorAddr } = await getNamedAccounts(); const sGovernor = await ethers.provider.getSigner(governorAddr); const cVaultProxy = await ethers.getContract("VaultProxy"); - const cOETHVaultProxy = await ethers.getContract("OETHVaultProxy"); const dHarvesterProxy = await deployWithConfirmation( "HarvesterProxy", [], "InitializeGovernedUpgradeabilityProxy" ); - const dOETHHarvesterProxy = await deployWithConfirmation( - "OETHHarvesterProxy", - [], - "InitializeGovernedUpgradeabilityProxy" - ); const cHarvesterProxy = await ethers.getContract("HarvesterProxy"); - const cOETHHarvesterProxy = await ethers.getContract("OETHHarvesterProxy"); + const dHarvester = await deployWithConfirmation("Harvester", [ cVaultProxy.address, assetAddresses.USDT, ]); - const dOETHHarvester = await deployWithConfirmation("OETHHarvester", [ - cOETHVaultProxy.address, - assetAddresses.WETH, - ]); + const cHarvester = await ethers.getContractAt( "Harvester", dHarvesterProxy.address ); - const cOETHHarvester = await ethers.getContractAt( - "OETHHarvester", - dOETHHarvesterProxy.address - ); await withConfirmation( cHarvesterProxy["initialize(address,address,bytes)"]( @@ -544,6 +529,44 @@ const deployHarvesters = async () => { [] ) ); + + log("Initialized HarvesterProxy"); + + await withConfirmation( + cHarvester + .connect(sGovernor) + .setRewardProceedsAddress( + isMainnet || isHolesky ? ousdDripper.address : cVaultProxy.address + ) + ); + + return dHarvesterProxy; +}; + +const deployOETHHarvester = async (oethDripper) => { + const assetAddresses = await getAssetAddresses(deployments); + const { governorAddr } = await getNamedAccounts(); + const sGovernor = await ethers.provider.getSigner(governorAddr); + const cVaultProxy = await ethers.getContract("VaultProxy"); + const cOETHVaultProxy = await ethers.getContract("OETHVaultProxy"); + + const dOETHHarvesterProxy = await deployWithConfirmation( + "OETHHarvesterProxy", + [], + "InitializeGovernedUpgradeabilityProxy" + ); + const cOETHHarvesterProxy = await ethers.getContract("OETHHarvesterProxy"); + + const dOETHHarvester = await deployWithConfirmation("OETHHarvester", [ + cOETHVaultProxy.address, + assetAddresses.WETH, + ]); + + const cOETHHarvester = await ethers.getContractAt( + "OETHHarvester", + dOETHHarvesterProxy.address + ); + await withConfirmation( cOETHHarvesterProxy["initialize(address,address,bytes)"]( dOETHHarvester.address, @@ -551,21 +574,26 @@ const deployHarvesters = async () => { [] ) ); + log("Initialized OETHHarvesterProxy"); - if (!isMainnet) { - await withConfirmation( - cHarvester - .connect(sGovernor) - .setRewardProceedsAddress(cVaultProxy.address) - ); + await withConfirmation( + cOETHHarvester + .connect(sGovernor) + .setRewardProceedsAddress( + isMainnet || isHolesky ? oethDripper.address : cVaultProxy.address + ) + ); - await withConfirmation( - cOETHHarvester - .connect(sGovernor) - .setRewardProceedsAddress(cOETHVaultProxy.address) - ); - } + return dOETHHarvesterProxy; +}; + +/** + * Deploy Harvester + */ +const deployHarvesters = async (ousdDripper, oethDripper) => { + const dHarvesterProxy = await deployOUSDHarvester(ousdDripper); + const dOETHHarvesterProxy = await deployOETHHarvester(oethDripper); return [dHarvesterProxy, dOETHHarvesterProxy]; }; @@ -648,7 +676,7 @@ const configureStrategies = async (harvesterProxy, oethHarvesterProxy) => { ); }; -const deployDripper = async () => { +const deployOUSDDripper = async () => { const { governorAddr } = await getNamedAccounts(); const assetAddresses = await getAssetAddresses(deployments); @@ -669,6 +697,41 @@ const deployDripper = async () => { [] ) ); + + return cDripperProxy; +}; + +const deployOETHDripper = async () => { + const { governorAddr } = await getNamedAccounts(); + + const assetAddresses = await getAssetAddresses(deployments); + const cVaultProxy = await ethers.getContract("OETHVaultProxy"); + + // Deploy Dripper Impl + const dDripper = await deployWithConfirmation("OETHDripper", [ + cVaultProxy.address, + assetAddresses.WETH, + ]); + + await deployWithConfirmation("OETHDripperProxy"); + // Deploy Dripper Proxy + const cDripperProxy = await ethers.getContract("OETHDripperProxy"); + await withConfirmation( + cDripperProxy["initialize(address,address,bytes)"]( + dDripper.address, + governorAddr, + [] + ) + ); + + return cDripperProxy; +}; + +const deployDrippers = async () => { + const ousdDripper = await deployOUSDDripper(); + const oethDripper = await deployOETHDripper(); + + return [ousdDripper, oethDripper]; }; /** @@ -713,6 +776,140 @@ const deployFraxEthStrategy = async () => { return cFraxETHStrategy; }; +/** + * Upgrade NativeStakingSSVStrategy + */ +const upgradeNativeStakingSSVStrategy = async () => { + const assetAddresses = await getAssetAddresses(deployments); + const { deployerAddr } = await getNamedAccounts(); + const cOETHVaultProxy = await ethers.getContract("OETHVaultProxy"); + const strategyProxy = await ethers.getContract( + "NativeStakingSSVStrategyProxy" + ); + const sDeployer = await ethers.provider.getSigner(deployerAddr); + + const cFeeAccumulatorProxy = await ethers.getContract( + "NativeStakingFeeAccumulatorProxy" + ); + + const dStrategyImpl = await deployWithConfirmation( + "NativeStakingSSVStrategy", + [ + [addresses.zero, cOETHVaultProxy.address], //_baseConfig + assetAddresses.WETH, // wethAddress + assetAddresses.SSV, // ssvToken + assetAddresses.SSVNetwork, // ssvNetwork + cFeeAccumulatorProxy.address, // feeAccumulator + assetAddresses.beaconChainDepositContract, // depositContractMock + ] + ); + + await withConfirmation( + strategyProxy.connect(sDeployer).upgradeTo(dStrategyImpl.address) + ); +}; + +/** + * Deploy NativeStakingSSVStrategy + * Deploys a proxy, the actual strategy, initializes the proxy and initializes + * the strategy. + */ +const deployNativeStakingSSVStrategy = async () => { + const assetAddresses = await getAssetAddresses(deployments); + const { governorAddr, deployerAddr } = await getNamedAccounts(); + const sDeployer = await ethers.provider.getSigner(deployerAddr); + const cOETHVaultProxy = await ethers.getContract("OETHVaultProxy"); + + log("Deploy NativeStakingSSVStrategyProxy"); + const dNativeStakingSSVStrategyProxy = await deployWithConfirmation( + "NativeStakingSSVStrategyProxy" + ); + const cNativeStakingSSVStrategyProxy = await ethers.getContract( + "NativeStakingSSVStrategyProxy" + ); + + log("Deploy FeeAccumulator proxy"); + const dFeeAccumulatorProxy = await deployWithConfirmation( + "NativeStakingFeeAccumulatorProxy" + ); + const cFeeAccumulatorProxy = await ethers.getContractAt( + "NativeStakingFeeAccumulatorProxy", + dFeeAccumulatorProxy.address + ); + + log("Deploy NativeStakingSSVStrategy"); + const dStrategyImpl = await deployWithConfirmation( + "NativeStakingSSVStrategy", + [ + [addresses.zero, cOETHVaultProxy.address], //_baseConfig + assetAddresses.WETH, // wethAddress + assetAddresses.SSV, // ssvToken + assetAddresses.SSVNetwork, // ssvNetwork + dFeeAccumulatorProxy.address, // feeAccumulator + assetAddresses.beaconChainDepositContract, // depositContractMock + ] + ); + const cStrategyImpl = await ethers.getContractAt( + "NativeStakingSSVStrategy", + dStrategyImpl.address + ); + + log("Deploy encode initialize function of the strategy contract"); + const initData = cStrategyImpl.interface.encodeFunctionData( + "initialize(address[],address[],address[])", + [ + [assetAddresses.WETH], // reward token addresses + /* no need to specify WETH as an asset, since we have that overriden in the "supportsAsset" + * function on the strategy + */ + [], // asset token addresses + [], // platform tokens addresses + ] + ); + + log("Initialize the proxy and execute the initialize strategy function"); + await withConfirmation( + cNativeStakingSSVStrategyProxy.connect(sDeployer)[ + // eslint-disable-next-line no-unexpected-multiline + "initialize(address,address,bytes)" + ]( + cStrategyImpl.address, // implementation address + governorAddr, // governance + initData // data for call to the initialize function on the strategy + ) + ); + + const cStrategy = await ethers.getContractAt( + "NativeStakingSSVStrategy", + dNativeStakingSSVStrategyProxy.address + ); + + log("Approve spending of the SSV token"); + await withConfirmation(cStrategy.connect(sDeployer).safeApproveAllTokens()); + + log("Deploy fee accumulator implementation"); + const dFeeAccumulator = await deployWithConfirmation("FeeAccumulator", [ + cNativeStakingSSVStrategyProxy.address, // STRATEGY + ]); + const cFeeAccumulator = await ethers.getContractAt( + "FeeAccumulator", + dFeeAccumulator.address + ); + + log("Init fee accumulator proxy"); + await withConfirmation( + cFeeAccumulatorProxy.connect(sDeployer)[ + // eslint-disable-next-line no-unexpected-multiline + "initialize(address,address,bytes)" + ]( + cFeeAccumulator.address, // implementation address + governorAddr, // governance + "0x" // do not call any initialize functions + ) + ); + return cStrategy; +}; + /** * Deploy the OracleRouter and initialise it with Chainlink sources. */ @@ -721,12 +918,28 @@ const deployOracles = async () => { // Signers const sDeployer = await ethers.provider.getSigner(deployerAddr); - // TODO: Change this to intelligently decide which router contract to deploy? - const oracleContract = isMainnet ? "OracleRouter" : "MockOracleRouter"; - await deployWithConfirmation("OracleRouter", [], oracleContract); + let oracleContract = "MockOracleRouter"; + let contractName = "OracleRouter"; + let args = []; + if (isMainnet) { + oracleContract = "OracleRouter"; + } else if (isHolesky) { + oracleContract = "OETHFixedOracle"; + contractName = "OETHOracleRouter"; + args = [addresses.zero]; + } + + await deployWithConfirmation(contractName, args, oracleContract); const oracleRouter = await ethers.getContract("OracleRouter"); log("Deployed OracleRouter"); + if (isHolesky) { + // no need to configure any feeds since they are hardcoded to a fixed feed + // TODO: further deployments will require more intelligent separation of different + // chains / environment oracle deployments + return; + } + const assetAddresses = await getAssetAddresses(deployments); await deployWithConfirmation("AuraWETHPriceFeed", [ assetAddresses.auraWeightedOraclePool, @@ -775,12 +988,8 @@ const deployOracles = async () => { log("Initialized AuraWETHPriceFeed"); }; -/** - * Deploy the core contracts (Vault and OUSD). - */ -const deployCore = async () => { +const deployOETHCore = async () => { const { governorAddr } = await hre.getNamedAccounts(); - const assetAddresses = await getAssetAddresses(deployments); log(`Using asset addresses: ${JSON.stringify(assetAddresses, null, 2)}`); @@ -788,35 +997,23 @@ const deployCore = async () => { const sGovernor = await ethers.provider.getSigner(governorAddr); // Proxies - await deployWithConfirmation("OUSDProxy"); - await deployWithConfirmation("VaultProxy"); await deployWithConfirmation("OETHProxy"); await deployWithConfirmation("OETHVaultProxy"); // Main contracts - const dOUSD = await deployWithConfirmation("OUSD"); - const dVault = await deployWithConfirmation("Vault"); - const dVaultCore = await deployWithConfirmation("VaultCore"); - const dVaultAdmin = await deployWithConfirmation("VaultAdmin"); - const dOETH = await deployWithConfirmation("OETH"); const dOETHVault = await deployWithConfirmation("OETHVault"); const dOETHVaultCore = await deployWithConfirmation("OETHVaultCore", [ - addresses.mainnet.WETH, + assetAddresses.WETH, ]); - - await deployWithConfirmation("Governor", [governorAddr, 60]); + const dOETHVaultAdmin = await deployWithConfirmation("OETHVaultAdmin"); // Get contract instances - const cOUSDProxy = await ethers.getContract("OUSDProxy"); - const cVaultProxy = await ethers.getContract("VaultProxy"); - const cOUSD = await ethers.getContractAt("OUSD", cOUSDProxy.address); - const cOracleRouter = await ethers.getContract("OracleRouter"); - const cVault = await ethers.getContractAt("IVault", cVaultProxy.address); - const cOETHProxy = await ethers.getContract("OETHProxy"); const cOETHVaultProxy = await ethers.getContract("OETHVaultProxy"); const cOETH = await ethers.getContractAt("OETH", cOETHProxy.address); + const cOracleRouter = await ethers.getContract("OracleRouter"); + const cOETHOracleRouter = isMainnet ? await ethers.getContract("OETHOracleRouter") : cOracleRouter; @@ -826,41 +1023,110 @@ const deployCore = async () => { ); await withConfirmation( - cOUSDProxy["initialize(address,address,bytes)"]( - dOUSD.address, + cOETHProxy["initialize(address,address,bytes)"]( + dOETH.address, governorAddr, [] ) ); - log("Initialized OUSDProxy"); + log("Initialized OETHProxy"); await withConfirmation( - cOETHProxy["initialize(address,address,bytes)"]( - dOETH.address, + cOETHVaultProxy["initialize(address,address,bytes)"]( + dOETHVault.address, governorAddr, [] ) ); - log("Initialized OETHProxy"); + log("Initialized OETHVaultProxy"); - // Need to call the initializer on the Vault then upgraded it to the actual - // VaultCore implementation await withConfirmation( - cVaultProxy["initialize(address,address,bytes)"]( - dVault.address, + cOETHVault + .connect(sGovernor) + .initialize(cOETHOracleRouter.address, cOETHProxy.address) + ); + log("Initialized OETHVault"); + + await withConfirmation( + cOETHVaultProxy.connect(sGovernor).upgradeTo(dOETHVaultCore.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 + * make unit tests run at that resolution that more closely mimics mainnet + * behaviour. + * + * Another reason: + * Testing Vault value checker with small changes in Vault value and supply + * was behaving incorrectly because the rounding error that is present with + * 18 decimal point resolution, which was interfering with unit test correctness. + * Possible solutions were: + * - scale up unit test values so rounding error isn't a problem + * - have unit test run in 27 decimal point rebasingCreditsPerToken resolution + * + * Latter seems more fitting - due to mimicking production better as already mentioned. + */ + const resolution = ethers.utils.parseUnits("1", 27); + await withConfirmation( + cOETH + .connect(sGovernor) + .initialize("Origin Ether", "OETH", cOETHVaultProxy.address, resolution) + ); + log("Initialized OETH"); +}; + +const deployOUSDCore = async () => { + const { governorAddr } = await hre.getNamedAccounts(); + const assetAddresses = await getAssetAddresses(deployments); + log(`Using asset addresses: ${JSON.stringify(assetAddresses, null, 2)}`); + + // Signers + const sGovernor = await ethers.provider.getSigner(governorAddr); + + // Proxies + await deployWithConfirmation("OUSDProxy"); + await deployWithConfirmation("VaultProxy"); + + // Main contracts + const dOUSD = await deployWithConfirmation("OUSD"); + const dVault = await deployWithConfirmation("Vault"); + const dVaultCore = await deployWithConfirmation("VaultCore"); + const dVaultAdmin = await deployWithConfirmation("VaultAdmin"); + + await deployWithConfirmation("Governor", [governorAddr, 60]); + + // Get contract instances + const cOUSDProxy = await ethers.getContract("OUSDProxy"); + const cVaultProxy = await ethers.getContract("VaultProxy"); + const cOUSD = await ethers.getContractAt("OUSD", cOUSDProxy.address); + const cOracleRouter = await ethers.getContract("OracleRouter"); + const cVault = await ethers.getContractAt("IVault", cVaultProxy.address); + + await withConfirmation( + cOUSDProxy["initialize(address,address,bytes)"]( + dOUSD.address, governorAddr, [] ) ); - log("Initialized OETHVaultProxy"); + log("Initialized OUSDProxy"); + + // Need to call the initializer on the Vault then upgraded it to the actual + // VaultCore implementation await withConfirmation( - cOETHVaultProxy["initialize(address,address,bytes)"]( - dOETHVault.address, + cVaultProxy["initialize(address,address,bytes)"]( + dVault.address, governorAddr, [] ) ); - log("Initialized OETHVaultProxy"); await withConfirmation( cVault @@ -868,27 +1134,15 @@ const deployCore = async () => { .initialize(cOracleRouter.address, cOUSDProxy.address) ); log("Initialized Vault"); - await withConfirmation( - cOETHVault - .connect(sGovernor) - .initialize(cOETHOracleRouter.address, cOETHProxy.address) - ); - log("Initialized OETHVault"); await withConfirmation( cVaultProxy.connect(sGovernor).upgradeTo(dVaultCore.address) ); - await withConfirmation( - cOETHVaultProxy.connect(sGovernor).upgradeTo(dOETHVaultCore.address) - ); log("Upgraded VaultCore implementation"); await withConfirmation( cVault.connect(sGovernor).setAdminImpl(dVaultAdmin.address) ); - await withConfirmation( - cOETHVault.connect(sGovernor).setAdminImpl(dVaultAdmin.address) - ); log("Initialized VaultAdmin implementation"); // Initialize OUSD @@ -914,13 +1168,14 @@ const deployCore = async () => { .initialize("Origin Dollar", "OUSD", cVaultProxy.address, resolution) ); log("Initialized OUSD"); +}; - await withConfirmation( - cOETH - .connect(sGovernor) - .initialize("Origin Ether", "OETH", cOETHVaultProxy.address, resolution) - ); - log("Initialized OETH"); +/** + * Deploy the core contracts (Vault and OUSD). + */ +const deployCore = async () => { + await deployOUSDCore(); + await deployOETHCore(); }; // deploy curve metapool mocks @@ -1219,38 +1474,36 @@ const deployOUSDSwapper = async () => { await vault.connect(sGovernor).setOracleSlippage(assetAddresses.USDT, 50); }; -const main = async () => { - console.log("Running 001_core deployment..."); - await deployOracles(); - await deployCore(); - await deployCurveMetapoolMocks(); - await deployCurveLUSDMetapoolMocks(); - await deployCompoundStrategy(); - await deployAaveStrategy(); - await deployThreePoolStrategy(); - await deployConvexStrategy(); - await deployConvexOUSDMetaStrategy(); - await deployConvexLUSDMetaStrategy(); - await deployFraxEthStrategy(); - const [harvesterProxy, oethHarvesterProxy] = await deployHarvesters(); - await configureVault(); - await configureOETHVault(); - await configureStrategies(harvesterProxy, oethHarvesterProxy); - await deployDripper(); - await deployFlipper(); - await deployBuyback(); - await deployUniswapV3Pool(); - await deployVaultValueChecker(); - await deployWOusd(); - await deployOETHSwapper(); - await deployOUSDSwapper(); - console.log("001_core deploy done."); - return true; +module.exports = { + deployOracles, + deployCore, + deployOETHCore, + deployOUSDCore, + deployCurveMetapoolMocks, + deployCurveLUSDMetapoolMocks, + deployCompoundStrategy, + deployAaveStrategy, + deployThreePoolStrategy, + deployConvexStrategy, + deployConvexOUSDMetaStrategy, + deployConvexLUSDMetaStrategy, + deployNativeStakingSSVStrategy, + deployFraxEthStrategy, + deployDrippers, + deployOETHDripper, + deployOUSDDripper, + deployHarvesters, + deployOETHHarvester, + deployOUSDHarvester, + configureVault, + configureOETHVault, + configureStrategies, + deployFlipper, + deployBuyback, + deployUniswapV3Pool, + deployVaultValueChecker, + deployWOusd, + deployOETHSwapper, + deployOUSDSwapper, + upgradeNativeStakingSSVStrategy, }; - -main.id = "001_core"; -main.dependencies = ["mocks"]; -main.tags = ["unit_tests", "arb_unit_tests"]; -main.skip = () => isFork; - -module.exports = main; diff --git a/contracts/deploy/000_mock.js b/contracts/deploy/mainnet/000_mock.js similarity index 97% rename from contracts/deploy/000_mock.js rename to contracts/deploy/mainnet/000_mock.js index 824a69f8a5..7a34789eaf 100644 --- a/contracts/deploy/000_mock.js +++ b/contracts/deploy/mainnet/000_mock.js @@ -1,9 +1,9 @@ const { parseUnits } = require("ethers").utils; -const { isMainnetOrFork } = require("../test/helpers"); -const addresses = require("../utils/addresses"); -const { threeCRVPid } = require("../utils/constants"); -const { replaceContractAt } = require("../utils/hardhat"); -const { hardhatSetBalance } = require("../test/_fund"); +const { isMainnetOrFork } = require("../../test/helpers"); +const addresses = require("../../utils/addresses"); +const { threeCRVPid } = require("../../utils/constants"); +const { replaceContractAt } = require("../../utils/hardhat"); +const { hardhatSetBalance } = require("../../test/_fund"); const { abi: FACTORY_ABI, diff --git a/contracts/deploy/mainnet/001_core.js b/contracts/deploy/mainnet/001_core.js new file mode 100644 index 0000000000..a601289378 --- /dev/null +++ b/contracts/deploy/mainnet/001_core.js @@ -0,0 +1,66 @@ +const { isFork } = require("../../test/helpers.js"); + +const { + deployOracles, + deployCore, + deployCurveMetapoolMocks, + deployCurveLUSDMetapoolMocks, + deployCompoundStrategy, + deployAaveStrategy, + deployThreePoolStrategy, + deployConvexStrategy, + deployConvexOUSDMetaStrategy, + deployConvexLUSDMetaStrategy, + deployFraxEthStrategy, + deployDrippers, + deployHarvesters, + configureVault, + configureOETHVault, + configureStrategies, + deployFlipper, + deployBuyback, + deployUniswapV3Pool, + deployVaultValueChecker, + deployWOusd, + deployOETHSwapper, + deployOUSDSwapper, +} = require("../deployActions"); + +const main = async () => { + console.log("Running 001_core deployment..."); + await deployOracles(); + await deployCore(); + await deployCurveMetapoolMocks(); + await deployCurveLUSDMetapoolMocks(); + await deployCompoundStrategy(); + await deployAaveStrategy(); + await deployThreePoolStrategy(); + await deployConvexStrategy(); + await deployConvexOUSDMetaStrategy(); + await deployConvexLUSDMetaStrategy(); + await deployFraxEthStrategy(); + const [ousdDripper, oethDripper] = await deployDrippers(); + const [harvesterProxy, oethHarvesterProxy] = await deployHarvesters( + ousdDripper, + oethDripper + ); + await configureVault(); + await configureOETHVault(false); + await configureStrategies(harvesterProxy, oethHarvesterProxy); + await deployFlipper(); + await deployBuyback(); + await deployUniswapV3Pool(); + await deployVaultValueChecker(); + await deployWOusd(); + await deployOETHSwapper(); + await deployOUSDSwapper(); + console.log("001_core deploy done."); + return true; +}; + +main.id = "001_core"; +main.dependencies = ["mocks"]; +main.tags = ["unit_tests", "arb_unit_tests"]; +main.skip = () => isFork; + +module.exports = main; diff --git a/contracts/deploy/002_upgrade_vault.js b/contracts/deploy/mainnet/002_upgrade_vault.js similarity index 93% rename from contracts/deploy/002_upgrade_vault.js rename to contracts/deploy/mainnet/002_upgrade_vault.js index ead6ebbd44..2c928cb303 100644 --- a/contracts/deploy/002_upgrade_vault.js +++ b/contracts/deploy/mainnet/002_upgrade_vault.js @@ -1,12 +1,12 @@ -const { isMainnet, isFork } = require("../test/helpers.js"); -const { proposeArgs } = require("../utils/governor"); +const { isMainnet, isFork } = require("../../test/helpers.js"); +const { proposeArgs } = require("../../utils/governor"); const { deployWithConfirmation, withConfirmation, sleep, -} = require("../utils/deploy"); +} = require("../../utils/deploy"); -const { impersonateAndFund } = require("../utils/signers.js"); +const { impersonateAndFund } = require("../../utils/signers.js"); const upgradeVaultCoreAndAdmin = async ({ getNamedAccounts }) => { console.log("Running 002_vault_upgrade deployment..."); diff --git a/contracts/deploy/003_governor.js b/contracts/deploy/mainnet/003_governor.js similarity index 85% rename from contracts/deploy/003_governor.js rename to contracts/deploy/mainnet/003_governor.js index 8838c7174c..f67f0ad74a 100644 --- a/contracts/deploy/003_governor.js +++ b/contracts/deploy/mainnet/003_governor.js @@ -2,8 +2,8 @@ // Deploys a new governor contract on Mainnet // -const { isMainnet, isFork } = require("../test/helpers.js"); -const { deployWithConfirmation } = require("../utils/deploy"); +const { isMainnet, isFork } = require("../../test/helpers.js"); +const { deployWithConfirmation } = require("../../utils/deploy"); const deployName = "003_governor"; diff --git a/contracts/deploy/004_single_asset_staking.js b/contracts/deploy/mainnet/004_single_asset_staking.js similarity index 96% rename from contracts/deploy/004_single_asset_staking.js rename to contracts/deploy/mainnet/004_single_asset_staking.js index 4fe79afda2..8ef883a0e3 100644 --- a/contracts/deploy/004_single_asset_staking.js +++ b/contracts/deploy/mainnet/004_single_asset_staking.js @@ -7,15 +7,15 @@ const { isFork, isTest, isMainnetOrFork, -} = require("../test/helpers.js"); +} = require("../../test/helpers.js"); const { utils } = require("ethers"); const { log, deployWithConfirmation, withConfirmation, executeProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); const deployName = "004_single_asset_staking"; @@ -114,7 +114,7 @@ const singleAssetStaking = async ({ getNamedAccounts, deployments }) => { dropProofDepth = process.env.DROP_PROOF_DEPTH; } else { // use testing generated scripts - const { computeRootHash } = require("../utils/stake"); + const { computeRootHash } = require("../../utils/stake"); const testPayouts = require("../scripts/staking/rawAccountsToBeCompensated.json"); const root = await computeRootHash(cOGNStaking.address, testPayouts); dropRootHash = root.hash; diff --git a/contracts/deploy/005_compensation_claims.js b/contracts/deploy/mainnet/005_compensation_claims.js similarity index 92% rename from contracts/deploy/005_compensation_claims.js rename to contracts/deploy/mainnet/005_compensation_claims.js index 169f3317c5..19ab6cc88b 100644 --- a/contracts/deploy/005_compensation_claims.js +++ b/contracts/deploy/mainnet/005_compensation_claims.js @@ -1,4 +1,4 @@ -const { isMainnet, isFork } = require("../test/helpers.js"); +const { isMainnet, isFork } = require("../../test/helpers.js"); const { log, @@ -6,9 +6,9 @@ const { withConfirmation, executeProposal, sendProposal, -} = require("../utils/deploy"); -const { getTxOpts } = require("../utils/tx"); -const { proposeArgs } = require("../utils/governor"); +} = require("../../utils/deploy"); +const { getTxOpts } = require("../../utils/tx"); +const { proposeArgs } = require("../../utils/governor"); const deployName = "005_compensation_claims"; diff --git a/contracts/deploy/006_liquidity_reward.js b/contracts/deploy/mainnet/006_liquidity_reward.js similarity index 97% rename from contracts/deploy/006_liquidity_reward.js rename to contracts/deploy/mainnet/006_liquidity_reward.js index 19ff7d35fa..0d752541dd 100644 --- a/contracts/deploy/006_liquidity_reward.js +++ b/contracts/deploy/mainnet/006_liquidity_reward.js @@ -6,14 +6,14 @@ const { isMainnet, isFork, isMainnetOrFork, -} = require("../test/helpers.js"); -const addresses = require("../utils/addresses.js"); +} = require("../../test/helpers.js"); +const addresses = require("../../utils/addresses.js"); const { utils } = require("ethers"); const { log, deployWithConfirmation, withConfirmation, -} = require("../utils/deploy"); +} = require("../../utils/deploy"); const deployName = "006_liquidity_reward"; diff --git a/contracts/deploy/007_upgrade_single_asset_staking.js b/contracts/deploy/mainnet/007_upgrade_single_asset_staking.js similarity index 91% rename from contracts/deploy/007_upgrade_single_asset_staking.js rename to contracts/deploy/mainnet/007_upgrade_single_asset_staking.js index 2cd3a6b6c7..02f423d384 100644 --- a/contracts/deploy/007_upgrade_single_asset_staking.js +++ b/contracts/deploy/mainnet/007_upgrade_single_asset_staking.js @@ -1,14 +1,14 @@ // // Script to upgrade the Single Asset Staking contract. // -const { isMainnet, isFork } = require("../test/helpers.js"); +const { isMainnet, isFork } = require("../../test/helpers.js"); const { log, deployWithConfirmation, executeProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const { getTxOpts } = require("../../utils/tx"); const deployName = "007_upgrade_single_asset_staking"; diff --git a/contracts/deploy/008_ousd_reset.js b/contracts/deploy/mainnet/008_ousd_reset.js similarity index 98% rename from contracts/deploy/008_ousd_reset.js rename to contracts/deploy/mainnet/008_ousd_reset.js index 9b73df6eab..b37bc755e7 100644 --- a/contracts/deploy/008_ousd_reset.js +++ b/contracts/deploy/mainnet/008_ousd_reset.js @@ -1,22 +1,22 @@ const hre = require("hardhat"); const { utils } = require("ethers"); -const addresses = require("../utils/addresses"); +const addresses = require("../../utils/addresses"); const { getAssetAddresses, getOracleAddresses, isMainnet, isFork, isMainnetOrFork, -} = require("../test/helpers.js"); +} = require("../../test/helpers.js"); const { log, deployWithConfirmation, withConfirmation, executeProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const { getTxOpts } = require("../../utils/tx"); const deployName = "008_ousd_reset"; diff --git a/contracts/deploy/009_ousd_fix.js b/contracts/deploy/mainnet/009_ousd_fix.js similarity index 93% rename from contracts/deploy/009_ousd_fix.js rename to contracts/deploy/mainnet/009_ousd_fix.js index 5faa55cf74..ac77861116 100644 --- a/contracts/deploy/009_ousd_fix.js +++ b/contracts/deploy/mainnet/009_ousd_fix.js @@ -1,15 +1,15 @@ const hre = require("hardhat"); -const { isMainnet, isFork } = require("../test/helpers.js"); +const { isMainnet, isFork } = require("../../test/helpers.js"); const { log, deployWithConfirmation, withConfirmation, executeProposal, sendProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const { getTxOpts } = require("../../utils/tx"); const deployName = "009_ousd_fix"; diff --git a/contracts/deploy/010_upgrade_single_asset_staking.js b/contracts/deploy/mainnet/010_upgrade_single_asset_staking.js similarity index 90% rename from contracts/deploy/010_upgrade_single_asset_staking.js rename to contracts/deploy/mainnet/010_upgrade_single_asset_staking.js index da6b3ffb46..b390fe5c06 100644 --- a/contracts/deploy/010_upgrade_single_asset_staking.js +++ b/contracts/deploy/mainnet/010_upgrade_single_asset_staking.js @@ -1,15 +1,15 @@ // // Script to upgrade the Single Asset Staking contract. // -const { isMainnet, isFork } = require("../test/helpers.js"); +const { isMainnet, isFork } = require("../../test/helpers.js"); const { log, deployWithConfirmation, executeProposal, sendProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const { getTxOpts } = require("../../utils/tx"); const deployName = "010_upgrade_single_asset_staking"; diff --git a/contracts/deploy/011_ousd_fix.js b/contracts/deploy/mainnet/011_ousd_fix.js similarity index 89% rename from contracts/deploy/011_ousd_fix.js rename to contracts/deploy/mainnet/011_ousd_fix.js index 92a65cc1ff..790f204a3f 100644 --- a/contracts/deploy/011_ousd_fix.js +++ b/contracts/deploy/mainnet/011_ousd_fix.js @@ -1,13 +1,13 @@ -const { isMainnet, isFork } = require("../test/helpers.js"); +const { isMainnet, isFork } = require("../../test/helpers.js"); const { log, deployWithConfirmation, withConfirmation, executeProposal, sendProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const { getTxOpts } = require("../../utils/tx"); const deployName = "011_ousd_fix"; diff --git a/contracts/deploy/012_upgrades.js b/contracts/deploy/mainnet/012_upgrades.js similarity index 93% rename from contracts/deploy/012_upgrades.js rename to contracts/deploy/mainnet/012_upgrades.js index ffe55a9452..3224d8d663 100644 --- a/contracts/deploy/012_upgrades.js +++ b/contracts/deploy/mainnet/012_upgrades.js @@ -1,13 +1,13 @@ -const { isMainnet, isFork, isSmokeTest } = require("../test/helpers.js"); +const { isMainnet, isFork, isSmokeTest } = require("../../test/helpers.js"); const { log, deployWithConfirmation, withConfirmation, executeProposal, sendProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const { getTxOpts } = require("../../utils/tx"); const deployName = "012_upgrades"; diff --git a/contracts/deploy/013_trustee.js b/contracts/deploy/mainnet/013_trustee.js similarity index 92% rename from contracts/deploy/013_trustee.js rename to contracts/deploy/mainnet/013_trustee.js index 82a2478544..fd261aa8b3 100644 --- a/contracts/deploy/013_trustee.js +++ b/contracts/deploy/mainnet/013_trustee.js @@ -1,13 +1,13 @@ -const { isMainnet, isFork, isSmokeTest } = require("../test/helpers.js"); +const { isMainnet, isFork, isSmokeTest } = require("../../test/helpers.js"); const { log, deployWithConfirmation, withConfirmation, executeProposal, sendProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const { getTxOpts } = require("../../utils/tx"); const deployName = "013_trustee"; diff --git a/contracts/deploy/014_3pool_strategy.js b/contracts/deploy/mainnet/014_3pool_strategy.js similarity index 96% rename from contracts/deploy/014_3pool_strategy.js rename to contracts/deploy/mainnet/014_3pool_strategy.js index 164fb4c1a4..bcbe1aed02 100644 --- a/contracts/deploy/014_3pool_strategy.js +++ b/contracts/deploy/mainnet/014_3pool_strategy.js @@ -3,16 +3,16 @@ const { isMainnet, isFork, isSmokeTest, -} = require("../test/helpers.js"); +} = require("../../test/helpers.js"); const { log, deployWithConfirmation, withConfirmation, executeProposal, sendProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const { getTxOpts } = require("../../utils/tx"); const deployName = "014_3pool_strategy"; diff --git a/contracts/deploy/015_flipper.js b/contracts/deploy/mainnet/015_flipper.js similarity index 89% rename from contracts/deploy/015_flipper.js rename to contracts/deploy/mainnet/015_flipper.js index 282a6d8284..8c79cd648c 100644 --- a/contracts/deploy/015_flipper.js +++ b/contracts/deploy/mainnet/015_flipper.js @@ -1,11 +1,11 @@ -const { isMainnet, isFork, isSmokeTest } = require("../test/helpers.js"); +const { isMainnet, isFork, isSmokeTest } = require("../../test/helpers.js"); const { log, deployWithConfirmation, withConfirmation, -} = require("../utils/deploy"); -const { getTxOpts } = require("../utils/tx"); -const { impersonateAndFund } = require("../utils/signers.js"); +} = require("../../utils/deploy"); +const { getTxOpts } = require("../../utils/tx"); +const { impersonateAndFund } = require("../../utils/signers.js"); const deployName = "015_flipper"; diff --git a/contracts/deploy/016_chainlink_and_buyback.js b/contracts/deploy/mainnet/016_chainlink_and_buyback.js similarity index 94% rename from contracts/deploy/016_chainlink_and_buyback.js rename to contracts/deploy/mainnet/016_chainlink_and_buyback.js index e3e0c79ca6..5e4332c00d 100644 --- a/contracts/deploy/016_chainlink_and_buyback.js +++ b/contracts/deploy/mainnet/016_chainlink_and_buyback.js @@ -1,13 +1,13 @@ -const { isMainnet, isFork, isSmokeTest } = require("../test/helpers.js"); +const { isMainnet, isFork, isSmokeTest } = require("../../test/helpers.js"); const { log, deployWithConfirmation, withConfirmation, executeProposal, sendProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const { getTxOpts } = require("../../utils/tx"); const deployName = "016_chainlink_and_buyback"; diff --git a/contracts/deploy/017_3pool_strategy_update.js b/contracts/deploy/mainnet/017_3pool_strategy_update.js similarity index 90% rename from contracts/deploy/017_3pool_strategy_update.js rename to contracts/deploy/mainnet/017_3pool_strategy_update.js index 2bb0fcca0c..08b4421ffe 100644 --- a/contracts/deploy/017_3pool_strategy_update.js +++ b/contracts/deploy/mainnet/017_3pool_strategy_update.js @@ -1,13 +1,13 @@ -const { isMainnet, isFork, isSmokeTest } = require("../test/helpers.js"); +const { isMainnet, isFork, isSmokeTest } = require("../../test/helpers.js"); const { log, deployWithConfirmation, withConfirmation, executeProposal, sendProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const { getTxOpts } = require("../../utils/tx"); const deployName = "017_3pool_strategy_update"; diff --git a/contracts/deploy/018_upgrade_governor.js b/contracts/deploy/mainnet/018_upgrade_governor.js similarity index 95% rename from contracts/deploy/018_upgrade_governor.js rename to contracts/deploy/mainnet/018_upgrade_governor.js index 8cf912dd05..008fb80591 100644 --- a/contracts/deploy/018_upgrade_governor.js +++ b/contracts/deploy/mainnet/018_upgrade_governor.js @@ -2,15 +2,15 @@ // 2. Submit a proposal on the old governor to call transferGovernance() on all governable contracts. // 3. Submit a proposal on the new governor to call claimGovernance() on all governable contracts. -const { isMainnet, isFork, isSmokeTest } = require("../test/helpers.js"); +const { isMainnet, isFork, isSmokeTest } = require("../../test/helpers.js"); const { log, deployWithConfirmation, executeProposal, sendProposal, -} = require("../utils/deploy"); -const { proposeArgs } = require("../utils/governor"); -const addresses = require("../utils/addresses"); +} = require("../../utils/deploy"); +const { proposeArgs } = require("../../utils/governor"); +const addresses = require("../../utils/addresses"); const deployName = "018_upgrade_governor"; diff --git a/contracts/deploy/019_resolution_and_savings.js b/contracts/deploy/mainnet/019_resolution_and_savings.js similarity index 92% rename from contracts/deploy/019_resolution_and_savings.js rename to contracts/deploy/mainnet/019_resolution_and_savings.js index 53b90fbc25..ab008cef50 100644 --- a/contracts/deploy/019_resolution_and_savings.js +++ b/contracts/deploy/mainnet/019_resolution_and_savings.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "019_resolution_and_savings" }, diff --git a/contracts/deploy/020_new_governor.js b/contracts/deploy/mainnet/020_new_governor.js similarity index 95% rename from contracts/deploy/020_new_governor.js rename to contracts/deploy/mainnet/020_new_governor.js index 603f2db8ca..54e114a4be 100644 --- a/contracts/deploy/020_new_governor.js +++ b/contracts/deploy/mainnet/020_new_governor.js @@ -1,6 +1,6 @@ const hre = require("hardhat"); -const { log, deploymentWithProposal } = require("../utils/deploy"); +const { log, deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "020_new_governor" }, diff --git a/contracts/deploy/021_solidity_upgrade.js b/contracts/deploy/mainnet/021_solidity_upgrade.js similarity index 98% rename from contracts/deploy/021_solidity_upgrade.js rename to contracts/deploy/mainnet/021_solidity_upgrade.js index 9e1f0f660f..035ededcee 100644 --- a/contracts/deploy/021_solidity_upgrade.js +++ b/contracts/deploy/mainnet/021_solidity_upgrade.js @@ -1,7 +1,7 @@ const hre = require("hardhat"); -const addresses = require("../utils/addresses"); -const { log, deploymentWithProposal } = require("../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { log, deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "021_solidity_upgrade" }, diff --git a/contracts/deploy/023_set_dai_default_strategy.js b/contracts/deploy/mainnet/023_set_dai_default_strategy.js similarity index 95% rename from contracts/deploy/023_set_dai_default_strategy.js rename to contracts/deploy/mainnet/023_set_dai_default_strategy.js index c0c542acb3..5e8a1dc8de 100644 --- a/contracts/deploy/023_set_dai_default_strategy.js +++ b/contracts/deploy/mainnet/023_set_dai_default_strategy.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "023_set_dai_default_strategy" }, diff --git a/contracts/deploy/024_resolution_upgrade_start.js b/contracts/deploy/mainnet/024_resolution_upgrade_start.js similarity index 93% rename from contracts/deploy/024_resolution_upgrade_start.js rename to contracts/deploy/mainnet/024_resolution_upgrade_start.js index abea4e6f08..3d2b676827 100644 --- a/contracts/deploy/024_resolution_upgrade_start.js +++ b/contracts/deploy/mainnet/024_resolution_upgrade_start.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "024_resolution_upgrade_start", forceDeploy: false }, diff --git a/contracts/deploy/025_resolution_upgrade_end.js b/contracts/deploy/mainnet/025_resolution_upgrade_end.js similarity index 90% rename from contracts/deploy/025_resolution_upgrade_end.js rename to contracts/deploy/mainnet/025_resolution_upgrade_end.js index 1b83ccb7ff..6277bc78cb 100644 --- a/contracts/deploy/025_resolution_upgrade_end.js +++ b/contracts/deploy/mainnet/025_resolution_upgrade_end.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "025_resolution_upgrade_start", forceDeploy: false }, diff --git a/contracts/deploy/026_comp_rescue_a.js b/contracts/deploy/mainnet/026_comp_rescue_a.js similarity index 91% rename from contracts/deploy/026_comp_rescue_a.js rename to contracts/deploy/mainnet/026_comp_rescue_a.js index 96e0daf2ae..6f582622da 100644 --- a/contracts/deploy/026_comp_rescue_a.js +++ b/contracts/deploy/mainnet/026_comp_rescue_a.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); const OLD_GOVERNOR = "0x830622BDd79CC677eE6594E20bBda5B26568b781"; const OLD_COMP_STRAT = "0xD5433168Ed0B1F7714819646606DB509D9d8EC1f"; diff --git a/contracts/deploy/027_comp_rescue_b.js b/contracts/deploy/mainnet/027_comp_rescue_b.js similarity index 92% rename from contracts/deploy/027_comp_rescue_b.js rename to contracts/deploy/mainnet/027_comp_rescue_b.js index 1523cae696..0df3a5078c 100644 --- a/contracts/deploy/027_comp_rescue_b.js +++ b/contracts/deploy/mainnet/027_comp_rescue_b.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); const OLD_COMP_STRAT = "0xD5433168Ed0B1F7714819646606DB509D9d8EC1f"; diff --git a/contracts/deploy/028_dai_default_aave.js b/contracts/deploy/mainnet/028_dai_default_aave.js similarity index 94% rename from contracts/deploy/028_dai_default_aave.js rename to contracts/deploy/mainnet/028_dai_default_aave.js index dacde4adab..f491dea96a 100644 --- a/contracts/deploy/028_dai_default_aave.js +++ b/contracts/deploy/mainnet/028_dai_default_aave.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "028_dai_default_aave", forceDeploy: false }, diff --git a/contracts/deploy/029_convex.js b/contracts/deploy/mainnet/029_convex.js similarity index 97% rename from contracts/deploy/029_convex.js rename to contracts/deploy/mainnet/029_convex.js index bda0504eb3..f75d8c4823 100644 --- a/contracts/deploy/029_convex.js +++ b/contracts/deploy/mainnet/029_convex.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "029_convex" }, diff --git a/contracts/deploy/030_staking_to_new_governor.js b/contracts/deploy/mainnet/030_staking_to_new_governor.js similarity index 90% rename from contracts/deploy/030_staking_to_new_governor.js rename to contracts/deploy/mainnet/030_staking_to_new_governor.js index 5cfdba99df..ec11f133f4 100644 --- a/contracts/deploy/030_staking_to_new_governor.js +++ b/contracts/deploy/mainnet/030_staking_to_new_governor.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); const OLD_GOVERNOR = "0x830622BDd79CC677eE6594E20bBda5B26568b781"; const NEW_GOVERNOR = "0x72426BA137DEC62657306b12B1E869d43FeC6eC7"; diff --git a/contracts/deploy/031_staking_add_rescue.js b/contracts/deploy/mainnet/031_staking_add_rescue.js similarity index 94% rename from contracts/deploy/031_staking_add_rescue.js rename to contracts/deploy/mainnet/031_staking_add_rescue.js index 540dbcbe37..e950bc3f3c 100644 --- a/contracts/deploy/031_staking_add_rescue.js +++ b/contracts/deploy/mainnet/031_staking_add_rescue.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); const TRANSFER_AGENT = "0x449E0B5564e0d141b3bc3829E74fFA0Ea8C08ad5"; diff --git a/contracts/deploy/032_convex_rewards.js b/contracts/deploy/mainnet/032_convex_rewards.js similarity index 95% rename from contracts/deploy/032_convex_rewards.js rename to contracts/deploy/mainnet/032_convex_rewards.js index 05a89aa48d..87f1db7075 100644 --- a/contracts/deploy/032_convex_rewards.js +++ b/contracts/deploy/mainnet/032_convex_rewards.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "032_convex_rewards", forceDeploy: false }, diff --git a/contracts/deploy/034_vault_value_checker.js b/contracts/deploy/mainnet/034_vault_value_checker.js similarity index 92% rename from contracts/deploy/034_vault_value_checker.js rename to contracts/deploy/mainnet/034_vault_value_checker.js index 62ecdfbd18..0d9b1f25d1 100644 --- a/contracts/deploy/034_vault_value_checker.js +++ b/contracts/deploy/mainnet/034_vault_value_checker.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "034_vault_value_checker", forceDeploy: false }, diff --git a/contracts/deploy/035_reduce_collect_gas.js b/contracts/deploy/mainnet/035_reduce_collect_gas.js similarity index 91% rename from contracts/deploy/035_reduce_collect_gas.js rename to contracts/deploy/mainnet/035_reduce_collect_gas.js index a81a2fe2e8..7818b2f61c 100644 --- a/contracts/deploy/035_reduce_collect_gas.js +++ b/contracts/deploy/mainnet/035_reduce_collect_gas.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "035_reduce_collect_gas", forceDeploy: false }, diff --git a/contracts/deploy/036_multiple_rewards_strategies.js b/contracts/deploy/mainnet/036_multiple_rewards_strategies.js similarity index 98% rename from contracts/deploy/036_multiple_rewards_strategies.js rename to contracts/deploy/mainnet/036_multiple_rewards_strategies.js index 50dff2211f..cdf0ac8ea6 100644 --- a/contracts/deploy/036_multiple_rewards_strategies.js +++ b/contracts/deploy/mainnet/036_multiple_rewards_strategies.js @@ -1,5 +1,5 @@ -const { deploymentWithProposal, log } = require("../utils/deploy"); -const { MAX_UINT256 } = require("../utils/constants"); +const { deploymentWithProposal, log } = require("../../utils/deploy"); +const { MAX_UINT256 } = require("../../utils/constants"); module.exports = deploymentWithProposal( { deployName: "036_multiple_rewards_public_harvest", forceDeploy: false }, diff --git a/contracts/deploy/037_dripper.js b/contracts/deploy/mainnet/037_dripper.js similarity index 98% rename from contracts/deploy/037_dripper.js rename to contracts/deploy/mainnet/037_dripper.js index 35f9b44a03..523aef34e9 100644 --- a/contracts/deploy/037_dripper.js +++ b/contracts/deploy/mainnet/037_dripper.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "037_dripper", forceDeploy: false }, diff --git a/contracts/deploy/038_staking_patch.js b/contracts/deploy/mainnet/038_staking_patch.js similarity index 92% rename from contracts/deploy/038_staking_patch.js rename to contracts/deploy/mainnet/038_staking_patch.js index bab4957279..71cc38e4c4 100644 --- a/contracts/deploy/038_staking_patch.js +++ b/contracts/deploy/mainnet/038_staking_patch.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); // Deploy new staking implimentation contract with fix // Upgrade to using it diff --git a/contracts/deploy/039_wrapped_ousd.js b/contracts/deploy/mainnet/039_wrapped_ousd.js similarity index 95% rename from contracts/deploy/039_wrapped_ousd.js rename to contracts/deploy/mainnet/039_wrapped_ousd.js index 9b443f31aa..e62c424c60 100644 --- a/contracts/deploy/039_wrapped_ousd.js +++ b/contracts/deploy/mainnet/039_wrapped_ousd.js @@ -1,4 +1,7 @@ -const { deploymentWithProposal, withConfirmation } = require("../utils/deploy"); +const { + deploymentWithProposal, + withConfirmation, +} = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "039_wrapped_ousd", forceDeploy: false }, diff --git a/contracts/deploy/040_vault_peg_check.js b/contracts/deploy/mainnet/040_vault_peg_check.js similarity index 94% rename from contracts/deploy/040_vault_peg_check.js rename to contracts/deploy/mainnet/040_vault_peg_check.js index e102360b1f..2679add545 100644 --- a/contracts/deploy/040_vault_peg_check.js +++ b/contracts/deploy/mainnet/040_vault_peg_check.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "040_vault_peg_check", forceDeploy: false }, diff --git a/contracts/deploy/041_stop_buyback_swaps.js b/contracts/deploy/mainnet/041_stop_buyback_swaps.js similarity index 81% rename from contracts/deploy/041_stop_buyback_swaps.js rename to contracts/deploy/mainnet/041_stop_buyback_swaps.js index 71d1df1d3b..aae548aabd 100644 --- a/contracts/deploy/041_stop_buyback_swaps.js +++ b/contracts/deploy/mainnet/041_stop_buyback_swaps.js @@ -1,5 +1,5 @@ -const addresses = require("../utils/addresses"); -const { deploymentWithProposal } = require("../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "041_stop_buyback_swaps", forceDeploy: false }, async () => { diff --git a/contracts/deploy/042_ogv_buyback.js b/contracts/deploy/mainnet/042_ogv_buyback.js similarity index 97% rename from contracts/deploy/042_ogv_buyback.js rename to contracts/deploy/mainnet/042_ogv_buyback.js index 626e8e1d42..1f82ac9317 100644 --- a/contracts/deploy/042_ogv_buyback.js +++ b/contracts/deploy/mainnet/042_ogv_buyback.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "042_ogv_buyback", forceDeploy: false }, diff --git a/contracts/deploy/043_convexOUSDMeta.js b/contracts/deploy/mainnet/043_convexOUSDMeta.js similarity index 97% rename from contracts/deploy/043_convexOUSDMeta.js rename to contracts/deploy/mainnet/043_convexOUSDMeta.js index 340010f4c5..ea4ca938f6 100644 --- a/contracts/deploy/043_convexOUSDMeta.js +++ b/contracts/deploy/mainnet/043_convexOUSDMeta.js @@ -1,5 +1,5 @@ -const { deploymentWithProposal } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithProposal } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); const { BigNumber } = require("ethers"); module.exports = deploymentWithProposal( diff --git a/contracts/deploy/044_morpho_strategy.js b/contracts/deploy/mainnet/044_morpho_strategy.js similarity index 98% rename from contracts/deploy/044_morpho_strategy.js rename to contracts/deploy/mainnet/044_morpho_strategy.js index d2c177ae19..5b2d33a549 100644 --- a/contracts/deploy/044_morpho_strategy.js +++ b/contracts/deploy/mainnet/044_morpho_strategy.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "044_morpho_strategy", forceDeploy: false, proposalId: 39 }, diff --git a/contracts/deploy/045_convex_lusd_meta_strategy.js b/contracts/deploy/mainnet/045_convex_lusd_meta_strategy.js similarity index 84% rename from contracts/deploy/045_convex_lusd_meta_strategy.js rename to contracts/deploy/mainnet/045_convex_lusd_meta_strategy.js index bf59b333e7..4922ee97e2 100644 --- a/contracts/deploy/045_convex_lusd_meta_strategy.js +++ b/contracts/deploy/mainnet/045_convex_lusd_meta_strategy.js @@ -1,5 +1,5 @@ -const generalizedConvexStratDeployment = require("../utils/generalizedConvexStratDeployment"); -const { lusdMetapoolLPCRVPid } = require("../utils/constants"); +const generalizedConvexStratDeployment = require("../../utils/generalizedConvexStratDeployment"); +const { lusdMetapoolLPCRVPid } = require("../../utils/constants"); module.exports = generalizedConvexStratDeployment({ deployName: "045_convex_lusd_meta_strategy", diff --git a/contracts/deploy/046_value_value_checker.js b/contracts/deploy/mainnet/046_value_value_checker.js similarity index 93% rename from contracts/deploy/046_value_value_checker.js rename to contracts/deploy/mainnet/046_value_value_checker.js index b434c4652a..db3eb41656 100644 --- a/contracts/deploy/046_value_value_checker.js +++ b/contracts/deploy/mainnet/046_value_value_checker.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "046_vault_value_checker", forceDeploy: false }, diff --git a/contracts/deploy/047_morpho_aave_strategy.js b/contracts/deploy/mainnet/047_morpho_aave_strategy.js similarity index 98% rename from contracts/deploy/047_morpho_aave_strategy.js rename to contracts/deploy/mainnet/047_morpho_aave_strategy.js index 4cd2a17649..5e5cdc127a 100644 --- a/contracts/deploy/047_morpho_aave_strategy.js +++ b/contracts/deploy/mainnet/047_morpho_aave_strategy.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { diff --git a/contracts/deploy/048_deposit_withdraw_tooling.js b/contracts/deploy/mainnet/048_deposit_withdraw_tooling.js similarity index 90% rename from contracts/deploy/048_deposit_withdraw_tooling.js rename to contracts/deploy/mainnet/048_deposit_withdraw_tooling.js index 8a9a616641..6ab1795751 100644 --- a/contracts/deploy/048_deposit_withdraw_tooling.js +++ b/contracts/deploy/mainnet/048_deposit_withdraw_tooling.js @@ -1,5 +1,5 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); -const { isMainnet } = require("../test/helpers.js"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); +const { isMainnet } = require("../../test/helpers.js"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/049_oeth_proxy.js b/contracts/deploy/mainnet/049_oeth_proxy.js similarity index 91% rename from contracts/deploy/049_oeth_proxy.js rename to contracts/deploy/mainnet/049_oeth_proxy.js index e8130ea8d9..f384e5efce 100644 --- a/contracts/deploy/049_oeth_proxy.js +++ b/contracts/deploy/mainnet/049_oeth_proxy.js @@ -1,5 +1,5 @@ -const { deploymentWithProposal } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithProposal } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); module.exports = deploymentWithProposal( { deployName: "049_oeth_proxy", forceDeploy: false, forceSkip: true }, diff --git a/contracts/deploy/050_woeth_proxy.js b/contracts/deploy/mainnet/050_woeth_proxy.js similarity index 91% rename from contracts/deploy/050_woeth_proxy.js rename to contracts/deploy/mainnet/050_woeth_proxy.js index 6d2d7f215b..90a5f8fd6b 100644 --- a/contracts/deploy/050_woeth_proxy.js +++ b/contracts/deploy/mainnet/050_woeth_proxy.js @@ -1,5 +1,5 @@ -const { deploymentWithProposal } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithProposal } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); module.exports = deploymentWithProposal( { deployName: "050_woeth_proxy", forceDeploy: false, forceSkip: true }, diff --git a/contracts/deploy/051_upgrade_buyback.js b/contracts/deploy/mainnet/051_upgrade_buyback.js similarity index 97% rename from contracts/deploy/051_upgrade_buyback.js rename to contracts/deploy/mainnet/051_upgrade_buyback.js index 6d70377ccf..e4b5daef40 100644 --- a/contracts/deploy/051_upgrade_buyback.js +++ b/contracts/deploy/mainnet/051_upgrade_buyback.js @@ -1,5 +1,5 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); -const { getTxOpts } = require("../utils/tx"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); +const { getTxOpts } = require("../../utils/tx"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/052_upgrade_ousd_vault_harvester.js b/contracts/deploy/mainnet/052_upgrade_ousd_vault_harvester.js similarity index 97% rename from contracts/deploy/052_upgrade_ousd_vault_harvester.js rename to contracts/deploy/mainnet/052_upgrade_ousd_vault_harvester.js index cce6bc8dc2..507c457faf 100644 --- a/contracts/deploy/052_upgrade_ousd_vault_harvester.js +++ b/contracts/deploy/mainnet/052_upgrade_ousd_vault_harvester.js @@ -1,9 +1,9 @@ const { deploymentWithGovernanceProposal, withConfirmation, -} = require("../utils/deploy"); -const addresses = require("../utils/addresses"); -const { isMainnet } = require("../test/helpers.js"); +} = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { isMainnet } = require("../../test/helpers.js"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/053_oeth.js b/contracts/deploy/mainnet/053_oeth.js similarity index 97% rename from contracts/deploy/053_oeth.js rename to contracts/deploy/mainnet/053_oeth.js index b35a108d48..e564600ebf 100644 --- a/contracts/deploy/053_oeth.js +++ b/contracts/deploy/mainnet/053_oeth.js @@ -1,8 +1,8 @@ -const { deploymentWithGuardianGovernor } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithGuardianGovernor } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); const hre = require("hardhat"); const { BigNumber, utils } = require("ethers"); -const { getAssetAddresses } = require("../test/helpers.js"); +const { getAssetAddresses } = require("../../test/helpers.js"); // 5/8 multisig const guardianAddr = addresses.mainnet.Guardian; diff --git a/contracts/deploy/054_woeth.js b/contracts/deploy/mainnet/054_woeth.js similarity index 93% rename from contracts/deploy/054_woeth.js rename to contracts/deploy/mainnet/054_woeth.js index 960a348cbb..3cf56e9e11 100644 --- a/contracts/deploy/054_woeth.js +++ b/contracts/deploy/mainnet/054_woeth.js @@ -1,4 +1,4 @@ -const { deploymentWithGuardianGovernor } = require("../utils/deploy"); +const { deploymentWithGuardianGovernor } = require("../../utils/deploy"); module.exports = deploymentWithGuardianGovernor( { deployName: "054_woeth" }, diff --git a/contracts/deploy/055_curve_amo.js b/contracts/deploy/mainnet/055_curve_amo.js similarity index 99% rename from contracts/deploy/055_curve_amo.js rename to contracts/deploy/mainnet/055_curve_amo.js index 0da9ebef45..c38f1e411e 100644 --- a/contracts/deploy/055_curve_amo.js +++ b/contracts/deploy/mainnet/055_curve_amo.js @@ -1,10 +1,10 @@ -const { deploymentWithGuardianGovernor } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithGuardianGovernor } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); const hre = require("hardhat"); const { utils, Contract } = require("ethers"); -const { getAssetAddresses, isMainnet } = require("../test/helpers.js"); -const { MAX_UINT256, oethPoolLpPID } = require("../utils/constants"); -const { impersonateAndFund } = require("../utils/signers"); +const { getAssetAddresses, isMainnet } = require("../../test/helpers.js"); +const { MAX_UINT256, oethPoolLpPID } = require("../../utils/constants"); +const { impersonateAndFund } = require("../../utils/signers"); const crvRewards = "0x24b65DC1cf053A8D96872c323d29e86ec43eB33A"; const poolAddress = "0x94b17476a93b3262d87b9a326965d1e91f9c13e7"; const tokenAddress = "0x94b17476a93b3262d87b9a326965d1e91f9c13e7"; diff --git a/contracts/deploy/056_oeth_zapper_again.js b/contracts/deploy/mainnet/056_oeth_zapper_again.js similarity index 89% rename from contracts/deploy/056_oeth_zapper_again.js rename to contracts/deploy/mainnet/056_oeth_zapper_again.js index 82e1de4066..081df5601e 100644 --- a/contracts/deploy/056_oeth_zapper_again.js +++ b/contracts/deploy/mainnet/056_oeth_zapper_again.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "056_oeth_zapper_again", forceDeploy: false }, diff --git a/contracts/deploy/057_drip_all.js b/contracts/deploy/mainnet/057_drip_all.js similarity index 96% rename from contracts/deploy/057_drip_all.js rename to contracts/deploy/mainnet/057_drip_all.js index 49bb08d278..3ba28ce257 100644 --- a/contracts/deploy/057_drip_all.js +++ b/contracts/deploy/mainnet/057_drip_all.js @@ -1,4 +1,4 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/058_oeth_vault_value_checker.js b/contracts/deploy/mainnet/058_oeth_vault_value_checker.js similarity index 91% rename from contracts/deploy/058_oeth_vault_value_checker.js rename to contracts/deploy/mainnet/058_oeth_vault_value_checker.js index 0cd242ae45..f76673eed6 100644 --- a/contracts/deploy/058_oeth_vault_value_checker.js +++ b/contracts/deploy/mainnet/058_oeth_vault_value_checker.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "058_oeth_vault_value_checker" }, diff --git a/contracts/deploy/059_harvest_crv_limit.js b/contracts/deploy/mainnet/059_harvest_crv_limit.js similarity index 96% rename from contracts/deploy/059_harvest_crv_limit.js rename to contracts/deploy/mainnet/059_harvest_crv_limit.js index db2ba53085..ebf7d89c25 100644 --- a/contracts/deploy/059_harvest_crv_limit.js +++ b/contracts/deploy/mainnet/059_harvest_crv_limit.js @@ -1,5 +1,5 @@ const { parseUnits, formatUnits } = require("ethers").utils; -const { deploymentWithGovernanceProposal, log } = require("../utils/deploy"); +const { deploymentWithGovernanceProposal, log } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/060_harvest_crv_limit_2.js b/contracts/deploy/mainnet/060_harvest_crv_limit_2.js similarity index 96% rename from contracts/deploy/060_harvest_crv_limit_2.js rename to contracts/deploy/mainnet/060_harvest_crv_limit_2.js index 4e15861dc5..98e3e6cf6d 100644 --- a/contracts/deploy/060_harvest_crv_limit_2.js +++ b/contracts/deploy/mainnet/060_harvest_crv_limit_2.js @@ -1,5 +1,5 @@ const { parseUnits, formatUnits } = require("ethers").utils; -const { deploymentWithGovernanceProposal, log } = require("../utils/deploy"); +const { deploymentWithGovernanceProposal, log } = require("../../utils/deploy"); /* The 059 harvest change proposal has timed out. This just re-submits it. */ diff --git a/contracts/deploy/061_oeth_timelock_part_1.js b/contracts/deploy/mainnet/061_oeth_timelock_part_1.js similarity index 93% rename from contracts/deploy/061_oeth_timelock_part_1.js rename to contracts/deploy/mainnet/061_oeth_timelock_part_1.js index 6f3c7badd2..4f5d9cabee 100644 --- a/contracts/deploy/061_oeth_timelock_part_1.js +++ b/contracts/deploy/mainnet/061_oeth_timelock_part_1.js @@ -1,5 +1,5 @@ -const { deploymentWithGuardianGovernor } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithGuardianGovernor } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); module.exports = deploymentWithGuardianGovernor( { deployName: "061_oeth_timelock_part_1" }, diff --git a/contracts/deploy/062_oeth_timelock_part_2.js b/contracts/deploy/mainnet/062_oeth_timelock_part_2.js similarity index 96% rename from contracts/deploy/062_oeth_timelock_part_2.js rename to contracts/deploy/mainnet/062_oeth_timelock_part_2.js index bc6dbfa3c2..f715c689f4 100644 --- a/contracts/deploy/062_oeth_timelock_part_2.js +++ b/contracts/deploy/mainnet/062_oeth_timelock_part_2.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "062_oeth_timelock_part_2" }, diff --git a/contracts/deploy/063_oeth_harvest_crv_limit.js b/contracts/deploy/mainnet/063_oeth_harvest_crv_limit.js similarity index 95% rename from contracts/deploy/063_oeth_harvest_crv_limit.js rename to contracts/deploy/mainnet/063_oeth_harvest_crv_limit.js index 1607af1f86..efd99dac4d 100644 --- a/contracts/deploy/063_oeth_harvest_crv_limit.js +++ b/contracts/deploy/mainnet/063_oeth_harvest_crv_limit.js @@ -1,5 +1,5 @@ const { parseUnits, formatUnits } = require("ethers").utils; -const { deploymentWithProposal, log } = require("../utils/deploy"); +const { deploymentWithProposal, log } = require("../../utils/deploy"); /* The 059 harvest change proposal has timed out. This just re-submits it. */ diff --git a/contracts/deploy/064_oeth_mopho_aave_v2.js b/contracts/deploy/mainnet/064_oeth_mopho_aave_v2.js similarity index 95% rename from contracts/deploy/064_oeth_mopho_aave_v2.js rename to contracts/deploy/mainnet/064_oeth_mopho_aave_v2.js index ecf85cbafb..6f55310856 100644 --- a/contracts/deploy/064_oeth_mopho_aave_v2.js +++ b/contracts/deploy/mainnet/064_oeth_mopho_aave_v2.js @@ -1,5 +1,5 @@ -const { deploymentWithProposal } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithProposal } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); module.exports = deploymentWithProposal( { diff --git a/contracts/deploy/065_oeth_swapper.js b/contracts/deploy/mainnet/065_oeth_swapper.js similarity index 91% rename from contracts/deploy/065_oeth_swapper.js rename to contracts/deploy/mainnet/065_oeth_swapper.js index a2defe479e..865f4f1c57 100644 --- a/contracts/deploy/065_oeth_swapper.js +++ b/contracts/deploy/mainnet/065_oeth_swapper.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "065_oeth_swapper", forceDeploy: false, reduceQueueTime: true }, diff --git a/contracts/deploy/065_upgrade_fraxeth_strategy.js b/contracts/deploy/mainnet/065_upgrade_fraxeth_strategy.js similarity index 90% rename from contracts/deploy/065_upgrade_fraxeth_strategy.js rename to contracts/deploy/mainnet/065_upgrade_fraxeth_strategy.js index 08981ba261..a3e47672ae 100644 --- a/contracts/deploy/065_upgrade_fraxeth_strategy.js +++ b/contracts/deploy/mainnet/065_upgrade_fraxeth_strategy.js @@ -1,5 +1,5 @@ -const { deploymentWithProposal } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithProposal } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); module.exports = deploymentWithProposal( { diff --git a/contracts/deploy/066_oeth_vault_swaps.js b/contracts/deploy/mainnet/066_oeth_vault_swaps.js similarity index 98% rename from contracts/deploy/066_oeth_vault_swaps.js rename to contracts/deploy/mainnet/066_oeth_vault_swaps.js index f8ce4f7a79..582558335f 100644 --- a/contracts/deploy/066_oeth_vault_swaps.js +++ b/contracts/deploy/mainnet/066_oeth_vault_swaps.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { diff --git a/contracts/deploy/067_ousd_vault_value_checker.js b/contracts/deploy/mainnet/067_ousd_vault_value_checker.js similarity index 91% rename from contracts/deploy/067_ousd_vault_value_checker.js rename to contracts/deploy/mainnet/067_ousd_vault_value_checker.js index b567d06547..75523268b4 100644 --- a/contracts/deploy/067_ousd_vault_value_checker.js +++ b/contracts/deploy/mainnet/067_ousd_vault_value_checker.js @@ -1,4 +1,4 @@ -const { deploymentWithProposal } = require("../utils/deploy"); +const { deploymentWithProposal } = require("../../utils/deploy"); module.exports = deploymentWithProposal( { deployName: "067_ousd_vault_value_checker" }, diff --git a/contracts/deploy/068_oeth_to_ogv_governance_p1.js b/contracts/deploy/mainnet/068_oeth_to_ogv_governance_p1.js similarity index 95% rename from contracts/deploy/068_oeth_to_ogv_governance_p1.js rename to contracts/deploy/mainnet/068_oeth_to_ogv_governance_p1.js index 46b7a5a21a..1ca0078214 100644 --- a/contracts/deploy/068_oeth_to_ogv_governance_p1.js +++ b/contracts/deploy/mainnet/068_oeth_to_ogv_governance_p1.js @@ -1,5 +1,5 @@ -const { deploymentWithProposal } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithProposal } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); module.exports = deploymentWithProposal( { diff --git a/contracts/deploy/069_oeth_to_ogv_governance_p2.js b/contracts/deploy/mainnet/069_oeth_to_ogv_governance_p2.js similarity index 96% rename from contracts/deploy/069_oeth_to_ogv_governance_p2.js rename to contracts/deploy/mainnet/069_oeth_to_ogv_governance_p2.js index 87768cbc3c..8902d1fe6d 100644 --- a/contracts/deploy/069_oeth_to_ogv_governance_p2.js +++ b/contracts/deploy/mainnet/069_oeth_to_ogv_governance_p2.js @@ -1,4 +1,4 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/070_flux_strategy.js b/contracts/deploy/mainnet/070_flux_strategy.js similarity index 95% rename from contracts/deploy/070_flux_strategy.js rename to contracts/deploy/mainnet/070_flux_strategy.js index 5b3bbfa7b6..1915370268 100644 --- a/contracts/deploy/070_flux_strategy.js +++ b/contracts/deploy/mainnet/070_flux_strategy.js @@ -2,9 +2,9 @@ const { deploymentWithGovernanceProposal, deployWithConfirmation, withConfirmation, -} = require("../utils/deploy"); -const addresses = require("../utils/addresses"); -const { getTxOpts } = require("../utils/tx"); +} = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { getTxOpts } = require("../../utils/tx"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/071_balancer_rETH_WETH.js b/contracts/deploy/mainnet/071_balancer_rETH_WETH.js similarity index 95% rename from contracts/deploy/071_balancer_rETH_WETH.js rename to contracts/deploy/mainnet/071_balancer_rETH_WETH.js index 46f20f0594..1e6760be89 100644 --- a/contracts/deploy/071_balancer_rETH_WETH.js +++ b/contracts/deploy/mainnet/071_balancer_rETH_WETH.js @@ -1,6 +1,6 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); -const { balancer_rETH_WETH_PID } = require("../utils/constants"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { balancer_rETH_WETH_PID } = require("../../utils/constants"); const platformAddress = addresses.mainnet.rETH_WETH_BPT; diff --git a/contracts/deploy/072_ousd_maker_dsr.js b/contracts/deploy/mainnet/072_ousd_maker_dsr.js similarity index 96% rename from contracts/deploy/072_ousd_maker_dsr.js rename to contracts/deploy/mainnet/072_ousd_maker_dsr.js index cb15cc0d64..c1c7596504 100644 --- a/contracts/deploy/072_ousd_maker_dsr.js +++ b/contracts/deploy/mainnet/072_ousd_maker_dsr.js @@ -1,5 +1,5 @@ -const addresses = require("../utils/addresses"); -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/073_ousd_disable_stratgies.js b/contracts/deploy/mainnet/073_ousd_disable_stratgies.js similarity index 95% rename from contracts/deploy/073_ousd_disable_stratgies.js rename to contracts/deploy/mainnet/073_ousd_disable_stratgies.js index 92c9d1de43..5e813ca908 100644 --- a/contracts/deploy/073_ousd_disable_stratgies.js +++ b/contracts/deploy/mainnet/073_ousd_disable_stratgies.js @@ -1,4 +1,4 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/074_upgrade_oeth_oracle_router.js b/contracts/deploy/mainnet/074_upgrade_oeth_oracle_router.js similarity index 95% rename from contracts/deploy/074_upgrade_oeth_oracle_router.js rename to contracts/deploy/mainnet/074_upgrade_oeth_oracle_router.js index d4d0e8b8c6..7174c73c07 100644 --- a/contracts/deploy/074_upgrade_oeth_oracle_router.js +++ b/contracts/deploy/mainnet/074_upgrade_oeth_oracle_router.js @@ -1,9 +1,9 @@ -const addresses = require("../utils/addresses"); +const addresses = require("../../utils/addresses"); const { deploymentWithGovernanceProposal, deployWithConfirmation, withConfirmation, -} = require("../utils/deploy"); +} = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/075_oeth_amo_upgrade.js b/contracts/deploy/mainnet/075_oeth_amo_upgrade.js similarity index 88% rename from contracts/deploy/075_oeth_amo_upgrade.js rename to contracts/deploy/mainnet/075_oeth_amo_upgrade.js index da5c690045..2c395397b0 100644 --- a/contracts/deploy/075_oeth_amo_upgrade.js +++ b/contracts/deploy/mainnet/075_oeth_amo_upgrade.js @@ -1,6 +1,6 @@ -const addresses = require("../utils/addresses"); -const { oethPoolLpPID } = require("../utils/constants"); -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { oethPoolLpPID } = require("../../utils/constants"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/076_upgrade_fraxeth_strategy.js b/contracts/deploy/mainnet/076_upgrade_fraxeth_strategy.js similarity index 91% rename from contracts/deploy/076_upgrade_fraxeth_strategy.js rename to contracts/deploy/mainnet/076_upgrade_fraxeth_strategy.js index 5c70c656ac..42db175b69 100644 --- a/contracts/deploy/076_upgrade_fraxeth_strategy.js +++ b/contracts/deploy/mainnet/076_upgrade_fraxeth_strategy.js @@ -1,5 +1,5 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/077_balancer_rETH_WETH.js b/contracts/deploy/mainnet/077_balancer_rETH_WETH.js similarity index 91% rename from contracts/deploy/077_balancer_rETH_WETH.js rename to contracts/deploy/mainnet/077_balancer_rETH_WETH.js index 2872114a4c..4c6fabe66a 100644 --- a/contracts/deploy/077_balancer_rETH_WETH.js +++ b/contracts/deploy/mainnet/077_balancer_rETH_WETH.js @@ -1,6 +1,6 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); -const { balancer_rETH_WETH_PID } = require("../utils/constants"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { balancer_rETH_WETH_PID } = require("../../utils/constants"); const platformAddress = addresses.mainnet.rETH_WETH_BPT; diff --git a/contracts/deploy/080_upgrade_buyback.js b/contracts/deploy/mainnet/080_upgrade_buyback.js similarity index 98% rename from contracts/deploy/080_upgrade_buyback.js rename to contracts/deploy/mainnet/080_upgrade_buyback.js index 410aa360e7..6e16521f41 100644 --- a/contracts/deploy/080_upgrade_buyback.js +++ b/contracts/deploy/mainnet/080_upgrade_buyback.js @@ -1,8 +1,8 @@ const { deploymentWithGovernanceProposal, withConfirmation, -} = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +} = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/081_upgrade_harvester.js b/contracts/deploy/mainnet/081_upgrade_harvester.js similarity index 98% rename from contracts/deploy/081_upgrade_harvester.js rename to contracts/deploy/mainnet/081_upgrade_harvester.js index 0ae5466b17..4299652d76 100644 --- a/contracts/deploy/081_upgrade_harvester.js +++ b/contracts/deploy/mainnet/081_upgrade_harvester.js @@ -1,9 +1,9 @@ const { deploymentWithGovernanceProposal, withConfirmation, -} = require("../utils/deploy"); -const addresses = require("../utils/addresses"); -const { oethUnits } = require("../test/helpers"); +} = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { oethUnits } = require("../../test/helpers"); const { utils } = require("ethers"); module.exports = deploymentWithGovernanceProposal( diff --git a/contracts/deploy/082_upgrade_oeth.js b/contracts/deploy/mainnet/082_upgrade_oeth.js similarity index 95% rename from contracts/deploy/082_upgrade_oeth.js rename to contracts/deploy/mainnet/082_upgrade_oeth.js index 7e8402801f..c865d8bd74 100644 --- a/contracts/deploy/082_upgrade_oeth.js +++ b/contracts/deploy/mainnet/082_upgrade_oeth.js @@ -1,4 +1,4 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/083_dripper_seven_day.js b/contracts/deploy/mainnet/083_dripper_seven_day.js similarity index 95% rename from contracts/deploy/083_dripper_seven_day.js rename to contracts/deploy/mainnet/083_dripper_seven_day.js index c8df6102db..ad1c383a90 100644 --- a/contracts/deploy/083_dripper_seven_day.js +++ b/contracts/deploy/mainnet/083_dripper_seven_day.js @@ -1,4 +1,4 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/084_delpoy_woeth_on_arb.js b/contracts/deploy/mainnet/084_delpoy_woeth_on_arb.js similarity index 87% rename from contracts/deploy/084_delpoy_woeth_on_arb.js rename to contracts/deploy/mainnet/084_delpoy_woeth_on_arb.js index b186b14d5e..3ee28446f5 100644 --- a/contracts/deploy/084_delpoy_woeth_on_arb.js +++ b/contracts/deploy/mainnet/084_delpoy_woeth_on_arb.js @@ -1,6 +1,9 @@ -const { deployOnArb } = require("../utils/delpoy-l2"); -const { deployWithConfirmation, withConfirmation } = require("../utils/deploy"); -const { getTxOpts } = require("../utils/tx"); +const { deployOnArb } = require("../../utils/delpoy-l2"); +const { + deployWithConfirmation, + withConfirmation, +} = require("../../utils/deploy"); +const { getTxOpts } = require("../../utils/tx"); module.exports = deployOnArb( { diff --git a/contracts/deploy/085_upgrade_oeth_vault.js b/contracts/deploy/mainnet/085_upgrade_oeth_vault.js similarity index 93% rename from contracts/deploy/085_upgrade_oeth_vault.js rename to contracts/deploy/mainnet/085_upgrade_oeth_vault.js index 1c137a9eb8..f94c2f1880 100644 --- a/contracts/deploy/085_upgrade_oeth_vault.js +++ b/contracts/deploy/mainnet/085_upgrade_oeth_vault.js @@ -1,8 +1,8 @@ -const addresses = require("../utils/addresses"); +const addresses = require("../../utils/addresses"); const { deploymentWithGovernanceProposal, deployWithConfirmation, -} = require("../utils/deploy"); +} = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/086_frxeth_redeem_strat.js b/contracts/deploy/mainnet/086_frxeth_redeem_strat.js similarity index 95% rename from contracts/deploy/086_frxeth_redeem_strat.js rename to contracts/deploy/mainnet/086_frxeth_redeem_strat.js index 4f11e82b1a..e15c142400 100644 --- a/contracts/deploy/086_frxeth_redeem_strat.js +++ b/contracts/deploy/mainnet/086_frxeth_redeem_strat.js @@ -1,5 +1,5 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); -const addresses = require("../utils/addresses"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); +const addresses = require("../../utils/addresses"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/087_reduce_redeem_fee.js b/contracts/deploy/mainnet/087_reduce_redeem_fee.js similarity index 92% rename from contracts/deploy/087_reduce_redeem_fee.js rename to contracts/deploy/mainnet/087_reduce_redeem_fee.js index de4eb46faa..ba19afce5a 100644 --- a/contracts/deploy/087_reduce_redeem_fee.js +++ b/contracts/deploy/mainnet/087_reduce_redeem_fee.js @@ -1,4 +1,4 @@ -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/088_upgrade_woeth_on_arb.js b/contracts/deploy/mainnet/088_upgrade_woeth_on_arb.js similarity index 74% rename from contracts/deploy/088_upgrade_woeth_on_arb.js rename to contracts/deploy/mainnet/088_upgrade_woeth_on_arb.js index 8478268f04..72954cc794 100644 --- a/contracts/deploy/088_upgrade_woeth_on_arb.js +++ b/contracts/deploy/mainnet/088_upgrade_woeth_on_arb.js @@ -1,7 +1,7 @@ -const { isFork } = require("../test/helpers"); -const { deployOnArb } = require("../utils/delpoy-l2"); -const { deployWithConfirmation } = require("../utils/deploy"); -const { impersonateAndFund } = require("../utils/signers"); +const { isFork } = require("../../test/helpers"); +const { deployOnArb } = require("../../utils/delpoy-l2"); +const { deployWithConfirmation } = require("../../utils/deploy"); +const { impersonateAndFund } = require("../../utils/signers"); module.exports = deployOnArb( { diff --git a/contracts/deploy/089_1inch_buyback.js b/contracts/deploy/mainnet/089_1inch_buyback.js similarity index 97% rename from contracts/deploy/089_1inch_buyback.js rename to contracts/deploy/mainnet/089_1inch_buyback.js index 4a4c47d942..002c1fccd0 100644 --- a/contracts/deploy/089_1inch_buyback.js +++ b/contracts/deploy/mainnet/089_1inch_buyback.js @@ -1,8 +1,8 @@ -const addresses = require("../utils/addresses"); +const addresses = require("../../utils/addresses"); const { deploymentWithGovernanceProposal, deployWithConfirmation, -} = require("../utils/deploy"); +} = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/090_disable_compound.js b/contracts/deploy/mainnet/090_disable_compound.js similarity index 87% rename from contracts/deploy/090_disable_compound.js rename to contracts/deploy/mainnet/090_disable_compound.js index 9fd9960c7e..3477f3d959 100644 --- a/contracts/deploy/090_disable_compound.js +++ b/contracts/deploy/mainnet/090_disable_compound.js @@ -1,5 +1,5 @@ -const addresses = require("../utils/addresses"); -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/091_simplified_oeth_vault.js b/contracts/deploy/mainnet/091_simplified_oeth_vault.js similarity index 93% rename from contracts/deploy/091_simplified_oeth_vault.js rename to contracts/deploy/mainnet/091_simplified_oeth_vault.js index e109e78525..37961d919b 100644 --- a/contracts/deploy/091_simplified_oeth_vault.js +++ b/contracts/deploy/mainnet/091_simplified_oeth_vault.js @@ -1,8 +1,8 @@ -const addresses = require("../utils/addresses"); +const addresses = require("../../utils/addresses"); const { deploymentWithGovernanceProposal, deployWithConfirmation, -} = require("../utils/deploy"); +} = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/092_woeth_ccip_zapper.js b/contracts/deploy/mainnet/092_woeth_ccip_zapper.js similarity index 82% rename from contracts/deploy/092_woeth_ccip_zapper.js rename to contracts/deploy/mainnet/092_woeth_ccip_zapper.js index d101d6c46b..ecd483e6f9 100644 --- a/contracts/deploy/092_woeth_ccip_zapper.js +++ b/contracts/deploy/mainnet/092_woeth_ccip_zapper.js @@ -1,6 +1,6 @@ -const addresses = require("../utils/addresses"); -const { ccip_arbChainSelector } = require("../utils/constants"); -const { deploymentWithGovernanceProposal } = require("../utils/deploy"); +const addresses = require("../../utils/addresses"); +const { ccip_arbChainSelector } = require("../../utils/constants"); +const { deploymentWithGovernanceProposal } = require("../../utils/deploy"); module.exports = deploymentWithGovernanceProposal( { diff --git a/contracts/deploy/999_fork_test_setup.js b/contracts/deploy/mainnet/999_fork_test_setup.js similarity index 85% rename from contracts/deploy/999_fork_test_setup.js rename to contracts/deploy/mainnet/999_fork_test_setup.js index 4b752ab62e..1bade75cde 100644 --- a/contracts/deploy/999_fork_test_setup.js +++ b/contracts/deploy/mainnet/999_fork_test_setup.js @@ -1,14 +1,14 @@ -const { isFork, isForkWithLocalNode } = require("../test/helpers"); -const { deployWithConfirmation } = require("../utils/deploy"); -const { fundAccounts } = require("../utils/funding"); -const addresses = require("../utils/addresses"); -const { replaceContractAt } = require("../utils/hardhat"); -const { impersonateAndFund } = require("../utils/signers"); -const { hardhatSetBalance } = require("../test/_fund"); +const { isFork, isForkWithLocalNode } = require("../../test/helpers"); +const { deployWithConfirmation } = require("../../utils/deploy"); +const { fundAccounts } = require("../../utils/funding"); +const addresses = require("../../utils/addresses"); +const { replaceContractAt } = require("../../utils/hardhat"); +const { impersonateAndFund } = require("../../utils/signers"); +const { hardhatSetBalance } = require("../../test/_fund"); -const daiAbi = require("../test/abi/dai.json").abi; +const daiAbi = require("../../test/abi/dai.json").abi; -const log = require("../utils/logger")("deploy:999_fork_test_setup"); +const log = require("../../utils/logger")("deploy:999_fork_test_setup"); const main = async (hre) => { log(`Running 999_fork_test_setup deployment...`); diff --git a/contracts/fork-test.sh b/contracts/fork-test.sh index 5634a9391f..3a499dd53a 100755 --- a/contracts/fork-test.sh +++ b/contracts/fork-test.sh @@ -37,8 +37,12 @@ main() params=() if [[ $FORK_NETWORK_NAME == "arbitrumOne" ]]; then - PROVIDER_URL=$ARBITRUM_PROVIDER_URL; - BLOCK_NUMBER=$ARBITRUM_BLOCK_NUMBER; + PROVIDER_URL=$ARBITRUM_PROVIDER_URL; + BLOCK_NUMBER=$ARBITRUM_BLOCK_NUMBER; + params+=" --tags arbitrumOne"; + elif [[ $FORK_NETWORK_NAME == "holesky" ]]; then + PROVIDER_URL=$HOLESKY_PROVIDER_URL; + BLOCK_NUMBER=$HOLESKY_BLOCK_NUMBER; fi if $is_local; then @@ -67,9 +71,15 @@ main() fi if [ -z "$1" ]; then - # Run all files with `.fork-test.js` suffix when no file name param is given - # pass all other params along - params+="test/**/*.fork-test.js" + if [[ $FORK_NETWORK_NAME == "holesky" ]]; then + # Run all files with `.holesky.fork-test.js` suffix when no file name param is given + # pass all other params along + params+="test/**/*.holesky.fork-test.js" + else + # Run all files with `.fork-test.js` suffix when no file name param is given + # pass all other params along + params+="test/**/*.fork-test.js" + fi else # Run specifc files when a param is given params+="$@" @@ -100,4 +110,4 @@ main() fi } -main "$@" +main "$@" \ No newline at end of file diff --git a/contracts/hardhat.config.js b/contracts/hardhat.config.js index f66eee5934..c09b01ee34 100644 --- a/contracts/hardhat.config.js +++ b/contracts/hardhat.config.js @@ -1,6 +1,19 @@ const ethers = require("ethers"); const { task } = require("hardhat/config"); -const fetch = require("sync-fetch"); +const { + isFork, + isArbitrumFork, + isHoleskyFork, + isHolesky, + isForkTest, + isArbForkTest, + isHoleskyForkTest, + providerUrl, + arbitrumProviderUrl, + holeskyProviderUrl, + adjustTheForkBlockNumber, + getHardhatNetworkProperties, +} = require("./utils/hardhat-helpers.js"); require("@nomiclabs/hardhat-etherscan"); require("@nomiclabs/hardhat-waffle"); @@ -29,6 +42,7 @@ const MAINNET_GOVERNOR = "0x72426ba137dec62657306b12b1e869d43fec6ec7"; const MAINNET_MULTISIG = "0xbe2AB3d3d8F6a32b96414ebbd865dBD276d3d899"; const MAINNET_CLAIM_ADJUSTER = MAINNET_DEPLOYER; const MAINNET_STRATEGIST = "0xf14bbdf064e3f67f51cd9bd646ae3716ad938fdc"; +const HOLESKY_DEPLOYER = "0x1b94CA50D3Ad9f8368851F8526132272d1a5028C"; const mnemonic = "replace hover unaware super where filter stone fine garlic address matrix basic"; @@ -46,63 +60,20 @@ task("accounts", "Prints the list of accounts", async (taskArguments, hre) => { return accounts(taskArguments, hre, privateKeys); }); -const isFork = process.env.FORK === "true"; -const isArbitrumFork = process.env.FORK_NETWORK_NAME === "arbitrumOne"; -const isForkTest = isFork && process.env.IS_TEST === "true"; -const isArbForkTest = isForkTest && isArbitrumFork; -const providerUrl = `${ - process.env.LOCAL_PROVIDER_URL || process.env.PROVIDER_URL -}`; -const arbitrumProviderUrl = `${process.env.ARBITRUM_PROVIDER_URL}`; -const standaloneLocalNodeRunning = !!process.env.LOCAL_PROVIDER_URL; +let forkBlockNumber = adjustTheForkBlockNumber(); -let forkBlockNumber = - Number( - isArbForkTest ? process.env.ARBITRUM_BLOCK_NUMBER : process.env.BLOCK_NUMBER - ) || undefined; -if (isForkTest && standaloneLocalNodeRunning) { - const jsonResponse = fetch( - isArbForkTest ? arbitrumProviderUrl : providerUrl, - { - method: "post", - body: JSON.stringify({ - jsonrpc: "2.0", - method: "eth_blockNumber", - id: 1, - }), - headers: { - "Content-Type": "application/json", - }, - } - ).json(); - - /* - * We source the block number from the hardhat context rather than from - * node-test.sh startup script, so that block number from an already - * running local node can be fetched after the deployments have already - * been applied. - * - */ - forkBlockNumber = parseInt(jsonResponse.result, 16); - - console.log(`Connecting to local node on block: ${forkBlockNumber}`); - - // Mine 40 blocks so hardhat wont complain about block fork being too recent - fetch(isArbForkTest ? arbitrumProviderUrl : providerUrl, { - method: "post", - body: JSON.stringify({ - jsonrpc: "2.0", - method: "hardhat_mine", - params: ["0x28"], // 40 - id: 1, - }), - headers: { - "Content-Type": "application/json", - }, - }).json(); -} else if (isForkTest) { - console.log(`Starting a fresh node on block: ${forkBlockNumber}`); +const paths = {}; +if (isHolesky || isHoleskyForkTest || isHoleskyFork) { + // holesky deployment files are in contracts/deploy/holesky + paths.deploy = "deploy/holesky"; +} else { + // holesky deployment files are in contracts/deploy/mainnet + paths.deploy = "deploy/mainnet"; +} +if (process.env.HARDHAT_CACHE_DIR) { + paths.cache = process.env.HARDHAT_CACHE_DIR; } +const { provider, chainId } = getHardhatNetworkProperties(); module.exports = { solidity: { @@ -124,7 +95,7 @@ module.exports = { accounts: { mnemonic, }, - chainId: isFork ? (isArbitrumFork ? 42161 : 1) : 1337, + chainId, ...(isArbitrumFork ? { tags: ["arbitrumOne"] } : {}), ...(isForkTest ? { @@ -132,7 +103,7 @@ module.exports = { initialBaseFeePerGas: 0, forking: { enabled: true, - url: isArbForkTest ? arbitrumProviderUrl : providerUrl, + url: provider, blockNumber: forkBlockNumber, timeout: 0, }, @@ -154,6 +125,15 @@ module.exports = { process.env.GOVERNOR_PK || privateKeys[0], ], }, + holesky: { + url: holeskyProviderUrl, + accounts: [ + process.env.DEPLOYER_PK || privateKeys[0], + process.env.GOVERNOR_PK || privateKeys[0], + ], + chainId: 17000, + live: true, + }, arbitrumOne: { url: arbitrumProviderUrl, accounts: [ @@ -167,11 +147,6 @@ module.exports = { // Fails if gas limit is anything less than 20M on Arbitrum One gas: 20000000, // initialBaseFeePerGas: 0, - // forking: { - // enabled: true, - // url: arbitrumProviderUrl, - // timeout: 0 - // } }, }, mocha: { @@ -182,17 +157,39 @@ module.exports = { namedAccounts: { deployerAddr: { default: 0, - localhost: process.env.FORK === "true" ? MAINNET_DEPLOYER : 0, - hardhat: process.env.FORK === "true" ? MAINNET_DEPLOYER : 0, + localhost: + process.env.FORK === "true" + ? isHoleskyFork + ? HOLESKY_DEPLOYER + : MAINNET_DEPLOYER + : 0, + hardhat: + process.env.FORK === "true" + ? isHoleskyFork + ? HOLESKY_DEPLOYER + : MAINNET_DEPLOYER + : 0, mainnet: MAINNET_DEPLOYER, arbitrumOne: MAINNET_DEPLOYER, + holesky: HOLESKY_DEPLOYER, }, governorAddr: { default: 1, // On Mainnet and fork, the governor is the Governor contract. - localhost: process.env.FORK === "true" ? MAINNET_GOVERNOR : 1, - hardhat: process.env.FORK === "true" ? MAINNET_GOVERNOR : 1, + localhost: + process.env.FORK === "true" + ? isHoleskyFork + ? HOLESKY_DEPLOYER + : MAINNET_GOVERNOR + : 1, + hardhat: + process.env.FORK === "true" + ? isHoleskyFork + ? HOLESKY_DEPLOYER + : MAINNET_GOVERNOR + : 1, mainnet: MAINNET_GOVERNOR, + holesky: HOLESKY_DEPLOYER, // on Holesky the deployer is also the governor }, /* Local node environment currently has no access to Decentralized governance * address, since the contract is in another repo. Once we merge the ousd-governance @@ -243,9 +240,20 @@ module.exports = { }, strategistAddr: { default: 0, - localhost: process.env.FORK === "true" ? MAINNET_STRATEGIST : 0, - hardhat: process.env.FORK === "true" ? MAINNET_STRATEGIST : 0, + localhost: + process.env.FORK === "true" + ? isHoleskyFork + ? HOLESKY_DEPLOYER + : MAINNET_STRATEGIST + : 0, + hardhat: + process.env.FORK === "true" + ? isHoleskyFork + ? HOLESKY_DEPLOYER + : MAINNET_STRATEGIST + : 0, mainnet: MAINNET_STRATEGIST, + holesky: HOLESKY_DEPLOYER, // on Holesky the deployer is also the strategist }, }, contractSizer: { @@ -256,14 +264,21 @@ module.exports = { apiKey: { mainnet: process.env.ETHERSCAN_API_KEY, arbitrumOne: process.env.ARBISCAN_API_KEY, + holesky: process.env.ETHERSCAN_API_KEY, }, + customChains: [ + { + network: "holesky", + chainId: 17000, + urls: { + apiURL: "https://api-holesky.etherscan.io/api", + browserURL: "https://holesky.etherscan.io", + }, + }, + ], }, gasReporter: { enabled: process.env.REPORT_GAS ? true : false, }, - paths: process.env.HARDHAT_CACHE_DIR - ? { - cache: process.env.HARDHAT_CACHE_DIR, - } - : {}, + paths, }; diff --git a/contracts/node.sh b/contracts/node.sh index da3d9880c7..34f09b391a 100755 --- a/contracts/node.sh +++ b/contracts/node.sh @@ -30,7 +30,11 @@ main() PROVIDER_URL=$ARBITRUM_PROVIDER_URL; BLOCK_NUMBER=$ARBITRUM_BLOCK_NUMBER; params+=" --tags arbitrumOne"; + elif [[ $FORK_NETWORK_NAME == "holesky" ]]; then + PROVIDER_URL=$HOLESKY_PROVIDER_URL; + BLOCK_NUMBER=$HOLESKY_BLOCK_NUMBER; fi + echo "Fork Network: $FORK_NETWORK_NAME" if [ -z "$PROVIDER_URL" ]; then echo "Set PROVIDER_URL" && exit 1; fi diff --git a/contracts/package.json b/contracts/package.json index 5f728f7549..b776385b8b 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -7,11 +7,13 @@ "deploy": "rm -rf deployments/hardhat && npx hardhat deploy", "deploy:mainnet": "npx hardhat deploy --network mainnet --verbose", "deploy:arbitrum": "npx hardhat deploy --network arbitrumOne --tags arbitrumOne --verbose", + "deploy:holesky": "NETWORK_NAME=holesky npx hardhat deploy --network holesky --verbose", "abi:generate": "(rm -rf deployments/hardhat && mkdir -p dist/abi && npx hardhat deploy --export '../dist/network.json')", "abi:dist": "find ./artifacts/contracts -name \"*.json\" -type f -exec cp {} ./dist/abi \\; && rm -rf dist/abi/*.dbg.json dist/abi/Mock*.json && cp ./abi.package.json dist/package.json && cp ./.npmrc.abi dist/.npmrc", "node": "yarn run node:fork", "node:fork": "./node.sh fork", "node:arb": "FORK_NETWORK_NAME=arbitrumOne yarn run node:fork", + "node:hol": "FORK_NETWORK_NAME=holesky yarn run node:fork", "lint": "yarn run lint:js && yarn run lint:sol", "lint:js": "eslint \"test/**/*.js\" \"tasks/**/*.js\" \"deploy/**/*.js\"", "lint:sol": "solhint \"contracts/**/*.sol\"", @@ -19,9 +21,10 @@ "prettier:check": "prettier -c \"*.js\" \"deploy/**/*.js\" \"scripts/**/*.js\" \"smoke/**/*.js\" \"scripts/**/*.js\" \"tasks/**/*.js\" \"test/**/*.js\" \"utils/**/*.js\"", "prettier:js": "prettier --write \"*.js\" \"deploy/**/*.js\" \"scripts/**/*.js\" \"smoke/**/*.js\" \"scripts/**/*.js\" \"tasks/**/*.js\" \"test/**/*.js\" \"utils/**/*.js\"", "prettier:sol": "prettier --write \"contracts/**/*.sol\"", - "test": "IS_TEST=true npx hardhat test", + "test": "rm -rf deployments/hardhat && IS_TEST=true npx hardhat test", "test:fork": "./fork-test.sh", "test:arb-fork": "FORK_NETWORK_NAME=arbitrumOne ./fork-test.sh", + "test:hol-fork": "FORK_NETWORK_NAME=holesky ./fork-test.sh", "test:fork:w_trace": "TRACE=true ./fork-test.sh", "fund": "FORK=true npx hardhat fund --network localhost", "echidna": "yarn run clean && rm -rf echidna-corpus && echidna . --contract Echidna --config echidna-config.yaml", @@ -33,7 +36,8 @@ "cache-clean:light": "rm -rf cache/hardhat-network-fork/network-1337/", "test:coverage": "IS_TEST=true npx hardhat coverage", "test:coverage:fork": "REPORT_COVERAGE=true ./fork-test.sh", - "test:coverage:arb-fork": "REPORT_COVERAGE=true FORK_NETWORK_NAME=arbitrumOne ./fork-test.sh" + "test:coverage:arb-fork": "REPORT_COVERAGE=true FORK_NETWORK_NAME=arbitrumOne ./fork-test.sh", + "test:coverage:hol-fork": "REPORT_COVERAGE=true FORK_NETWORK_NAME=holesky ./fork-test.sh" }, "author": "Origin Protocol Inc ", "license": "MIT", diff --git a/contracts/test/helpers.js b/contracts/test/helpers.js index a85f3dc675..c9ec8e1f1d 100644 --- a/contracts/test/helpers.js +++ b/contracts/test/helpers.js @@ -254,13 +254,17 @@ async function humanBalance(user, contract) { const isFork = process.env.FORK === "true"; const isLocalhost = !isFork && hre.network.name === "localhost"; const isMainnet = hre.network.name === "mainnet"; +const isHolesky = hre.network.name == "holesky"; +const isExternalNet = isMainnet || isHolesky; const isTest = process.env.IS_TEST === "true"; const isSmokeTest = process.env.SMOKE_TEST === "true"; const isMainnetOrFork = isMainnet || isFork; const isForkTest = isFork && isTest; const isForkWithLocalNode = isFork && process.env.LOCAL_PROVIDER_URL; const isArbitrumOne = hre.network.name == "arbitrumOne"; +const isTestnetSimplifiedDeploy = isHolesky; const isArbFork = isFork && process.env.FORK_NETWORK_NAME == "arbitrumOne"; +const isHoleskyFork = isFork && process.env.FORK_NETWORK_NAME == "holesky"; const isArbitrumOneOrFork = isArbitrumOne || isArbFork; const isCI = process.env.GITHUB_ACTIONS; @@ -763,6 +767,7 @@ module.exports = { advanceTime, getBlockTimestamp, isMainnet, + isExternalNet, isFork, isTest, isSmokeTest, @@ -771,6 +776,9 @@ module.exports = { isForkTest, isForkWithLocalNode, isArbitrumOne, + isHolesky, + isHoleskyFork, + isTestnetSimplifiedDeploy, isArbitrumOneOrFork, isArbFork, isCI, diff --git a/contracts/utils/deploy.js b/contracts/utils/deploy.js index 7072387d43..19d4152a04 100644 --- a/contracts/utils/deploy.js +++ b/contracts/utils/deploy.js @@ -9,6 +9,7 @@ const { advanceTime, advanceBlocks, isMainnet, + isHolesky, isFork, isMainnetOrFork, getOracleAddresses, @@ -42,7 +43,8 @@ const { const { keccak256, defaultAbiCoder } = require("ethers/lib/utils.js"); // Wait for 3 blocks confirmation on Mainnet. -const NUM_CONFIRMATIONS = isMainnet ? 3 : 0; +let NUM_CONFIRMATIONS = isMainnet ? 3 : 0; +NUM_CONFIRMATIONS = isHolesky ? 4 : NUM_CONFIRMATIONS; function log(msg, deployResult = null) { if (isMainnetOrFork || process.env.VERBOSE) { @@ -705,7 +707,9 @@ const submitProposalToOgvGovernance = async ( /** * Sanity checks to perform before running the deploy */ -const sanityCheckOgvGovernance = async ({ deployerIsProposer = false }) => { +const sanityCheckOgvGovernance = async ({ + deployerIsProposer = false, +} = {}) => { if (isMainnet) { // only applicable when OGV governance is the governor if (deployerIsProposer) { @@ -962,45 +966,41 @@ function deploymentWithGovernanceProposal(opts, fn) { const propArgs = await proposeGovernanceArgs(proposal.actions); const propOpts = proposal.opts || {}; - if (proposal.actions.length == 0) { - console.log("No actions. Skipping governance"); - } else { - if (isMainnet) { - // On Mainnet, only build the propose transaction for OGV governance - log("Building OGV governance proposal..."); - if (deployerIsProposer) { - await submitProposalToOgvGovernance( - propArgs, - propDescription, - propOpts - ); - } else { - await submitProposalGnosisSafe(propArgs, propDescription, propOpts); - } - log("Proposal sent."); - } else if (isFork) { - // On Fork we can send the proposal then impersonate the guardian to execute it. - log("Sending the governance proposal to OGV governance"); - propOpts.reduceQueueTime = reduceQueueTime; - const { proposalState, proposalId, proposalIdBn } = - await submitProposalToOgvGovernance( - propArgs, - propDescription, - propOpts - ); - log("Executing the proposal"); - await executeGovernanceProposalOnFork({ - proposalIdBn, - proposalState, - reduceQueueTime, - executeGasLimit, - }); - log("Proposal executed."); - } else { - throw new Error( - "deploymentWithGovernanceProposal not supported in local node environment" + if (isMainnet) { + // On Mainnet, only build the propose transaction for OGV governance + log("Building OGV governance proposal..."); + if (deployerIsProposer) { + await submitProposalToOgvGovernance( + propArgs, + propDescription, + propOpts ); + } else { + await submitProposalGnosisSafe(propArgs, propDescription, propOpts); } + log("Proposal sent."); + } else if (isFork) { + // On Fork we can send the proposal then impersonate the guardian to execute it. + log("Sending the governance proposal to OGV governance"); + propOpts.reduceQueueTime = reduceQueueTime; + const { proposalState, proposalId, proposalIdBn } = + await submitProposalToOgvGovernance( + propArgs, + propDescription, + propOpts + ); + log("Executing the proposal"); + await executeGovernanceProposalOnFork({ + proposalIdBn, + proposalState, + reduceQueueTime, + executeGasLimit, + }); + log("Proposal executed."); + } else { + throw new Error( + "deploymentWithGovernanceProposal not supported in local node environment" + ); } }; diff --git a/contracts/utils/hardhat-helpers.js b/contracts/utils/hardhat-helpers.js new file mode 100644 index 0000000000..9474f402ad --- /dev/null +++ b/contracts/utils/hardhat-helpers.js @@ -0,0 +1,134 @@ +const fetch = require("sync-fetch"); +require("dotenv").config(); + +const isFork = process.env.FORK === "true"; +const isArbitrumFork = process.env.FORK_NETWORK_NAME === "arbitrumOne"; +const isHoleskyFork = process.env.FORK_NETWORK_NAME === "holesky"; +const isHolesky = process.env.NETWORK_NAME === "holesky"; +const isForkTest = isFork && process.env.IS_TEST === "true"; +const isArbForkTest = isForkTest && isArbitrumFork; +const isHoleskyForkTest = isForkTest && isHoleskyFork; +const providerUrl = `${ + process.env.LOCAL_PROVIDER_URL || process.env.PROVIDER_URL +}`; +const arbitrumProviderUrl = `${process.env.ARBITRUM_PROVIDER_URL}`; +const holeskyProviderUrl = `${process.env.HOLESKY_PROVIDER_URL}`; +const standaloneLocalNodeRunning = !!process.env.LOCAL_PROVIDER_URL; + +/** + * - Reads the fork block number from environmental variables depending on the context of the run + * - In case a local node is running (and it could have deployments executed) the updated block number is queried + * from the node and that one is used. + * - Local node is forwarded by 40 blocks + */ +const adjustTheForkBlockNumber = () => { + let forkBlockNumber = undefined; + + if (isForkTest) { + if (isArbForkTest) { + forkBlockNumber = process.env.ARBITRUM_BLOCK_NUMBER + ? process.env.ARBITRUM_BLOCK_NUMBER + : undefined; + } else if (isHoleskyForkTest) { + forkBlockNumber = process.env.HOLESKY_BLOCK_NUMBER + ? process.env.HOLESKY_BLOCK_NUMBER + : undefined; + } else { + forkBlockNumber = process.env.BLOCK_NUMBER + ? process.env.BLOCK_NUMBER + : undefined; + } + } + + if (isForkTest && standaloneLocalNodeRunning) { + const jsonResponse = fetch(providerUrl, { + method: "post", + body: JSON.stringify({ + jsonrpc: "2.0", + method: "eth_blockNumber", + id: 1, + }), + headers: { + "Content-Type": "application/json", + }, + }).json(); + + /* + * We source the block number from the hardhat context rather than from + * node-test.sh startup script, so that block number from an already + * running local node can be fetched after the deployments have already + * been applied. + * + */ + forkBlockNumber = parseInt(jsonResponse.result, 16); + + console.log(`Connecting to local node on block: ${forkBlockNumber}`); + + // Mine 40 blocks so hardhat wont complain about block fork being too recent + // On Holesky running this causes repeated tests connecting to a local node + // to fail + if (!isHoleskyFork && !isHolesky) { + fetch(providerUrl, { + method: "post", + body: JSON.stringify({ + jsonrpc: "2.0", + method: "hardhat_mine", + params: ["0x28"], // 40 + id: 1, + }), + headers: { + "Content-Type": "application/json", + }, + }).json(); + } + } else if (isForkTest) { + console.log(`Starting a fresh node on block: ${forkBlockNumber}`); + } + + return forkBlockNumber; +}; + +// returns hardhat network chainId and provider +const getHardhatNetworkProperties = () => { + let chainId = 1337; + if (isArbitrumFork && isFork) { + chainId = 42161; + } else if (isHoleskyFork && isFork) { + chainId = 17000; + } else if (isFork) { + // is mainnet fork + chainId = 1; + } + + let provider = providerUrl; + if (isArbForkTest) { + provider = arbitrumProviderUrl; + } else if (isHoleskyForkTest) { + provider = holeskyProviderUrl; + } + + return { chainId, provider }; +}; + +const networkMap = { + 1: "mainnet", + 17000: "holesky", + 42161: "arbitrumOne", + 1337: "hardhat", +}; + +module.exports = { + isFork, + isArbitrumFork, + isHoleskyFork, + isHolesky, + isForkTest, + isArbForkTest, + isHoleskyForkTest, + providerUrl, + arbitrumProviderUrl, + holeskyProviderUrl, + adjustTheForkBlockNumber, + getHardhatNetworkProperties, + networkMap, +};