aave-protocol-v2/tasks/full/1_address_provider_registry.ts

48 lines
2.1 KiB
TypeScript
Raw Normal View History

2020-08-26 10:38:52 +00:00
import {task} from '@nomiclabs/buidler/config';
import {getParamPerNetwork} from '../../helpers/contracts-helpers';
2020-08-26 10:38:52 +00:00
import {
deployLendingPoolAddressesProvider,
deployLendingPoolAddressesProviderRegistry,
} from '../../helpers/contracts-deployments';
2020-08-26 10:38:52 +00:00
import {waitForTx} from '../../helpers/misc-utils';
2020-09-24 15:48:29 +00:00
import {ConfigNames, loadPoolConfig, getGenesisAaveAdmin} from '../../helpers/configuration';
2020-08-26 10:38:52 +00:00
import {eEthereumNetwork} from '../../helpers/types';
import {getLendingPoolAddressesProviderRegistry} from '../../helpers/contracts-getters';
2020-08-26 10:38:52 +00:00
task(
'full:deploy-address-provider',
'Deploy address provider, registry and fee provider for dev enviroment'
)
2020-09-24 15:48:29 +00:00
.addFlag('verify', 'Verify contracts at Etherscan')
2020-08-26 10:38:52 +00:00
.addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`)
.setAction(async ({verify, pool}, localBRE) => {
await localBRE.run('set-bre');
const network = <eEthereumNetwork>localBRE.network.name;
const poolConfig = loadPoolConfig(pool);
const {ProviderId} = poolConfig;
const providerRegistryAddress = getParamPerNetwork(poolConfig.ProviderRegistry, network);
// Deploy address provider and set genesis manager
const addressesProvider = await deployLendingPoolAddressesProvider(verify);
2020-09-24 15:48:29 +00:00
await waitForTx(await addressesProvider.setAaveAdmin(await getGenesisAaveAdmin(poolConfig)));
2020-08-26 10:38:52 +00:00
// If no provider registry is set, deploy lending pool address provider registry and register the address provider
const addressesProviderRegistry = !providerRegistryAddress
? await deployLendingPoolAddressesProviderRegistry(verify)
: await getLendingPoolAddressesProviderRegistry(providerRegistryAddress);
await waitForTx(
await addressesProviderRegistry.registerAddressesProvider(
addressesProvider.address,
ProviderId
)
);
//register the proxy price provider on the addressesProvider
const proxyProvider = getParamPerNetwork(poolConfig.ProxyPriceProvider, network);
if (proxyProvider && proxyProvider !== '') {
await waitForTx(await addressesProvider.setPriceOracle(proxyProvider));
}
2020-08-26 10:38:52 +00:00
});