Cleanup (Removed unneeded dev deployment)

This commit is contained in:
Zer0dot 2021-01-10 20:40:23 -05:00
parent 587c4df47c
commit 0472cc27f2
14 changed files with 14 additions and 831 deletions

View File

@ -25,7 +25,6 @@ import {
} from './contracts-deployments';
import { ZERO_ADDRESS } from './constants';
import { isZeroAddress } from 'ethereumjs-util';
import { LendingPoolAddressesProvider } from '../types';
const chooseATokenDeployment = (id: eContractid) => {
switch (id) {
@ -39,7 +38,6 @@ const chooseATokenDeployment = (id: eContractid) => {
};
export const initReservesByHelper = async (
addressProvider: LendingPoolAddressesProvider,
reservesParams: iMultiPoolsAssets<IReserveParams>,
tokenAddresses: { [symbol: string]: tEthereumAddress },
admin: tEthereumAddress,
@ -51,7 +49,7 @@ export const initReservesByHelper = async (
const stableAndVariableDeployer = await getStableAndVariableTokensHelper();
const atokenAndRatesDeployer = await getATokensAndRatesHelper();
//const addressProvider = await getLendingPoolAddressesProvider();
const addressProvider = await getLendingPoolAddressesProvider();
const poolAddress = await addressProvider.getLendingPool();
// Set aTokenAndRatesDeployer as temporal admin
@ -82,7 +80,6 @@ export const initReservesByHelper = async (
Object.entries(reservesParams).length * 4
} txs`
);
console.log("initReservesByHelper: tokenAddresses:", tokenAddresses);
for (let reservesChunk of reservesChunks) {
// Prepare data
const tokens: string[] = [];
@ -98,15 +95,13 @@ export const initReservesByHelper = async (
const reservesDecimals: string[] = [];
for (let [assetSymbol, { reserveDecimals }] of reservesChunk) {
console.log("initReservesByHelper: assetSymbol:\n%s", assetSymbol);
const assetAddressIndex = Object.keys(tokenAddresses).findIndex(
(value) => value === assetSymbol
);
console.log("initReservesByHelper: assetAddressIndex:\n%s", assetAddressIndex);
const [, tokenAddress] = (Object.entries(tokenAddresses) as [string, string][])[
assetAddressIndex
];
console.log("initReservesByHelper: tokenAddress:\n%s", assetAddressIndex);
const reserveParamIndex = Object.keys(reservesParams).findIndex(
(value) => value === assetSymbol
);
@ -136,7 +131,6 @@ export const initReservesByHelper = async (
}
// Deploy stable and variable deployers and save implementations
// PARAMS HANG IN LOCALHOST console.log("Hanging params:\ntokens:\n %s\n symbols:\n %s \n incentivesController: \n %s ", tokens, symbols, incentivesController);
const tx1 = await waitForTx(
await stableAndVariableDeployer.initDeployment(tokens, symbols, incentivesController)
);
@ -306,13 +300,12 @@ export const getPairsTokenAggregator = (
};
export const configureReservesByHelper = async (
addressProvider: LendingPoolAddressesProvider,
reservesParams: iMultiPoolsAssets<IReserveParams>,
tokenAddresses: { [symbol: string]: tEthereumAddress },
helpers: AaveProtocolDataProvider,
admin: tEthereumAddress
) => {
//const addressProvider = await getLendingPoolAddressesProvider();
const addressProvider = await getLendingPoolAddressesProvider();
const atokenAndRatesDeployer = await getATokensAndRatesHelper();
const tokens: string[] = [];
const symbols: string[] = [];

View File

@ -28,7 +28,6 @@ export const setInitialMarketRatesInRatesOracleByHelper = async (
string,
IMarketRates
][]) {
console.log("Current asset symbol:", assetSymbol);
const assetAddressIndex = Object.keys(assetsAddresses).findIndex(
(value) => value === assetSymbol
);
@ -39,12 +38,6 @@ export const setInitialMarketRatesInRatesOracleByHelper = async (
borrowRates.push(borrowRate);
symbols.push(assetSymbol);
}
console.log("---setInitialMarketRatesInRatesOracleByHelper---");
console.log(assetAddresses);
console.log(symbols);
console.log(borrowRates);
// Set borrow rates per chunks
const ratesChunks = 20;
const chunkedTokens = chunk(assetAddresses, ratesChunks);

View File

@ -28,41 +28,31 @@ export enum AavePools {
export enum eContractid {
Example = 'Example',
LendingPoolAddressesProvider = 'LendingPoolAddressesProvider',
UniswapLendingPoolAddressesProvider = 'UniswapLendingPoolAddressesProvider',
MintableERC20 = 'MintableERC20',
MintableDelegationERC20 = 'MintableDelegationERC20',
LendingPoolAddressesProviderRegistry = 'LendingPoolAddressesProviderRegistry',
LendingPoolParametersProvider = 'LendingPoolParametersProvider',
LendingPoolConfigurator = 'LendingPoolConfigurator',
UniswapLendingPoolConfigurator = 'UniswapLendingPoolConfigurator',
ValidationLogic = 'ValidationLogic',
ReserveLogic = 'ReserveLogic',
GenericLogic = 'GenericLogic',
LendingPool = 'LendingPool',
UniswapLendingPool = 'UniswapLendingPool',
PriceOracle = 'PriceOracle',
UniswapPriceOracle = 'UniswapPriceOracle',
Proxy = 'Proxy',
MockAggregator = 'MockAggregator',
LendingRateOracle = 'LendingRateOracle',
UniswapLendingRateOracle = 'UniswapLendingRateOracle',
AaveOracle = 'AaveOracle',
UniswapAaveOracle = 'UniswapAaveOracle',
DefaultReserveInterestRateStrategy = 'DefaultReserveInterestRateStrategy',
LendingPoolCollateralManager = 'LendingPoolCollateralManager',
UniswapLendingPoolCollateralManager = 'UniswapLendingPoolCollateralManager',
InitializableAdminUpgradeabilityProxy = 'InitializableAdminUpgradeabilityProxy',
MockFlashLoanReceiver = 'MockFlashLoanReceiver',
UniswapMockFlashLoanReceiver = 'UniswapMockFlashLoanReceiver',
WalletBalanceProvider = 'WalletBalanceProvider',
UniswapWalletBalanceProvider = 'UniswapWalletBalanceProvider',
AToken = 'AToken',
MockAToken = 'MockAToken',
DelegationAwareAToken = 'DelegationAwareAToken',
MockStableDebtToken = 'MockStableDebtToken',
MockVariableDebtToken = 'MockVariableDebtToken',
AaveProtocolDataProvider = 'AaveProtocolDataProvider',
UniswapAaveProtocolDataProvider = 'UniswapAaveProtocolDataProvider',
IERC20Detailed = 'IERC20Detailed',
StableDebtToken = 'StableDebtToken',
VariableDebtToken = 'VariableDebtToken',
@ -72,16 +62,12 @@ export enum eContractid {
ATokensAndRatesHelper = 'ATokensAndRatesHelper',
UiPoolDataProvider = 'UiPoolDataProvider',
WETHGateway = 'WETHGateway',
UniswapWETHGateway = 'UniswapWETHGateway',
WETH = 'WETH',
WETHMocked = 'WETHMocked',
SelfdestructTransferMock = 'SelfdestructTransferMock',
LendingPoolImpl = 'LendingPoolImpl',
UniswapLendingPoolImpl = 'UniswapLendingPoolImpl',
LendingPoolConfiguratorImpl = 'LendingPoolConfiguratorImpl',
UniswapLendingPoolConfiguratorImpl = 'UniswapLendingPoolConfiguratorImpl',
LendingPoolCollateralManagerImpl = 'LendingPoolCollateralManagerImpl',
UniswapLendingPoolCollateralManagerImpl = 'UniswapLendingPoolCollateralManagerImpl',
}
/*

View File

@ -1,241 +0,0 @@
// import { Contract } from 'ethers';
// import { DRE } from './misc-utils';
// import {
// tEthereumAddress,
// eContractid,
// tStringTokenSmallUnits,
// AavePools,
// TokenContractId,
// iMultiPoolsAssets,
// IReserveParams,
// PoolConfiguration,
// eEthereumNetwork,
// } from './types';
// import { MintableERC20 } from '../types/MintableERC20';
// import { MockContract } from 'ethereum-waffle';
// import { getReservesConfigByPool } from './configuration';
// import { getFirstSigner } from './contracts-getters';
// import { ZERO_ADDRESS } from './constants';
// import {
// AaveProtocolDataProviderFactory,
// ATokenFactory,
// ATokensAndRatesHelperFactory,
// AaveOracleFactory,
// DefaultReserveInterestRateStrategyFactory,
// DelegationAwareATokenFactory,
// InitializableAdminUpgradeabilityProxyFactory,
// LendingPoolAddressesProviderFactory,
// LendingPoolAddressesProviderRegistryFactory,
// LendingPoolCollateralManagerFactory,
// LendingPoolConfiguratorFactory,
// LendingPoolFactory,
// LendingRateOracleFactory,
// MintableDelegationERC20Factory,
// MintableERC20Factory,
// MockAggregatorFactory,
// MockATokenFactory,
// MockFlashLoanReceiverFactory,
// MockStableDebtTokenFactory,
// MockVariableDebtTokenFactory,
// PriceOracleFactory,
// ReserveLogicFactory,
// SelfdestructTransferFactory,
// StableDebtTokenFactory,
// VariableDebtTokenFactory,
// WalletBalanceProviderFactory,
// WETH9MockedFactory,
// WETHGatewayFactory,
// } from '../types';
// import {
// withSaveAndVerify,
// registerContractInJsonDb,
// linkBytecode,
// insertContractAddressInDb,
// } from './contracts-helpers';
// import { StableAndVariableTokensHelperFactory } from '../types/StableAndVariableTokensHelperFactory';
// import { MintableDelegationERC20 } from '../types/MintableDelegationERC20';
// import { readArtifact as buidlerReadArtifact } from '@nomiclabs/buidler/plugins';
// import { HardhatRuntimeEnvironment } from 'hardhat/types';
// import { LendingPoolLibraryAddresses } from '../types/LendingPoolFactory';
// const readArtifact = async (id: string) => {
// if (DRE.network.name === eEthereumNetwork.buidlerevm) {
// return buidlerReadArtifact(DRE.config.paths.artifacts, id);
// }
// return (DRE as HardhatRuntimeEnvironment).artifacts.readArtifact(id);
// };
// export const deployUniswapLendingPoolAddressesProvider = async (marketId: string, verify?: boolean) =>
// withSaveAndVerify(
// await new LendingPoolAddressesProviderFactory(await getFirstSigner()).deploy(marketId),
// eContractid.UniswapLendingPoolAddressesProvider,
// [marketId],
// verify
// );
// export const deployUniswapLendingPoolConfigurator = async (verify?: boolean) => {
// const lendingPoolConfiguratorImpl = await new LendingPoolConfiguratorFactory(
// await getFirstSigner()
// ).deploy();
// await insertContractAddressInDb(
// eContractid.UniswapLendingPoolConfiguratorImpl,
// lendingPoolConfiguratorImpl.address
// );
// return withSaveAndVerify(
// lendingPoolConfiguratorImpl,
// eContractid.UniswapLendingPoolConfigurator,
// [],
// verify
// );
// };
// export const deployUniswapLendingPool = async (verify?: boolean) => {
// const libraries = await deployAaveLibraries(verify);
// const lendingPoolImpl = await new LendingPoolFactory(libraries, await getFirstSigner()).deploy();
// await insertContractAddressInDb(eContractid.UniswapLendingPoolImpl, lendingPoolImpl.address);
// return withSaveAndVerify(lendingPoolImpl, eContractid.LendingPool, [], verify);
// };
// export const deployReserveLogicLibrary = async (verify?: boolean) =>
// withSaveAndVerify(
// await new ReserveLogicFactory(await getFirstSigner()).deploy(),
// eContractid.ReserveLogic,
// [],
// verify
// );
// export const deployGenericLogic = async (reserveLogic: Contract, verify?: boolean) => {
// const genericLogicArtifact = await readArtifact(eContractid.GenericLogic);
// const linkedGenericLogicByteCode = linkBytecode(genericLogicArtifact, {
// [eContractid.ReserveLogic]: reserveLogic.address,
// });
// const genericLogicFactory = await DRE.ethers.getContractFactory(
// genericLogicArtifact.abi,
// linkedGenericLogicByteCode
// );
// const genericLogic = await (await genericLogicFactory.deploy()).deployed();
// return withSaveAndVerify(genericLogic, eContractid.GenericLogic, [], verify);
// };
// export const deployValidationLogic = async (
// reserveLogic: Contract,
// genericLogic: Contract,
// verify?: boolean
// ) => {
// const validationLogicArtifact = await readArtifact(eContractid.ValidationLogic);
// const linkedValidationLogicByteCode = linkBytecode(validationLogicArtifact, {
// [eContractid.ReserveLogic]: reserveLogic.address,
// [eContractid.GenericLogic]: genericLogic.address,
// });
// const validationLogicFactory = await DRE.ethers.getContractFactory(
// validationLogicArtifact.abi,
// linkedValidationLogicByteCode
// );
// const validationLogic = await (await validationLogicFactory.deploy()).deployed();
// return withSaveAndVerify(validationLogic, eContractid.ValidationLogic, [], verify);
// };
// export const deployAaveLibraries = async (
// verify?: boolean
// ): Promise<LendingPoolLibraryAddresses> => {
// const reserveLogic = await deployReserveLogicLibrary(verify);
// const genericLogic = await deployGenericLogic(reserveLogic, verify);
// const validationLogic = await deployValidationLogic(reserveLogic, genericLogic, verify);
// // Hardcoded solidity placeholders, if any library changes path this will fail.
// // The '__$PLACEHOLDER$__ can be calculated via solidity keccak, but the LendingPoolLibraryAddresses Type seems to
// // require a hardcoded string.
// //
// // how-to:
// // 1. PLACEHOLDER = solidityKeccak256(['string'], `${libPath}:${libName}`).slice(2, 36)
// // 2. LIB_PLACEHOLDER = `__$${PLACEHOLDER}$__`
// // or grab placeholdes from LendingPoolLibraryAddresses at Typechain generation.
// //
// // libPath example: contracts/libraries/logic/GenericLogic.sol
// // libName example: GenericLogic
// return {
// ['__$de8c0cf1a7d7c36c802af9a64fb9d86036$__']: validationLogic.address,
// ['__$22cd43a9dda9ce44e9b92ba393b88fb9ac$__']: reserveLogic.address,
// };
// };
// export const deployUniswapPriceOracle = async (verify?: boolean) =>
// withSaveAndVerify(
// await new PriceOracleFactory(await getFirstSigner()).deploy(),
// eContractid.UniswapPriceOracle,
// [],
// verify
// );
// export const deployUniswapLendingRateOracle = async (verify?: boolean) =>
// withSaveAndVerify(
// await new LendingRateOracleFactory(await getFirstSigner()).deploy(),
// eContractid.UniswapLendingRateOracle,
// [],
// verify
// );
// export const deployUniswapAaveOracle = async (
// args: [tEthereumAddress[], tEthereumAddress[], tEthereumAddress, tEthereumAddress],
// verify?: boolean
// ) =>
// withSaveAndVerify(
// await new AaveOracleFactory(await getFirstSigner()).deploy(...args),
// eContractid.UniswapAaveOracle,
// args,
// verify
// );
// export const deployUniswapLendingPoolCollateralManager = async (verify?: boolean) => {
// const collateralManagerImpl = await new LendingPoolCollateralManagerFactory(
// await getFirstSigner()
// ).deploy();
// await insertContractAddressInDb(
// eContractid.UniswapLendingPoolCollateralManagerImpl,
// collateralManagerImpl.address
// );
// return withSaveAndVerify(
// collateralManagerImpl,
// eContractid.UniswapLendingPoolCollateralManager,
// [],
// verify
// );
// };
// export const deployUniswapMockFlashLoanReceiver = async (
// addressesProvider: tEthereumAddress,
// verify?: boolean
// ) =>
// withSaveAndVerify(
// await new MockFlashLoanReceiverFactory(await getFirstSigner()).deploy(addressesProvider),
// eContractid.UniswapMockFlashLoanReceiver,
// [addressesProvider],
// verify
// );
// export const deployUniswapWalletBalancerProvider = async (verify?: boolean) =>
// withSaveAndVerify(
// await new WalletBalanceProviderFactory(await getFirstSigner()).deploy(),
// eContractid.UniswapWalletBalanceProvider,
// [],
// verify
// );
// export const deployUniswapWETHGateway = async (
// args: [tEthereumAddress, tEthereumAddress],
// verify?: boolean
// ) =>
// withSaveAndVerify(
// await new WETHGatewayFactory(await getFirstSigner()).deploy(...args),
// eContractid.UniswapWETHGateway,
// args,
// verify
// );

View File

@ -18,17 +18,15 @@ task('dev:deploy-lending-pool', 'Deploy lending pool for dev enviroment')
.addFlag('verify', 'Verify contracts at Etherscan')
.setAction(async ({verify}, localBRE) => {
await localBRE.run('set-DRE');
// TEST--- CURRENTLY FAILS BECAUSE ALREADY HAS AN IMPLEMENTATION, SHOULD BE DONE BEFORE UNI MARKET TASK
const addressesProvider = await getLendingPoolAddressesProvider();
const lendingPoolImpl = await deployLendingPool(verify);
// Set lending pool impl to Address Provider
await waitForTx(await addressesProvider.setLendingPoolImpl(lendingPoolImpl.address));
const address = await addressesProvider.getLendingPool();
console.log("AAVE MARKET LENDING POOL:", address);
const lendingPoolProxy = await getLendingPool(address);
await insertContractAddressInDb(eContractid.LendingPool, lendingPoolProxy.address);

View File

@ -24,113 +24,57 @@ task('dev:deploy-oracles', 'Deploy oracles for dev enviroment')
.addFlag('verify', 'Verify contracts at Etherscan')
.addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`)
.setAction(async ({verify, pool}, localBRE) => {
await localBRE.run('set-DRE');
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");
const addressesProvider = await getLendingPoolAddressesProvider();
console.log("Got the addresses provider (check if different both times):", addressesProvider.address);
const admin = await addressesProvider.getPoolAdmin();
console.log("Got the admin");
const fallbackOracle = await deployPriceOracle(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");
const [tokens, aggregators] = getPairsTokenAggregator(
allTokenAddresses,
allAggregatorsAddresses
);
console.log("Got \"pairsToken aggregator\"");
await deployAaveOracle(
[tokens, aggregators, fallbackOracle.address, await getWethAddress(poolConfig)],
verify
);
console.log("Deployed Aave oracle");
await waitForTx(await addressesProvider.setPriceOracle(fallbackOracle.address));
console.log("Set price oracle in addresses provider");
const lendingRateOracle = await deployLendingRateOracle(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);
await setInitialMarketRatesInRatesOracleByHelper(
LendingRateOracleRatesCommon,
allReservesAddresses,
lendingRateOracle,
admin
);
console.log("Task complete");
});
});

View File

@ -53,7 +53,6 @@ task('dev:initialize-lending-pool', 'Initialize lending pool configuration.')
const treasuryAddress = await getTreasuryAddress(poolConfig);
await initReservesByHelper(
addressesProvider,
reservesParams,
protoPoolReservesAddresses,
admin,
@ -62,7 +61,6 @@ task('dev:initialize-lending-pool', 'Initialize lending pool configuration.')
verify
);
await configureReservesByHelper(
addressesProvider,
reservesParams,
protoPoolReservesAddresses,
testHelpers,

View File

@ -1,323 +0,0 @@
// 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]);
// });

View File

@ -81,7 +81,7 @@ task(
// 2. Deploy address provider and set genesis manager
const addressesProvider = await deployLendingPoolAddressesProvider(MarketId, verify);
// TEMPORARILY DISABLING SEC. 3 FOR KOVAN DEPLOYMENT
// TEMPORARILY DISABLING SEC. 3 FOR GOVERNANCE USE
// 3. Set the provider at the Registry
// await waitForTx(

View File

@ -1,5 +1,5 @@
import { task } from 'hardhat/config';
import { getParamPerNetwork, getParamPerPool } from '../../helpers/contracts-helpers';
import { getParamPerNetwork } from '../../helpers/contracts-helpers';
import { deployAaveOracle, deployLendingRateOracle } from '../../helpers/contracts-deployments';
import { setInitialMarketRatesInRatesOracleByHelper } from '../../helpers/oracles-helpers';
import { ICommonConfiguration, eEthereumNetwork, SymbolMap } from '../../helpers/types';
@ -32,8 +32,6 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
FallbackOracle,
ChainlinkAggregator,
} = poolConfig as ICommonConfiguration;
//console.log("------------------------------------------------ReserveAssets:\n", ReserveAssets);
const lendingRateOracles = getLendingRateOracles(poolConfig);
const addressesProvider = await getLendingPoolAddressesProvider();
const admin = await getGenesisPoolAdmin(poolConfig);
@ -42,14 +40,13 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
const fallbackOracleAddress = await getParamPerNetwork(FallbackOracle, network);
const reserveAssets = await getParamPerNetwork(ReserveAssets, network);
const chainlinkAggregators = await getParamPerNetwork(ChainlinkAggregator, network);
//console.log("------------------------------------------------reserveAssets:\n", reserveAssets);
const tokensToWatch: SymbolMap<string> = {
...reserveAssets,
USD: UsdAddress,
};
const [tokens, aggregators] = getPairsTokenAggregator(tokensToWatch, chainlinkAggregators);
console.log("tokens:\n %s \n aggregators: \n %s", tokens, aggregators);
const aaveOracle = notFalsyOrZeroAddress(aaveOracleAddress)
? await getAaveOracle(aaveOracleAddress)
: await deployAaveOracle(

View File

@ -36,7 +36,6 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.')
const testHelpers = await getAaveProtocolDataProvider();
console.log("reserveAssets:\n", reserveAssets);
const admin = await addressesProvider.getPoolAdmin();
if (!reserveAssets) {
throw 'Reserve assets is undefined. Check ReserveAssets configuration at config directory';
@ -44,8 +43,8 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.')
const treasuryAddress = await getTreasuryAddress(poolConfig);
await initReservesByHelper(addressesProvider, ReservesConfig, reserveAssets, admin, treasuryAddress, ZERO_ADDRESS, verify);
await configureReservesByHelper(addressesProvider, ReservesConfig, reserveAssets, testHelpers, admin);
await initReservesByHelper(ReservesConfig, reserveAssets, admin, treasuryAddress, ZERO_ADDRESS, verify);
await configureReservesByHelper(ReservesConfig, reserveAssets, testHelpers, admin);
const collateralManager = await deployLendingPoolCollateralManager(verify);
await waitForTx(

View File

@ -20,24 +20,18 @@ task('aave:dev', 'Deploy development enviroment')
console.log('1. Deploy mock tokens');
await localBRE.run('dev:deploy-mock-tokens', {verify});
console.log('2. Deploy Aave market address provider');
console.log('2. Deploy address provider');
await localBRE.run('dev:deploy-address-provider', {verify});
console.log('3. Deploy Aave lending pool');
console.log('3. Deploy lending pool');
await localBRE.run('dev:deploy-lending-pool', {verify});
console.log('4. Deploy oracles');
await localBRE.run('dev:deploy-oracles', {verify, pool: POOL_NAME});
console.log('6. Deploy Uniswap market oracles');
await localBRE.run('dev:deploy-oracles', {verify, pool: "Uniswap"});
console.log('5. Initialize lending pool');
await localBRE.run('dev:initialize-lending-pool', {verify, pool: POOL_NAME});
// console.log('6. Deploy Uniswap market');
// await localBRE.run('dev:deploy-uniswap-market', {verify});
console.log('\nFinished migration');
printContracts();
});

View File

@ -97,7 +97,6 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
const addressList = await Promise.all(
(await DRE.ethers.getSigners()).map((signer) => signer.getAddress())
);
console.log(addressList);
await waitForTx(await addressesProvider.setEmergencyAdmin(addressList[2]));
@ -216,9 +215,8 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
const treasuryAddress = await getTreasuryAddress(config);
await initReservesByHelper(addressesProvider, reservesParams, allReservesAddresses, admin, treasuryAddress, ZERO_ADDRESS, false);
await initReservesByHelper(reservesParams, allReservesAddresses, admin, treasuryAddress, ZERO_ADDRESS, false);
await configureReservesByHelper(
addressesProvider,
reservesParams,
allReservesAddresses,
testHelpers,

153
test/test
View File

@ -1,153 +0,0 @@
N# Contracts: 152
MintableERC20: 0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d
LendingPoolAddressesProvider: 0x0459c841b02Aee8730730C737582c53B20a27288
LendingPoolAddressesProviderRegistry: 0x22474D350EC2dA53D717E30b96e9a2B7628Ede5b
ReserveLogic: 0x7fAeC7791277Ff512c41CA903c177B2Ed952dDAc
GenericLogic: 0x33958cC3535Fc328369EAC2B2Bebd120D67C7fa1
ValidationLogic: 0x2cBbbBE1B75Ad7848F0844215816F551f429c64f
LendingPoolImpl: 0x8456161947DFc1fC159A0B26c025cD2b4bba0c3e
LendingPool: 0xbAc762e2000b6815268587b081Fd17aC25519aD5
LendingPoolConfiguratorImpl: 0x5F6CaC05CDF893f029b29F44d368eAeD40e573B6
LendingPoolConfigurator: 0x2C4603396dE2F08642354A3A102760827FfFe113
StableAndVariableTokensHelper: 0xadcD6f616fCEEbEd731B2B3F01B8bd51A08b5CbD
ATokensAndRatesHelper: 0x603A373A1571783bD82b708C20a5A4b019BAB78F
DAI: 0x7c2C195CD6D34B8F845992d380aADB2730bB9C6F
AAVE: 0x8858eeB3DfffA017D4BCE9801D340D36Cf895CCf
TUSD: 0x0078371BDeDE8aAc7DeBfFf451B74c5EDB385Af7
BAT: 0xf4e77E5Da47AC3125140c470c71cBca77B5c638c
WETHMocked: 0x09d728F76D543DB1925f7d1Fd8823e4e82700F99
WETH: 0xf784709d2317D872237C4bC22f867d1BAe2913AB
USDC: 0x3619DbE27d7c1e7E91aA738697Ae7Bc5FC3eACA5
USDT: 0x038B86d9d8FAFdd0a02ebd1A476432877b0107C8
SUSD: 0x1A1FEe7EeD918BD762173e4dc5EfDB8a78C924A8
ZRX: 0x500D1d6A4c7D8Ae28240b47c8FCde034D827fD5e
MKR: 0xc4905364b78a742ccce7B890A89514061E47068D
WBTC: 0xD6C850aeBFDC46D7F4c207e445cC0d6B0919BDBe
LINK: 0x8B5B7a6055E54a36fF574bbE40cf2eA68d5554b3
KNC: 0xEcc0a6dbC0bb4D51E4F84A315a9e5B0438cAD4f0
MANA: 0x20Ce94F404343aD2752A2D01b43fa407db9E0D00
REN: 0x1d80315fac6aBd3EfeEbE97dEc44461ba7556160
SNX: 0x2D8553F9ddA85A9B3259F6Bf26911364B85556F5
BUSD: 0x52d3b94181f8654db2530b0fEe1B19173f519C52
USD: 0xd15468525c35BDBC1eD8F2e09A00F8a173437f2f
YFI: 0x7e35Eaf7e8FBd7887ad538D4A38Df5BbD073814a
UNI: 0x5bcb88A0d20426e451332eE6C4324b0e663c50E0
ENJ: 0x3521eF8AaB0323004A6dD8b03CE890F4Ea3A13f5
WETHDAI: 0x53369fd4680FfE3DfF39Fc6DDa9CfbfD43daeA2E
WETHWBTC: 0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d
PriceOracle: 0x06bA8d8af0dF898D0712DffFb0f862cC51AF45c2
MockAggregator: 0xA0AB1cB92A4AF81f84dCd258155B5c25D247b54E
AaveOracle: 0xD662fb7FDC7526C79AA4417d2A4415416e057ec4
LendingRateOracle: 0xEC1C93A9f6a9e18E97784c76aC52053587FcDB89
AaveProtocolDataProvider: 0xf45C720549136d5E2d6a5A2F12573A36E36C3411
stableDebtAAVE: 0xe3C388495669b8624753a275675AEf9eCc8Eaaa4
variableDebtAAVE: 0xbdA8106CA657E2bfe1a125f0D0DDE47bA85E92c8
stableDebtBAT: 0xa8c48Fad16b34bc9BC1203f1784D36CDf61dfD9c
variableDebtBAT: 0x5A7dE46c8176AF8550Df2fEF14464c2cB3B0EE5e
aAAVE: 0x1433d6d0794262c09f19E64177c0dD69A0e4D648
strategyAAVE: 0x329e6747250B326E5E8029154DFFfE93F4f27016
aBAT: 0x1A2e1C9d403E9DD6Da5022a14590ec875fBb75ba
strategyBAT: 0x12d5da143C6f7d3322C9b32cdF3a6Cae390A5293
stableDebtBUSD: 0x453697f5d829556a0373F2b835cF94242B078C9e
variableDebtBUSD: 0x03D049FCA4dE1DA80F9DDF4bf0008115c74C0Da2
stableDebtDAI: 0x30dDD022BC4df9BB0e6ce94A5535F2137dEA3755
variableDebtDAI: 0xbfC8B61A3e6eD07C092a74603CeCAe91254745D6
aBUSD: 0x1BC353ae7758eff98129928631a2D17d69BAb5FA
strategyBUSD: 0x270176D7DB4ec8d2a16b90C78B424AAdbBcFE298
aDAI: 0x6A61442dBCF10E7168FfcD850CDf7c91Cad3E666
strategyDAI: 0xA9DD0c06755734f4327F405cd20897D79FaCcFAE
stableDebtENJ: 0x6C0A2d54B37d8Cd321a25328753077D43A387303
variableDebtENJ: 0x1372E5e41E22BaB997aD453469F0DFB9569dB121
stableDebtKNC: 0x9bF0208c881906fAC92112320425b403e08Fe44b
variableDebtKNC: 0x6028834D13a4eec68b289E125222e5e5e86a5503
aENJ: 0x2108E7A4B53516883b60a40ae02600697c8065A2
strategyENJ: 0x64980e3e653Fe43813A41b9C5AcDB394d7A7320F
aKNC: 0x0f22acabf1Aa485565693B671Fc68B0583f8FEB0
strategyKNC: 0xC45DA1E746911C76E51CA28b8d8A876735797E3C
stableDebtLINK: 0x3E650a21eAACE6314E98569E8A37FDA1d4cfBE28
variableDebtLINK: 0xA7430bFB0f7332B1456dCB770D593f1D35bc2B11
stableDebtMANA: 0x8DB6b6aE3c096E84B9818545974d1577E37Bcb97
variableDebtMANA: 0x945ea0cf8986724ec075bE09C503c822fF8Ebb75
aLINK: 0x778c890b128CE3936b744F0c8d7290d1F161D888
strategyLINK: 0xCD8C6429A2975Db9466fCEFf36020166930a11Cb
aMANA: 0x5fd9aE04361262868d5C33cA1545580fC509b34c
strategyMANA: 0x024CC36954EfDbB9CFdda80a5A8c05Bd8DdF0fc8
stableDebtMKR: 0xd1bD598200b53FC352483dBe36d9d72C085011A4
variableDebtMKR: 0x49b81af588031Ecc93E20355E9ADC2d720348347
stableDebtREN: 0x7367fBfEA2643eCbc0816Cc87B91E82B3Eb307aF
variableDebtREN: 0xAD75a04e5B815558a7E6C84c030e857671875934
aMKR: 0xbEf21bFD5164eA882d74df73BB0862226C3063E9
strategyMKR: 0x27a99bef2aF3200c6B7a831C61eF692341C7acEe
aREN: 0xe807dCAB5d5e8c5701c089758aAd34869a4c92Ea
strategyREN: 0xD933d804Dcb597Ac8020623ac32CcE3d4cB81b2a
stableDebtSNX: 0x3F33fb4D89eC6Bd516dCa915A3d85F0374d099d5
variableDebtSNX: 0xD27B891432c9036E9dC95bc4fE9b8FCb61FBa05e
stableDebtSUSD: 0xFe3C98C3daE2F7562f43D1bBD2021FE127Afec38
variableDebtSUSD: 0x53070063F0fB13C51C0e2186C0130f29aBe5336b
aSNX: 0x96a8C36C19D2A96642F2738b8E0481f159488EaD
strategySNX: 0xa5eB1859FA97E38C0a4257Af0be9085b3B4B7996
aSUSD: 0x948Bd60Cba5eB8b7A478aE673145FeA13e2Edbe8
strategySUSD: 0x7C769501542E694a5Dea6B1FCAf52B9270EADcaf
stableDebtTUSD: 0x6c2E76485dFbaFe2FCC6874e531D71ee82db06f6
variableDebtTUSD: 0x3FA01122234D545d0247bdDbf4865925A53f6551
stableDebtUSDC: 0xDD7a535Fb8773EBc4Ae653eCCb22F6561F434a9E
variableDebtUSDC: 0x9d1718D33aE17e54D2aE329b6B51511d4371Bf4a
aTUSD: 0x802881960dCD9457F63c4dbe1E9D081b32b011b9
strategyTUSD: 0xC1f335a47c45d9F15976A1e11Eb3826590AD2a56
aUSDC: 0x1CC642F9b88f755C1E7fbB9Acb4A990faddBF608
strategyUSDC: 0x4272DE39F41085769562b2c17Fd5369097E41492
stableDebtUSDT: 0x372915a5Bed2B0a5ecEdc96e7133A24aDDFA4Bc4
variableDebtUSDT: 0x78123523ba15F9847D22a6d3f06bBed70E431114
stableDebtWBTC: 0x6a3aB96987B70E29bc4203f78D09D0aCB85F219D
variableDebtWBTC: 0xcDD6c3f0dA05129f08DB52380C48A9cf698A8CCA
aUSDT: 0xe88141a1642eD64AE739cd2C896009Be73a43486
strategyUSDT: 0x881036687070243FC119014c41cdd5e3c22f3E50
aWBTC: 0xE74801a99A51B89dE670132De7d9c18CC2BBE54A
strategyWBTC: 0x55DFA1D5af234B35D457C13B8a58899848A438F8
stableDebtWETH: 0xD1220D8A82a26C1396cccb5Ee79d3A42D7D3E3da
variableDebtWETH: 0x4f87eBaac31C3d13C376d52A0FABf5f022660C4c
stableDebtYFI: 0xF2dB8bc0dCd0A6C6F25B7f6ACfB9E026ae0e7494
variableDebtYFI: 0xce3529624a1f3Ea5DBC1AB130eBeA8211E3b602F
aWETH: 0x7e4b842FFc0598C1f5D8b8A1e2C7AD29E9F233C7
strategyWETH: 0x52Ac4c1Dbc0263b2FD6AD065B27576d0E7d925B9
aYFI: 0x895D60248de2edc34C99f1B45d8Dd1731656Df51
strategyYFI: 0x3cE6D0B4b6dc27C725fA94903Fb33d73bE75e9D7
stableDebtZRX: 0xF78Fbf3b21aF8Bce2efA3614E507735573c578CC
variableDebtZRX: 0x9Ae60ba71A28a1d738a2FDFC1D0439B33f3f0B1F
aZRX: 0x80aB7B8EfeA24C2D2Ca22315BFa99E03f539C568
strategyZRX: 0x4D2271CFa5587643B8f5919f3EbF64de7aaa9d5c
DelegationAwareAToken: 0xBAdDA897176B5A94FD4A0eCb59678DDA29181963
StableDebtToken: 0x64Ea58f488aD445235A0afE9256B066572c6Abc8
VariableDebtToken: 0x8D0206fEBEB380486729b64bB4cfEDC5b354a6D6
DefaultReserveInterestRateStrategy: 0x3c5408De7435Dfa3eB2aF2Edf5E39385f68F69b2
LendingPoolCollateralManagerImpl: 0x6602fca48E95F5068506963E3A8930131108048A
LendingPoolCollateralManager: 0x6602fca48E95F5068506963E3A8930131108048A
MockFlashLoanReceiver: 0x1a66D6103F8BBf9204E1618F095a80b3E4817C95
WalletBalanceProvider: 0x0EBCa695959e5f138Af772FAa44ce1A9C7aEd921
WETHGateway: 0x8BFFF31B1757da579Bb5B118489568526F7fb6D4
MintableDelegationERC20: 0x8BFFF31B1757da579Bb5B118489568526F7fb6D4
MockAToken: 0x8BFFF31B1757da579Bb5B118489568526F7fb6D4
MockStableDebtToken: 0x0459c841b02Aee8730730C737582c53B20a27288
MockVariableDebtToken: 0x2530ce07D254eA185E8e0bCC37a39e2FbA3bE548
SelfdestructTransferMock: 0x0459c841b02Aee8730730C737582c53B20a27288
UniswapLendingPool: 0xEC42F4C314dE9492cb3Ef7a860270eCDFE0F851a
UniswapLendingPoolConfigurator: 0x672A68Ff1364E87D8f88ad86410449C117fC97A6
UniswapLendingPoolAddressesProvider: 0x18b9306737eaf6E8FC8e737F488a1AE077b18053
UniswapLendingPoolImpl: 0xbAc762e2000b6815268587b081Fd17aC25519aD5
UniswapLendingPoolConfiguratorImpl: 0xAa7BC1924711B77A0F3Aaebdd550BfeDDDbaf3cd
UniswapPriceOracle: 0xFf130817Aa9863B3D809A2A11617c05646245d80
UniswapAaveOracle: 0xE91bBe8ee03560E3dda2786f95335F5399813Ca0
UniswapLendingRateOracle: 0x4977FC58783ceBCC310311C800B786EcAf45F98f
stableDebtWETHDAI: 0x84fF0147dDD2acA72407CfEB7EabCd2b7E49d949
variableDebtWETHDAI: 0x35A1E1Be236899ab7B63a81127ab522d76A26B3e
aWETHDAI: 0x591D75Ea272E9F22fC4B20Fc4C4E03d8c126b1AB
strategyWETHDAI: 0xF4040B68C37eE6F1324470f48D05cCEC50819b2E
stableDebtWETHWBTC: 0x5a41efF010872DB9a2CA0b47b8b757f37dc35A7f
variableDebtWETHWBTC: 0xee0382a3E9ADeAaA670c425D51ad5F8022c6d9F8
aWETHWBTC: 0x4dA415c7aDaC37c3d710B5D24b62c6f4a5aF6e5F
strategyWETHWBTC: 0xf0c3F1cd72eA0a1F4e0e98B2e0702fA63a9F9faF
UniswapLendingPoolCollateralManagerImpl: 0x9D2F6Ec881323E78f27d58b996b81EaBCEF8eC58
UniswapLendingPoolCollateralManager: 0x9D2F6Ec881323E78f27d58b996b81EaBCEF8eC58
UniswapMockFlashLoanReceiver: 0xad17D0b25259128C968dbCa61CB5864C78004DBE
UniswapWalletBalanceProvider: 0x6Ac05758229c725A6d14F0ae7088985D9B251Fb2
UniswapWETHGateway: 0xb2B548BE73010C188C083c510d255Aed74843b05