fix: fixed logic of address provider registration

This commit is contained in:
David Racero 2021-05-10 10:16:13 +02:00
parent 607d3c9a24
commit e41a18c33a
6 changed files with 53 additions and 14 deletions

View File

@ -40,11 +40,16 @@
"test:main:check-list": "MAINNET_FORK=true TS_NODE_TRANSPILE_ONLY=1 hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/mainnet/check-list.spec.ts", "test:main:check-list": "MAINNET_FORK=true TS_NODE_TRANSPILE_ONLY=1 hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/mainnet/check-list.spec.ts",
"dev:coverage": "buidler compile --force && buidler coverage --network coverage", "dev:coverage": "buidler compile --force && buidler coverage --network coverage",
"aave:evm:dev:migration": "npm run compile && hardhat aave:dev", "aave:evm:dev:migration": "npm run compile && hardhat aave:dev",
"aave:docker:full:migration": "npm run compile && npm run hardhat:docker -- aave:mainnet", "aave:docker:full:migration": "npm run compile && npm run hardhat:docker -- aave:mainnet --skip-registry",
"aave:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- aave:mainnet", "aave:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- aave:mainnet --skip-registry",
"matic:mumbai:full:migration": "npm run compile && npm run hardhat:mumbai matic:mainnet", "matic:mumbai:full:migration": "npm run compile && npm run hardhat:mumbai matic:mainnet --skip-registry",
"matic:matic:full:migration": "npm run compile && npm run hardhat:matic matic:mainnet", "matic:matic:full:migration": "npm run compile && npm run hardhat:matic matic:mainnet --skip-registry",
"amm:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- amm:mainnet", "amm:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- amm:mainnet --skip-registry",
"aave:docker:full:migration:add-registry": "npm run compile && npm run hardhat:docker -- aave:mainnet",
"aave:kovan:full:migration:add-registry": "npm run compile && npm run hardhat:kovan -- aave:mainnet",
"matic:mumbai:full:migration:add-registry": "npm run compile && npm run hardhat:mumbai matic:mainnet",
"matic:matic:full:migration:add-registry": "npm run compile && npm run hardhat:matic matic:mainnet",
"amm:kovan:full:migration:add-registry": "npm run compile && npm run hardhat:kovan -- amm:mainnet",
"aave:docker:add-market-to-registry-from-config": "npm run compile && npm run hardhat:docker -- add-market-to-registry --pool Aave", "aave:docker:add-market-to-registry-from-config": "npm run compile && npm run hardhat:docker -- add-market-to-registry --pool Aave",
"aave:kovan:add-market-to-registry-from-config": "npm run compile && npm run hardhat:kovan -- add-market-to-registry --pool Aave", "aave:kovan:add-market-to-registry-from-config": "npm run compile && npm run hardhat:kovan -- add-market-to-registry --pool Aave",
"matic:mumbai:add-market-to-registry-from-config": "npm run compile && npm run hardhat:mumbai add-market-to-registry --pool Matic", "matic:mumbai:add-market-to-registry-from-config": "npm run compile && npm run hardhat:mumbai add-market-to-registry --pool Matic",

View File

