mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
324 lines
12 KiB
TypeScript
324 lines
12 KiB
TypeScript
// import { task } from 'hardhat/config';
|
|
// import {
|
|
// deployATokensAndRatesHelper,
|
|
// deployStableAndVariableTokensHelper,
|
|
// deployAaveProtocolDataProvider,
|
|
// deployLendingPoolAddressesProvider, //Test
|
|
// } from '../../helpers/contracts-deployments';
|
|
// import {
|
|
// deployUniswapLendingPoolAddressesProvider,
|
|
// deployUniswapLendingPool,
|
|
// deployUniswapLendingPoolConfigurator,
|
|
// deployUniswapPriceOracle,
|
|
// deployUniswapAaveOracle,
|
|
// deployUniswapLendingRateOracle,
|
|
// deployUniswapLendingPoolCollateralManager,
|
|
// deployUniswapMockFlashLoanReceiver,
|
|
// deployUniswapWETHGateway,
|
|
// deployUniswapWalletBalancerProvider,
|
|
// } from '../../helpers/uniswap-contracts-deployments';
|
|
// import { tEthereumAddress,
|
|
// eContractid,
|
|
// AavePools,
|
|
// ICommonConfiguration,
|
|
// iAssetBase,
|
|
// TokenContractId,
|
|
// IMarketRates,
|
|
// } from '../../helpers/types';
|
|
// import {
|
|
// getLendingPoolAddressesProviderRegistry,
|
|
// getLendingPoolAddressesProvider, //Test
|
|
// getLendingPool,
|
|
// getLendingPoolConfiguratorProxy,
|
|
// getAllMockedTokens,
|
|
// getPairsTokenAggregator,
|
|
// } from '../../helpers/contracts-getters';
|
|
// import { waitForTx, filterMapBy } from '../../helpers/misc-utils';
|
|
// import { UniswapConfig } from '../../markets/uniswap';
|
|
// import { insertContractAddressInDb } from '../../helpers/contracts-helpers';
|
|
// import {
|
|
// setInitialAssetPricesInOracle,
|
|
// deployAllMockAggregators,
|
|
// setInitialMarketRatesInRatesOracleByHelper,
|
|
// } from '../../helpers/oracles-helpers';
|
|
// import {getAllAggregatorsAddresses, getAllTokenAddresses} from '../../helpers/mock-helpers';
|
|
// import {
|
|
// ConfigNames,
|
|
// getReservesConfigByPool,
|
|
// getTreasuryAddress,
|
|
// loadPoolConfig,
|
|
// getWethAddress,
|
|
// } from '../../helpers/configuration';
|
|
// import {
|
|
// configureReservesByHelper,
|
|
// initReservesByHelper,
|
|
// } from '../../helpers/init-helpers';
|
|
// import { ZERO_ADDRESS } from '../../helpers/constants';
|
|
|
|
|
|
// const pool = ConfigNames.Uniswap;
|
|
// /**
|
|
// * @dev addressesProvider is actually created here, so we don't need to use getAddressesProvider
|
|
// */
|
|
// task(
|
|
// 'dev:deploy-uniswap-market',
|
|
// 'Deploy uniswap market'
|
|
// )
|
|
// .addFlag('verify', 'Verify contracts at Etherscan')
|
|
// .setAction(async ({ verify }, localBRE) => {
|
|
// await localBRE.run('set-DRE');
|
|
|
|
// const admin = await (await localBRE.ethers.getSigners())[0].getAddress();
|
|
|
|
// const testProvider = await getLendingPoolAddressesProvider();
|
|
// console.log("Addresses provider from function (pre re-deploy):", testProvider.address);
|
|
// const addressesProvider = await deployLendingPoolAddressesProvider(UniswapConfig.MarketId, verify);
|
|
// console.log("Addresses provider in execution::", addressesProvider.address)
|
|
|
|
// const testProviderPost = await getLendingPoolAddressesProvider();
|
|
// console.log("Addresses provider from function (pre re-deploy):", testProviderPost.address);
|
|
// console.log("Addresses provider from function (post re-deploy) should be different:")
|
|
// await waitForTx(await addressesProvider.setPoolAdmin(admin));
|
|
|
|
|
|
// const addressesProviderRegistry = await getLendingPoolAddressesProviderRegistry();
|
|
// await waitForTx(
|
|
// await addressesProviderRegistry.registerAddressesProvider(addressesProvider.address, 1)
|
|
// );
|
|
// console.log(addressesProvider.address);
|
|
|
|
|
|
// /**
|
|
// * LENDING POOL DEPLOYMENT
|
|
// */
|
|
// const lendingPoolImpl = await deployUniswapLendingPool(verify);
|
|
|
|
// await waitForTx(await addressesProvider.setLendingPoolImpl(lendingPoolImpl.address));
|
|
|
|
// const address = await addressesProvider.getLendingPool();
|
|
// console.log("UNISWAP MARKET LENDING POOL:", address);
|
|
// const lendingPoolProxy = await getLendingPool(address);
|
|
// await insertContractAddressInDb(eContractid.UniswapLendingPool, lendingPoolProxy.address);
|
|
|
|
// const lendingPoolConfiguratorImpl = await deployUniswapLendingPoolConfigurator(verify);
|
|
|
|
// // Set lending pool conf impl to Address Provider
|
|
// await waitForTx(
|
|
// await addressesProvider.setLendingPoolConfiguratorImpl(lendingPoolConfiguratorImpl.address)
|
|
// );
|
|
|
|
// const lendingPoolConfiguratorProxy = await getLendingPoolConfiguratorProxy(
|
|
// await addressesProvider.getLendingPoolConfigurator()
|
|
// );
|
|
|
|
// await insertContractAddressInDb(
|
|
// eContractid.UniswapLendingPoolConfigurator,
|
|
// lendingPoolConfiguratorProxy.address
|
|
// );
|
|
|
|
// // Deploy deployment helpers
|
|
// await deployStableAndVariableTokensHelper(
|
|
// [lendingPoolProxy.address, addressesProvider.address],
|
|
// verify
|
|
// );
|
|
// await deployATokensAndRatesHelper(
|
|
// [lendingPoolProxy.address, addressesProvider.address, lendingPoolConfiguratorProxy.address],
|
|
// verify
|
|
// );
|
|
|
|
// /**
|
|
// * @dev Oracle deployment section
|
|
// */
|
|
|
|
// console.log("Uniswap oracle deployment beginning.")
|
|
// const poolConfig = loadPoolConfig(pool);
|
|
// console.log("Initialized pool config...");
|
|
|
|
// const {
|
|
// Mocks: {AllAssetsInitialPrices},
|
|
// ProtocolGlobalParams: {UsdAddress, MockUsdPriceInWei},
|
|
// LendingRateOracleRatesCommon,
|
|
// } = poolConfig as ICommonConfiguration;
|
|
|
|
// console.log("Initialized mocks, global params and lending rate oracle rates");
|
|
|
|
// const defaultTokenList = {
|
|
// ...Object.fromEntries(Object.keys(TokenContractId).map((symbol) => [symbol, ''])),
|
|
// USD: UsdAddress,
|
|
// } as iAssetBase<string>;
|
|
|
|
// console.log("Initialized defaultTokenList");
|
|
|
|
// const mockTokens = await getAllMockedTokens();
|
|
|
|
// console.log("Initialized mock tokens");
|
|
|
|
// const mockTokensAddress = Object.keys(mockTokens).reduce<iAssetBase<string>>((prev, curr) => {
|
|
// prev[curr as keyof iAssetBase<string>] = mockTokens[curr].address;
|
|
// return prev;
|
|
// }, defaultTokenList);
|
|
// console.log(mockTokensAddress);
|
|
// console.log("Initialized mock tokens addresses");
|
|
|
|
// // No need to re-initialize addressesProvider and admin
|
|
|
|
// const fallbackOracle = await deployUniswapPriceOracle(verify);
|
|
// console.log("Deployed fallback price oracle");
|
|
|
|
// await waitForTx(await fallbackOracle.setEthUsdPrice(MockUsdPriceInWei));
|
|
// console.log("set fallback ETH USD price");
|
|
|
|
// await setInitialAssetPricesInOracle(AllAssetsInitialPrices, mockTokensAddress, fallbackOracle);
|
|
// console.log("Set initial asset prices in oracle");
|
|
|
|
// const mockAggregators = await deployAllMockAggregators(AllAssetsInitialPrices, verify);
|
|
// console.log("Deployed mock aggregators");
|
|
|
|
// const allTokenAddresses = getAllTokenAddresses(mockTokens);
|
|
// console.log("Got all mock token addresses");
|
|
|
|
// const allAggregatorsAddresses = getAllAggregatorsAddresses(mockAggregators);
|
|
// console.log("Got all aggregator addresses");
|
|
// console.log("allTokenAddresses object: \n", allTokenAddresses);
|
|
// //Should modify this to potentially contain only the tokens in the Uniswap market
|
|
// // const [tokens, aggregators] = getPairsTokenAggregator(
|
|
// // allTokenAddresses,
|
|
// // allAggregatorsAddresses
|
|
// // );
|
|
// // console.log("Got \"pairsToken aggregator\"");
|
|
// // console.log("Tokens: \n", tokens);
|
|
|
|
// // const assetAddressIndex = Object.keys(allReservesAddresses).findIndex(
|
|
// // (value) => value === assetSymbol
|
|
// // );
|
|
// // const [, assetAddress] = (Object.entries(assetsAddresses) as [string, string][])[
|
|
// // assetAddressIndex
|
|
// // ];
|
|
// // assetAddresses.push(assetAddress);
|
|
|
|
// // await deployUniswapAaveOracle(
|
|
// // [tokens, aggregators, fallbackOracle.address, await getWethAddress(poolConfig)],
|
|
// // verify
|
|
// // );
|
|
// console.log("Deployed Uniswap Aave oracle");
|
|
|
|
// await waitForTx(await addressesProvider.setPriceOracle(fallbackOracle.address));
|
|
// console.log("Set price oracle in addresses provider");
|
|
|
|
// const lendingRateOracle = await deployUniswapLendingRateOracle(verify);
|
|
// console.log("Deployed lendingRateOracle");
|
|
|
|
// await waitForTx(await addressesProvider.setLendingRateOracle(lendingRateOracle.address));
|
|
// console.log("Set lending rate oracle in addresses provider");
|
|
|
|
// const {USD, ...tokensAddressesWithoutUsd} = allTokenAddresses;
|
|
// console.log("Initialized object with token addresses & usd")
|
|
|
|
// const allReservesAddresses = {
|
|
// ...tokensAddressesWithoutUsd,
|
|
// };
|
|
// console.log("Initialized object with all reserve addresses, allReservesAddresses:");
|
|
// console.log(allReservesAddresses);
|
|
|
|
// console.log("LendingRateOracleRatesCommon: \n", LendingRateOracleRatesCommon);
|
|
// //
|
|
// // -- test
|
|
// //
|
|
// const [tokens, aggregators] = getPairsTokenAggregator(
|
|
// allTokenAddresses,
|
|
// allAggregatorsAddresses
|
|
// );
|
|
// console.log("Got \"pairsToken aggregator\"");
|
|
// console.log("Tokens: \n", tokens);
|
|
// const assetAddresses: string[] = [];
|
|
// const aggregatorAddresses: string[] = [];
|
|
// for (const [assetSymbol, {borrowRate}] of Object.entries(LendingRateOracleRatesCommon) as [
|
|
// string,
|
|
// IMarketRates
|
|
// ][]) {
|
|
// const assetAddressIndex = Object.keys(allReservesAddresses).findIndex(
|
|
// (value) => value === assetSymbol
|
|
// );
|
|
// const [, assetAddress] = (Object.entries(allReservesAddresses) as [string, string][])[
|
|
// assetAddressIndex
|
|
// ];
|
|
|
|
// const [, aggregatorAddress] = (Object.entries(allAggregatorsAddresses) as [string, string][])[
|
|
// assetAddressIndex
|
|
// ];
|
|
// aggregatorAddresses.push(aggregatorAddress);
|
|
// assetAddresses.push(assetAddress);
|
|
// }
|
|
// console.log("\nPRICE ORACLE PARAMS:\nassetAddresses: %s\naggregatorAddresses: %s", assetAddresses, aggregatorAddresses);
|
|
// await deployUniswapAaveOracle(
|
|
// [assetAddresses, aggregatorAddresses, fallbackOracle.address, await getWethAddress(poolConfig)],
|
|
// verify
|
|
// );
|
|
// //
|
|
// // -- test end
|
|
// //
|
|
// console.log("TEST END-----------------------------------------------------------------------");
|
|
// await setInitialMarketRatesInRatesOracleByHelper(
|
|
// LendingRateOracleRatesCommon,
|
|
// allReservesAddresses,
|
|
// lendingRateOracle,
|
|
// admin
|
|
// );
|
|
|
|
// console.log("Task complete");
|
|
|
|
// /**
|
|
// * @dev Initialization
|
|
// */
|
|
|
|
// // No need to initialize poolConfig, mockTokens, allTokenAddresses, admin and
|
|
// // addressesProvider and protoReservesAddresses (we use allReserveAddresses)
|
|
|
|
// const testHelpers = await deployAaveProtocolDataProvider(addressesProvider.address, verify);
|
|
|
|
// const reservesParams = getReservesConfigByPool(AavePools.uniswap);
|
|
|
|
// const treasuryAddress = await getTreasuryAddress(poolConfig);
|
|
|
|
// await initReservesByHelper(
|
|
// addressesProvider,
|
|
// reservesParams,
|
|
// allReservesAddresses,
|
|
// admin,
|
|
// treasuryAddress,
|
|
// ZERO_ADDRESS,
|
|
// verify
|
|
// );
|
|
|
|
// await configureReservesByHelper(
|
|
// addressesProvider,
|
|
// reservesParams,
|
|
// allReservesAddresses,
|
|
// testHelpers,
|
|
// admin
|
|
// );
|
|
|
|
// const collateralManager = await deployUniswapLendingPoolCollateralManager(verify);
|
|
// await waitForTx(
|
|
// await addressesProvider.setLendingPoolCollateralManager(collateralManager.address)
|
|
// );
|
|
|
|
// const mockFlashLoanReceiver = await deployUniswapMockFlashLoanReceiver(
|
|
// addressesProvider.address,
|
|
// verify
|
|
// );
|
|
|
|
// await insertContractAddressInDb(
|
|
// eContractid.UniswapMockFlashLoanReceiver,
|
|
// mockFlashLoanReceiver.address
|
|
// );
|
|
|
|
// await deployUniswapWalletBalancerProvider(verify);
|
|
|
|
// await insertContractAddressInDb(eContractid.AaveProtocolDataProvider, testHelpers.address);
|
|
|
|
// const lendingPoolAddress = await addressesProvider.getLendingPool();
|
|
// const wethAddress = await getWethAddress(poolConfig);
|
|
// await deployUniswapWETHGateway([wethAddress, lendingPoolAddress]);
|
|
// });
|