mirror of
				https://github.com/Instadapp/aave-protocol-v2.git
				synced 2024-07-29 21:47:30 +00:00 
			
		
		
		
	Fixes task related with LendingOracle. Add token verification task.
This commit is contained in:
		
							parent
							
								
									1be6b5fbc9
								
							
						
					
					
						commit
						cf32c1f84f
					
				| 
						 | 
				
			
			@ -24,7 +24,7 @@ const MNEMONIC = process.env.MNEMONIC || '';
 | 
			
		|||
 | 
			
		||||
// Prevent to load scripts before compilation and typechain
 | 
			
		||||
if (!SKIP_LOAD) {
 | 
			
		||||
  ['misc', 'migrations', 'dev', 'full'].forEach((folder) => {
 | 
			
		||||
  ['misc', 'migrations', 'dev', 'full', 'verifications'].forEach((folder) => {
 | 
			
		||||
    const tasksPath = path.join(__dirname, 'tasks', folder);
 | 
			
		||||
    fs.readdirSync(tasksPath)
 | 
			
		||||
      .filter((pth) => pth.includes('.ts'))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,9 +54,12 @@
 | 
			
		|||
    "print-contracts:main": "npm run hardhat:main -- print-contracts",
 | 
			
		||||
    "print-contracts:ropsten": "npm run hardhat:main -- print-contracts",
 | 
			
		||||
    "dev:deployUIProvider": "npm run hardhat:kovan deploy-UiPoolDataProvider",
 | 
			
		||||
    "kovan:verify": "npm run hardhat:kovan full:verify -- --all --verify --pool Aave",
 | 
			
		||||
    "ropsten:verify": "npm run hardhat:ropsten full:verify -- --all --verify --pool Aave",
 | 
			
		||||
    "mainnet:verify": "npm run hardhat:main full:verify -- --all --verify --pool Aave"
 | 
			
		||||
    "kovan:verify": "npm run hardhat:kovan verify:general -- --all --pool Aave",
 | 
			
		||||
    "ropsten:verify": "npm run hardhat:ropsten verify:general -- --all --pool Aave",
 | 
			
		||||
    "mainnet:verify": "npm run hardhat:main verify:general -- --all --pool Aave",
 | 
			
		||||
    "kovan:verify:tokens": "npm run hardhat:kovan verify:tokens -- --pool Aave",
 | 
			
		||||
    "ropsten:verify:tokens": "npm run hardhat:ropsten verify:tokens -- --pool Aave",
 | 
			
		||||
    "mainnet:verify:tokens": "npm run hardhat:main verify:tokens -- --pool Aave"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@nomiclabs/buidler": "^1.4.7",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,7 +58,6 @@ task(
 | 
			
		|||
    const lendingRateOracle = getParamPerNetwork(poolConfig.LendingRateOracle, network);
 | 
			
		||||
 | 
			
		||||
    if (lendingRateOracle && lendingRateOracle !== '') {
 | 
			
		||||
      await waitForTx(await addressesProvider.setLendingRateOracle(proxyProvider));
 | 
			
		||||
      await waitForTx(await addressesProvider.setLendingRateOracle(lendingRateOracle));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,9 +28,14 @@ task('aave:full', 'Deploy development enviroment')
 | 
			
		|||
    console.log('3. Initialize lending pool');
 | 
			
		||||
    await localBRE.run('full:initialize-lending-pool', {pool: POOL_NAME});
 | 
			
		||||
 | 
			
		||||
    console.log('4. Veryfing contracts');
 | 
			
		||||
    await localBRE.run('full:verify', {verify, all: true, pool: POOL_NAME});
 | 
			
		||||
    if (verify) {
 | 
			
		||||
      printContracts();
 | 
			
		||||
      console.log('4. Veryfing contracts');
 | 
			
		||||
      await localBRE.run('verify:general', {all: true, pool: POOL_NAME});
 | 
			
		||||
 | 
			
		||||
      console.log('5. Veryfing aTokens and debtTokens');
 | 
			
		||||
      await localBRE.run('verify:tokens', {pool: POOL_NAME});
 | 
			
		||||
    }
 | 
			
		||||
    console.log('\nFinished migrations');
 | 
			
		||||
    printContracts();
 | 
			
		||||
  });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,11 +20,10 @@ import {getParamPerNetwork} from '../../helpers/contracts-helpers';
 | 
			
		|||
import {verifyContract} from '../../helpers/etherscan-verification';
 | 
			
		||||
import {eEthereumNetwork, ICommonConfiguration} from '../../helpers/types';
 | 
			
		||||
 | 
			
		||||
task('full:verify', 'Deploy oracles for dev enviroment')
 | 
			
		||||
  .addFlag('verify', 'Verify proxy contracts at Etherscan')
 | 
			
		||||
task('verify:general', 'Deploy oracles for dev enviroment')
 | 
			
		||||
  .addFlag('all', 'Verify all contracts at Etherscan')
 | 
			
		||||
  .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`)
 | 
			
		||||
  .setAction(async ({verify, all, pool}, localDRE) => {
 | 
			
		||||
  .setAction(async ({all, pool}, localDRE) => {
 | 
			
		||||
    await localDRE.run('set-DRE');
 | 
			
		||||
    const network = localDRE.network.name as eEthereumNetwork;
 | 
			
		||||
    const poolConfig = loadPoolConfig(pool);
 | 
			
		||||
| 
						 | 
				
			
			@ -36,9 +35,6 @@ task('full:verify', 'Deploy oracles for dev enviroment')
 | 
			
		|||
    const lendingPoolConfigurator = await getLendingPoolConfiguratorProxy();
 | 
			
		||||
    const lendingPoolCollateralManager = await getLendingPoolCollateralManager();
 | 
			
		||||
 | 
			
		||||
    if (!verify) {
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    if (all) {
 | 
			
		||||
      const lendingPoolImpl = await getLendingPoolImpl();
 | 
			
		||||
      const lendingPoolConfiguratorImpl = await getLendingPoolConfiguratorImpl();
 | 
			
		||||
							
								
								
									
										109
									
								
								tasks/verifications/2_tokens.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								tasks/verifications/2_tokens.ts
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,109 @@
 | 
			
		|||
import {task} from 'hardhat/config';
 | 
			
		||||
import {loadPoolConfig, ConfigNames, getWethAddress} from '../../helpers/configuration';
 | 
			
		||||
import {ZERO_ADDRESS} from '../../helpers/constants';
 | 
			
		||||
import {
 | 
			
		||||
  getAddressById,
 | 
			
		||||
  getLendingPool,
 | 
			
		||||
  getLendingPoolAddressesProvider,
 | 
			
		||||
  getLendingPoolConfiguratorProxy,
 | 
			
		||||
} from '../../helpers/contracts-getters';
 | 
			
		||||
import {getParamPerNetwork} from '../../helpers/contracts-helpers';
 | 
			
		||||
import {verifyContract} from '../../helpers/etherscan-verification';
 | 
			
		||||
import {eEthereumNetwork, ICommonConfiguration, IReserveParams} from '../../helpers/types';
 | 
			
		||||
 | 
			
		||||
task('verify:tokens', 'Deploy oracles for dev enviroment')
 | 
			
		||||
  .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`)
 | 
			
		||||
  .setAction(async ({verify, all, pool}, localDRE) => {
 | 
			
		||||
    await localDRE.run('set-DRE');
 | 
			
		||||
    const network = localDRE.network.name as eEthereumNetwork;
 | 
			
		||||
    const poolConfig = loadPoolConfig(pool);
 | 
			
		||||
    const {ReserveAssets, ReservesConfig} = poolConfig as ICommonConfiguration;
 | 
			
		||||
 | 
			
		||||
    const addressesProvider = await getLendingPoolAddressesProvider();
 | 
			
		||||
    const lendingPoolProxy = await getLendingPool();
 | 
			
		||||
    const lendingPoolConfigurator = await getLendingPoolConfiguratorProxy();
 | 
			
		||||
 | 
			
		||||
    const configs = Object.entries(ReservesConfig) as [string, IReserveParams][];
 | 
			
		||||
    for (const entry of Object.entries(getParamPerNetwork(ReserveAssets, network))) {
 | 
			
		||||
      const [token, tokenAddress] = entry;
 | 
			
		||||
      console.log(`- Verifying ${token} token related contracts`);
 | 
			
		||||
      const {
 | 
			
		||||
        stableDebtTokenAddress,
 | 
			
		||||
        variableDebtTokenAddress,
 | 
			
		||||
        aTokenAddress,
 | 
			
		||||
        interestRateStrategyAddress,
 | 
			
		||||
      } = await lendingPoolProxy.getReserveData(tokenAddress);
 | 
			
		||||
 | 
			
		||||
      const tokenConfig = configs.find(([symbol]) => symbol === token);
 | 
			
		||||
      if (!tokenConfig) {
 | 
			
		||||
        throw `ReservesConfig not found for ${token} token`;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      const {
 | 
			
		||||
        baseVariableBorrowRate,
 | 
			
		||||
        variableRateSlope1,
 | 
			
		||||
        variableRateSlope2,
 | 
			
		||||
        stableRateSlope1,
 | 
			
		||||
        stableRateSlope2,
 | 
			
		||||
      } = tokenConfig[1];
 | 
			
		||||
 | 
			
		||||
      console.log;
 | 
			
		||||
      // Proxy Stable Debt
 | 
			
		||||
      console.log(`\n- Verifying Stable Debt Token proxy...\n`);
 | 
			
		||||
      await verifyContract(stableDebtTokenAddress, [lendingPoolConfigurator.address]);
 | 
			
		||||
 | 
			
		||||
      // Proxy Variable Debt
 | 
			
		||||
      console.log(`\n- Verifying  Debt Token proxy...\n`);
 | 
			
		||||
      await verifyContract(variableDebtTokenAddress, [lendingPoolConfigurator.address]);
 | 
			
		||||
 | 
			
		||||
      // Proxy aToken
 | 
			
		||||
      console.log('\n- Verifying aToken proxy...\n');
 | 
			
		||||
      await verifyContract(aTokenAddress, [lendingPoolConfigurator.address]);
 | 
			
		||||
 | 
			
		||||
      // Strategy Rate
 | 
			
		||||
      console.log(`\n- Verifying Strategy rate...\n`);
 | 
			
		||||
      await verifyContract(interestRateStrategyAddress, [
 | 
			
		||||
        addressesProvider.address,
 | 
			
		||||
        baseVariableBorrowRate,
 | 
			
		||||
        variableRateSlope1,
 | 
			
		||||
        variableRateSlope2,
 | 
			
		||||
        stableRateSlope1,
 | 
			
		||||
        stableRateSlope2,
 | 
			
		||||
      ]);
 | 
			
		||||
 | 
			
		||||
      const stableDebt = await getAddressById(`stableDebt${token}`);
 | 
			
		||||
      const variableDebt = await getAddressById(`variableDebt${token}`);
 | 
			
		||||
      const aToken = await getAddressById(`a${token}`);
 | 
			
		||||
 | 
			
		||||
      // aToken
 | 
			
		||||
      console.log('\n- Verifying aToken...\n');
 | 
			
		||||
      await verifyContract(aToken, [
 | 
			
		||||
        lendingPoolProxy.address,
 | 
			
		||||
        tokenAddress,
 | 
			
		||||
        ZERO_ADDRESS,
 | 
			
		||||
        `Aave interest bearing ${token}`,
 | 
			
		||||
        `a${token}`,
 | 
			
		||||
        ZERO_ADDRESS,
 | 
			
		||||
      ]);
 | 
			
		||||
 | 
			
		||||
      // stableDebtToken
 | 
			
		||||
      console.log('\n- Verifying StableDebtToken...\n');
 | 
			
		||||
      await verifyContract(stableDebt, [
 | 
			
		||||
        lendingPoolProxy.address,
 | 
			
		||||
        tokenAddress,
 | 
			
		||||
        `Aave stable debt bearing ${token}`,
 | 
			
		||||
        `stableDebt${token}`,
 | 
			
		||||
        ZERO_ADDRESS,
 | 
			
		||||
      ]);
 | 
			
		||||
 | 
			
		||||
      // variableDebtToken
 | 
			
		||||
      console.log('\n- Verifying VariableDebtToken...\n');
 | 
			
		||||
      await verifyContract(variableDebt, [
 | 
			
		||||
        lendingPoolProxy.address,
 | 
			
		||||
        tokenAddress,
 | 
			
		||||
        `Aave variable debt bearing ${token}`,
 | 
			
		||||
        `variableDebt${token}`,
 | 
			
		||||
        ZERO_ADDRESS,
 | 
			
		||||
      ]);
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user