@ -11,6 +11,7 @@ import {
import { isAddress, parseEther } from 'ethers/lib/utils'; import { isAddress, parseEther } from 'ethers/lib/utils';
import { isZeroAddress } from 'ethereumjs-util'; import { isZeroAddress } from 'ethereumjs-util';
import { Signer } from 'ethers'; import { Signer } from 'ethers';
import { exit } from 'process';
task('add-market-to-registry', 'Adds address provider to registry') task('add-market-to-registry', 'Adds address provider to registry')
.addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`)
@ -26,6 +27,10 @@ task('add-market-to-registry', 'Adds address provider to registry')
let providerRegistryAddress = getParamPerNetwork(poolConfig.ProviderRegistry, network); let providerRegistryAddress = getParamPerNetwork(poolConfig.ProviderRegistry, network);
let providerRegistryOwner = getParamPerNetwork(poolConfig.ProviderRegistryOwner, network); let providerRegistryOwner = getParamPerNetwork(poolConfig.ProviderRegistryOwner, network);
const currentSignerAddress = await (
await (await getFirstSigner()).getAddress()
).toLocaleLowerCase();
let deployed = false;
if ( if (
deployRegistry || deployRegistry ||
@ -39,6 +44,7 @@ task('add-market-to-registry', 'Adds address provider to registry')
providerRegistryAddress = (await getLendingPoolAddressesProviderRegistry()).address; providerRegistryAddress = (await getLendingPoolAddressesProviderRegistry()).address;
providerRegistryOwner = await (await getFirstSigner()).getAddress(); providerRegistryOwner = await (await getFirstSigner()).getAddress();
deployed = true;
} }
if ( if (
@ -58,6 +64,15 @@ task('add-market-to-registry', 'Adds address provider to registry')
signer = DRE.ethers.provider.getSigner(providerRegistryOwner); signer = DRE.ethers.provider.getSigner(providerRegistryOwner);
const firstAccount = await getFirstSigner(); const firstAccount = await getFirstSigner();
await firstAccount.sendTransaction({ value: parseEther('10'), to: providerRegistryOwner }); await firstAccount.sendTransaction({ value: parseEther('10'), to: providerRegistryOwner });
}
if (
!deployed &&
providerRegistryOwner.toLocaleLowerCase() !== currentSignerAddress.toLocaleLowerCase()
) {
console.error('ProviderRegistryOwner config does not match current signer:');
console.error('Expected:', providerRegistryOwner);
console.error('Current:', currentSignerAddress);
exit(2);
} else { } else {
signer = DRE.ethers.provider.getSigner(providerRegistryOwner); signer = DRE.ethers.provider.getSigner(providerRegistryOwner);
} }

View File

@ -1,12 +1,15 @@
import { task } from 'hardhat/config'; import { task } from 'hardhat/config';
import { deployLendingPoolAddressesProvider } from '../../helpers/contracts-deployments'; import { deployLendingPoolAddressesProvider } from '../../helpers/contracts-deployments';
import { waitForTx } from '../../helpers/misc-utils'; import { notFalsyOrZeroAddress, waitForTx } from '../../helpers/misc-utils';
import { import {
ConfigNames, ConfigNames,
loadPoolConfig, loadPoolConfig,
getGenesisPoolAdmin, getGenesisPoolAdmin,
getEmergencyAdmin, getEmergencyAdmin,
} from '../../helpers/configuration'; } from '../../helpers/configuration';
import { getParamPerNetwork } from '../../helpers/contracts-helpers';
import { eNetwork } from '../../helpers/types';
import { isZeroAddress } from 'ethereumjs-util';
//import BigNumber from 'bignumber.js'; //import BigNumber from 'bignumber.js';
task( task(
@ -15,7 +18,8 @@ task(
) )
.addFlag('verify', 'Verify contracts at Etherscan') .addFlag('verify', 'Verify contracts at Etherscan')
.addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`)
.setAction(async ({ verify, pool }, DRE) => { .addFlag('skipRegistry')
.setAction(async ({ verify, pool, skipRegistry }, DRE) => {
await DRE.run('set-DRE'); await DRE.run('set-DRE');
const poolConfig = loadPoolConfig(pool); const poolConfig = loadPoolConfig(pool);
const { MarketId } = poolConfig; const { MarketId } = poolConfig;
@ -23,8 +27,20 @@ task(
// 1. Deploy address provider and set genesis manager // 1. Deploy address provider and set genesis manager
const addressesProvider = await deployLendingPoolAddressesProvider(MarketId, verify); const addressesProvider = await deployLendingPoolAddressesProvider(MarketId, verify);
// 2. Set pool admins // 2. Add to registry or setup a new one
if (!skipRegistry) {
const providerRegistryAddress = getParamPerNetwork(
poolConfig.ProviderRegistry,
<eNetwork>DRE.network.name
);
await DRE.run('add-market-to-registry', {
pool,
addressesProvider: addressesProvider.address,
deployRegistry: !notFalsyOrZeroAddress(providerRegistryAddress),
});
}
// 3. Set pool admins
await waitForTx(await addressesProvider.setPoolAdmin(await getGenesisPoolAdmin(poolConfig))); await waitForTx(await addressesProvider.setPoolAdmin(await getGenesisPoolAdmin(poolConfig)));
await waitForTx(await addressesProvider.setEmergencyAdmin(await getEmergencyAdmin(poolConfig))); await waitForTx(await addressesProvider.setEmergencyAdmin(await getEmergencyAdmin(poolConfig)));

View File

@ -6,7 +6,8 @@ import { usingTenderly } from '../../helpers/tenderly-utils';
task('aave:mainnet', 'Deploy development enviroment') task('aave:mainnet', 'Deploy development enviroment')
.addFlag('verify', 'Verify contracts at Etherscan') .addFlag('verify', 'Verify contracts at Etherscan')
.setAction(async ({ verify }, DRE) => { .addFlag('skipRegistry', 'Skip addresses provider registration at Addresses Provider Registry')
.setAction(async ({ verify, skipRegistry }, DRE) => {
const POOL_NAME = ConfigNames.Aave; const POOL_NAME = ConfigNames.Aave;
await DRE.run('set-DRE'); await DRE.run('set-DRE');
@ -18,7 +19,7 @@ task('aave:mainnet', 'Deploy development enviroment')
console.log('Migration started\n'); console.log('Migration started\n');
console.log('1. Deploy address provider'); console.log('1. Deploy address provider');
await DRE.run('full:deploy-address-provider', { pool: POOL_NAME }); await DRE.run('full:deploy-address-provider', { pool: POOL_NAME, skipRegistry });
console.log('2. Deploy lending pool'); console.log('2. Deploy lending pool');
await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME }); await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME });

View File

@ -6,7 +6,8 @@ import { usingTenderly } from '../../helpers/tenderly-utils';
task('amm:mainnet', 'Deploy development enviroment') task('amm:mainnet', 'Deploy development enviroment')
.addFlag('verify', 'Verify contracts at Etherscan') .addFlag('verify', 'Verify contracts at Etherscan')
.setAction(async ({ verify }, DRE) => { .addFlag('skipRegistry', 'Skip addresses provider registration at Addresses Provider Registry')
.setAction(async ({ verify, skipRegistry }, DRE) => {
const POOL_NAME = ConfigNames.Amm; const POOL_NAME = ConfigNames.Amm;
await DRE.run('set-DRE'); await DRE.run('set-DRE');
@ -18,7 +19,7 @@ task('amm:mainnet', 'Deploy development enviroment')
console.log('Migration started\n'); console.log('Migration started\n');
console.log('1. Deploy address provider'); console.log('1. Deploy address provider');
await DRE.run('full:deploy-address-provider', { pool: POOL_NAME }); await DRE.run('full:deploy-address-provider', { pool: POOL_NAME, skipRegistry });
console.log('2. Deploy lending pool'); console.log('2. Deploy lending pool');
await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME }); await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME });

View File

@ -6,7 +6,8 @@ import { usingTenderly } from '../../helpers/tenderly-utils';
task('matic:mainnet', 'Deploy development enviroment') task('matic:mainnet', 'Deploy development enviroment')
.addFlag('verify', 'Verify contracts at Etherscan') .addFlag('verify', 'Verify contracts at Etherscan')
.setAction(async ({ verify }, DRE) => { .addFlag('skipRegistry', 'Skip addresses provider registration at Addresses Provider Registry')
.setAction(async ({ verify, skipRegistry }, DRE) => {
const POOL_NAME = ConfigNames.Matic; const POOL_NAME = ConfigNames.Matic;
await DRE.run('set-DRE'); await DRE.run('set-DRE');
@ -18,7 +19,7 @@ task('matic:mainnet', 'Deploy development enviroment')
console.log('Migration started\n'); console.log('Migration started\n');
console.log('1. Deploy address provider'); console.log('1. Deploy address provider');
await DRE.run('full:deploy-address-provider', { pool: POOL_NAME }); await DRE.run('full:deploy-address-provider', { pool: POOL_NAME, skipRegistry });
console.log('2. Deploy lending pool'); console.log('2. Deploy lending pool');
await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME }); await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME });