mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
wip: improved curve deployment scripts
This commit is contained in:
parent
549bd7c944
commit
1b7d509051
|
@ -345,11 +345,28 @@ export const deployCurveGaugeReserveInterestRateStrategy = async (
|
||||||
) =>
|
) =>
|
||||||
withSaveAndVerify(
|
withSaveAndVerify(
|
||||||
await new CurveGaugeReserveInterestRateStrategyFactory(await getFirstSigner()).deploy(...args),
|
await new CurveGaugeReserveInterestRateStrategyFactory(await getFirstSigner()).deploy(...args),
|
||||||
eContractid.DefaultReserveInterestRateStrategy,
|
eContractid.CurveGaugeReserveInterestRateStrategy,
|
||||||
args,
|
args,
|
||||||
verify
|
verify
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const deployRateStrategy = async (
|
||||||
|
strategyName: string,
|
||||||
|
args: [tEthereumAddress, string, string, string, string, string, string],
|
||||||
|
verify: boolean
|
||||||
|
): Promise<tEthereumAddress> => {
|
||||||
|
switch (strategyName) {
|
||||||
|
case 'rateStrategyCurveBase':
|
||||||
|
return await (
|
||||||
|
await deployCurveGaugeReserveInterestRateStrategy(args, verify)
|
||||||
|
).address;
|
||||||
|
default:
|
||||||
|
return await (
|
||||||
|
await deployDefaultReserveInterestRateStrategy(args, verify)
|
||||||
|
).address;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const deployStableDebtToken = async (
|
export const deployStableDebtToken = async (
|
||||||
args: [tEthereumAddress, tEthereumAddress, tEthereumAddress, string, string],
|
args: [tEthereumAddress, tEthereumAddress, tEthereumAddress, string, string],
|
||||||
verify: boolean
|
verify: boolean
|
||||||
|
|
|
@ -18,7 +18,7 @@ import {
|
||||||
rawInsertContractAddressInDb,
|
rawInsertContractAddressInDb,
|
||||||
} from './contracts-helpers';
|
} from './contracts-helpers';
|
||||||
import { BigNumberish } from 'ethers';
|
import { BigNumberish } from 'ethers';
|
||||||
import { deployDefaultReserveInterestRateStrategy } from './contracts-deployments';
|
import { deployRateStrategy } from './contracts-deployments';
|
||||||
import { ConfigNames } from './configuration';
|
import { ConfigNames } from './configuration';
|
||||||
import { defaultAbiCoder } from 'ethers/lib/utils';
|
import { defaultAbiCoder } from 'ethers/lib/utils';
|
||||||
import { isCurveGaugeV2, poolToGauge } from './external/curve/constants';
|
import { isCurveGaugeV2, poolToGauge } from './external/curve/constants';
|
||||||
|
@ -115,9 +115,12 @@ export const initReservesByHelper = async (
|
||||||
stableRateSlope1,
|
stableRateSlope1,
|
||||||
stableRateSlope2,
|
stableRateSlope2,
|
||||||
];
|
];
|
||||||
strategyAddresses[strategy.name] = (
|
strategyAddresses[strategy.name] = await deployRateStrategy(
|
||||||
await deployDefaultReserveInterestRateStrategy(rateStrategies[strategy.name], verify)
|
strategy.name,
|
||||||
).address;
|
rateStrategies[strategy.name],
|
||||||
|
verify
|
||||||
|
);
|
||||||
|
|
||||||
// This causes the last strategy to be printed twice, once under "DefaultReserveInterestRateStrategy"
|
// This causes the last strategy to be printed twice, once under "DefaultReserveInterestRateStrategy"
|
||||||
// and once under the actual `strategyASSET` key.
|
// and once under the actual `strategyASSET` key.
|
||||||
rawInsertContractAddressInDb(strategy.name, strategyAddresses[strategy.name]);
|
rawInsertContractAddressInDb(strategy.name, strategyAddresses[strategy.name]);
|
||||||
|
|
|
@ -93,6 +93,7 @@ export enum eContractid {
|
||||||
AaveOracleV2 = 'AaveOracleV2',
|
AaveOracleV2 = 'AaveOracleV2',
|
||||||
CurveGaugeRewardsAwareAToken = 'CurveGaugeRewardsAwareAToken',
|
CurveGaugeRewardsAwareAToken = 'CurveGaugeRewardsAwareAToken',
|
||||||
CurveTreasury = 'CurveTreasury',
|
CurveTreasury = 'CurveTreasury',
|
||||||
|
CurveGaugeReserveInterestRateStrategy = 'CurveGaugeReserveInterestRateStrategy',
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -149,8 +149,8 @@ export const AmmConfig: IUsdAmmConfiguration = {
|
||||||
[eEthereumNetwork.buidlerevm]: '',
|
[eEthereumNetwork.buidlerevm]: '',
|
||||||
[eEthereumNetwork.kovan]: '0x8fb777d67e9945e2c01936e319057f9d41d559e6', // Need to re-deploy because of onlyOwner
|
[eEthereumNetwork.kovan]: '0x8fb777d67e9945e2c01936e319057f9d41d559e6', // Need to re-deploy because of onlyOwner
|
||||||
[eEthereumNetwork.ropsten]: ZERO_ADDRESS,
|
[eEthereumNetwork.ropsten]: ZERO_ADDRESS,
|
||||||
[eEthereumNetwork.main]: ZERO_ADDRESS,
|
[eEthereumNetwork.main]: '0x3a463ffe9b69364b51113352a17839e36268e657', // Dev Fork only
|
||||||
[eEthereumNetwork.tenderly]: '0x3a463fFE9b69364B51113352a17839e36268e657',
|
[eEthereumNetwork.tenderly]: '0x3a463fFE9b69364B51113352a17839e36268e657', // Dev Fork only
|
||||||
},
|
},
|
||||||
FallbackOracle: {
|
FallbackOracle: {
|
||||||
[eEthereumNetwork.coverage]: '',
|
[eEthereumNetwork.coverage]: '',
|
||||||
|
@ -174,7 +174,7 @@ export const AmmConfig: IUsdAmmConfiguration = {
|
||||||
USDT: '0x3E7d1eAB13ad0104d2750B8863b489D65364e32D',
|
USDT: '0x3E7d1eAB13ad0104d2750B8863b489D65364e32D',
|
||||||
a3CRV: '0x63180F55F421fEC4DD2C778bcE565D3fde03f931', // Oracle deployed at fork
|
a3CRV: '0x63180F55F421fEC4DD2C778bcE565D3fde03f931', // Oracle deployed at fork
|
||||||
saCRV: '0x1eD0819bD513A0B9271Fa831f1C3dbab8d80C36c', // Oracle deployed at fork
|
saCRV: '0x1eD0819bD513A0B9271Fa831f1C3dbab8d80C36c', // Oracle deployed at fork
|
||||||
'3CRV': '0x03c3614b6888842EcCAc71ADA1Ef1ad8e54f6D89', // Oracle deployed at fork
|
'3CRV': '0x80D85fDA125B5779A09b5633af114c927392b01c', // Oracle deployed at fork
|
||||||
},
|
},
|
||||||
[eEthereumNetwork.tenderly]: {
|
[eEthereumNetwork.tenderly]: {
|
||||||
DAI: '0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9',
|
DAI: '0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9',
|
||||||
|
@ -183,7 +183,7 @@ export const AmmConfig: IUsdAmmConfiguration = {
|
||||||
USDT: '0x3E7d1eAB13ad0104d2750B8863b489D65364e32D',
|
USDT: '0x3E7d1eAB13ad0104d2750B8863b489D65364e32D',
|
||||||
a3CRV: '0x63180F55F421fEC4DD2C778bcE565D3fde03f931', // Oracle deployed at fork
|
a3CRV: '0x63180F55F421fEC4DD2C778bcE565D3fde03f931', // Oracle deployed at fork
|
||||||
saCRV: '0x1eD0819bD513A0B9271Fa831f1C3dbab8d80C36c', // Oracle deployed at fork
|
saCRV: '0x1eD0819bD513A0B9271Fa831f1C3dbab8d80C36c', // Oracle deployed at fork
|
||||||
'3CRV': '0x03c3614b6888842EcCAc71ADA1Ef1ad8e54f6D89', // Oracle deployed at fork
|
'3CRV': '0x80D85fDA125B5779A09b5633af114c927392b01c', // Oracle deployed at fork
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
ATokenDomainSeparator: {
|
ATokenDomainSeparator: {
|
||||||
|
|
|
@ -12,6 +12,16 @@ export const rateStrategyAmmBase: IInterestRateStrategyParams = {
|
||||||
stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(),
|
stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const rateStrategyCurveBase: IInterestRateStrategyParams = {
|
||||||
|
name: 'rateStrategyCurveBase',
|
||||||
|
optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(),
|
||||||
|
baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
|
||||||
|
variableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(),
|
||||||
|
variableRateSlope2: new BigNumber(3.0).multipliedBy(oneRay).toFixed(),
|
||||||
|
stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(),
|
||||||
|
stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(),
|
||||||
|
};
|
||||||
|
|
||||||
// WETH WBTC
|
// WETH WBTC
|
||||||
export const rateStrategyBaseOne: IInterestRateStrategyParams = {
|
export const rateStrategyBaseOne: IInterestRateStrategyParams = {
|
||||||
name: 'rateStrategyBaseOne',
|
name: 'rateStrategyBaseOne',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { eContractid, IReserveParams } from '../../helpers/types';
|
import { eContractid, IReserveParams } from '../../helpers/types';
|
||||||
import { rateStrategyAmmBase, rateStrategyStable, rateStrategyBaseOne } from './rateStrategies';
|
import { rateStrategyStable, rateStrategyBaseOne, rateStrategyCurveBase } from './rateStrategies';
|
||||||
|
|
||||||
export const strategyWETH: IReserveParams = {
|
export const strategyWETH: IReserveParams = {
|
||||||
strategy: rateStrategyBaseOne,
|
strategy: rateStrategyBaseOne,
|
||||||
|
@ -74,7 +74,7 @@ export const strategyUSDT: IReserveParams = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const strategyCurveLP: IReserveParams = {
|
export const strategyCurveLP: IReserveParams = {
|
||||||
strategy: rateStrategyAmmBase,
|
strategy: rateStrategyCurveBase,
|
||||||
baseLTVAsCollateral: '9250',
|
baseLTVAsCollateral: '9250',
|
||||||
liquidationThreshold: '9350',
|
liquidationThreshold: '9350',
|
||||||
liquidationBonus: '10500',
|
liquidationBonus: '10500',
|
||||||
|
|
|
@ -6,6 +6,8 @@ import {
|
||||||
deployInitializableAdminUpgradeabilityProxy,
|
deployInitializableAdminUpgradeabilityProxy,
|
||||||
} from '../../helpers/contracts-deployments';
|
} from '../../helpers/contracts-deployments';
|
||||||
import { waitForTx } from '../../helpers/misc-utils';
|
import { waitForTx } from '../../helpers/misc-utils';
|
||||||
|
import { registerContractInJsonDb } from '../../helpers/contracts-helpers';
|
||||||
|
import { eContractid } from '../../helpers/types';
|
||||||
|
|
||||||
task(`deploy-curve-treasury`, `Deploys the CurveTreasury contract`)
|
task(`deploy-curve-treasury`, `Deploys the CurveTreasury contract`)
|
||||||
.addParam('proxyAdmin')
|
.addParam('proxyAdmin')
|
||||||
|
@ -40,6 +42,9 @@ task(`deploy-curve-treasury`, `Deploys the CurveTreasury contract`)
|
||||||
await proxy['initialize(address,address,bytes)'](implementation.address, proxyAdmin, encoded)
|
await proxy['initialize(address,address,bytes)'](implementation.address, proxyAdmin, encoded)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
await registerContractInJsonDb(eContractid.CurveTreasury, proxy);
|
||||||
|
await registerContractInJsonDb(`${eContractid.CurveTreasury}Impl`, implementation);
|
||||||
|
|
||||||
console.log(`\tFinished CurveTreasury deployment`);
|
console.log(`\tFinished CurveTreasury deployment`);
|
||||||
console.log(`\tProxy:`, proxy.address);
|
console.log(`\tProxy:`, proxy.address);
|
||||||
console.log(`\tImpl:`, implementation.address);
|
console.log(`\tImpl:`, implementation.address);
|
||||||
|
|
|
@ -35,7 +35,7 @@ task(`deploy-${eContractid.UiPoolDataProvider}`, `Deploys the UiPoolDataProvider
|
||||||
},
|
},
|
||||||
[eEthereumNetwork.tenderly]: {
|
[eEthereumNetwork.tenderly]: {
|
||||||
incentivesController: '0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5',
|
incentivesController: '0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5',
|
||||||
aaveOracle: '0x3a463fFE9b69364B51113352a17839e36268e657',
|
aaveOracle: '0x90D5588357Ff9eB573Fa0693Cb77A14c1f5b89B1',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const supportedNetworks = Object.keys(addressesByNetwork);
|
const supportedNetworks = Object.keys(addressesByNetwork);
|
||||||
|
|
|
@ -19,6 +19,7 @@ import {
|
||||||
getPairsTokenAggregator,
|
getPairsTokenAggregator,
|
||||||
} from '../../helpers/contracts-getters';
|
} from '../../helpers/contracts-getters';
|
||||||
import { AaveOracle, AaveOracleV2, LendingRateOracle } from '../../types';
|
import { AaveOracle, AaveOracleV2, LendingRateOracle } from '../../types';
|
||||||
|
import { isAddress } from 'ethers/lib/utils';
|
||||||
|
|
||||||
task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
|
task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
|
||||||
.addFlag('verify', 'Verify contracts at Etherscan')
|
.addFlag('verify', 'Verify contracts at Etherscan')
|
||||||
|
@ -38,6 +39,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
|
||||||
const addressesProvider = await getLendingPoolAddressesProvider();
|
const addressesProvider = await getLendingPoolAddressesProvider();
|
||||||
const admin = await getGenesisPoolAdmin(poolConfig);
|
const admin = await getGenesisPoolAdmin(poolConfig);
|
||||||
const aaveOracleAddress = getParamPerNetwork(poolConfig.AaveOracle, network);
|
const aaveOracleAddress = getParamPerNetwork(poolConfig.AaveOracle, network);
|
||||||
|
console.log('ORACLE ADRR', aaveOracleAddress);
|
||||||
const lendingRateOracleAddress = getParamPerNetwork(poolConfig.LendingRateOracle, network);
|
const lendingRateOracleAddress = getParamPerNetwork(poolConfig.LendingRateOracle, network);
|
||||||
const fallbackOracleAddress = await getParamPerNetwork(FallbackOracle, network);
|
const fallbackOracleAddress = await getParamPerNetwork(FallbackOracle, network);
|
||||||
const reserveAssets = await getParamPerNetwork(ReserveAssets, network);
|
const reserveAssets = await getParamPerNetwork(ReserveAssets, network);
|
||||||
|
@ -58,6 +60,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
|
||||||
|
|
||||||
if (notFalsyOrZeroAddress(aaveOracleAddress)) {
|
if (notFalsyOrZeroAddress(aaveOracleAddress)) {
|
||||||
aaveOracle = await await getAaveOracle(aaveOracleAddress);
|
aaveOracle = await await getAaveOracle(aaveOracleAddress);
|
||||||
|
await waitForTx(await aaveOracle.setAssetSources(tokens, aggregators));
|
||||||
} else {
|
} else {
|
||||||
aaveOracle = await deployAaveOracleV2(
|
aaveOracle = await deployAaveOracleV2(
|
||||||
[
|
[
|
||||||
|
|
Loading…
Reference in New Issue
Block a user