Integrate polygon verifier into verification tools and Hardhat tasks

This commit is contained in:
David Racero 2021-03-11 16:55:04 +01:00
parent 7b757e340a
commit d16c680b7c
16 changed files with 325 additions and 25494 deletions

View File

@ -38,14 +38,15 @@ import { eContractid, PoolConfiguration, tEthereumAddress, TokenContractId } fro
export const getFirstSigner = async () => (await DRE.ethers.getSigners())[0];
export const getLendingPoolAddressesProvider = async (address?: tEthereumAddress) =>
await LendingPoolAddressesProviderFactory.connect(
export const getLendingPoolAddressesProvider = async (address?: tEthereumAddress) => {
console.log(DRE.network.name);
return await LendingPoolAddressesProviderFactory.connect(
address ||
(await getDb().get(`${eContractid.LendingPoolAddressesProvider}.${DRE.network.name}`).value())
.address,
await getFirstSigner()
);
};
export const getLendingPoolConfiguratorProxy = async (address?: tEthereumAddress) => {
return await LendingPoolConfiguratorFactory.connect(
address ||

View File

@ -22,7 +22,7 @@ import {
import { MintableERC20 } from '../types/MintableERC20';
import { Artifact } from 'hardhat/types';
import { Artifact as BuidlerArtifact } from '@nomiclabs/buidler/types';
import { verifyContract } from './etherscan-verification';
import { verifyEtherscanContract } from './etherscan-verification';
import { getIErc20Detailed } from './contracts-getters';
import { usingTenderly, verifyAtTenderly } from './tenderly-utils';
import { usingPolygon, verifyAtPolygon } from './polygon-utils';
@ -99,15 +99,8 @@ export const withSaveAndVerify = async <ContractType extends Contract>(
): Promise<ContractType> => {
await waitForTx(instance.deployTransaction);
await registerContractInJsonDb(id, instance);
if (usingTenderly()) {
await verifyAtTenderly(id, instance);
}
if (verify) {
if (usingPolygon()) {
await verifyAtPolygon(id, instance, args);
} else {
await verifyContract(instance.address, args);
}
await verifyContract(id, instance, args);
}
return instance;
};
@ -326,3 +319,19 @@ export const buildFlashLiquidationAdapterParams = (
[collateralAsset, debtAsset, user, debtToCover, useEthPath]
);
};
export const verifyContract = async (
id: string,
instance: Contract,
args: (string | string[])[]
) => {
if (usingPolygon()) {
await verifyAtPolygon(id, instance, args);
} else {
if (usingTenderly()) {
await verifyAtTenderly(id, instance);
}
await verifyEtherscanContract(instance.address, args);
}
return instance;
};

View File

@ -20,7 +20,7 @@ function delay(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
export const verifyContract = async (
export const verifyEtherscanContract = async (
address: string,
constructorArguments: (string | string[])[],
libraries?: string

View File

@ -5,6 +5,10 @@ import { source } from 'lowdb/adapters/FileSync';
import { file } from 'tmp-promise';
import { DRE } from './misc-utils';
import { eEthereumNetwork, ePolygonNetwork, EthereumNetworkNames } from './types';
import curlirize from 'axios-curlirize';
// Initialize Curlizie to add curl logs
curlirize(axios);
const TASK_FLATTEN_GET_FLATTENED_SOURCE = 'flatten:get-flattened-sources';
const TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS = 'compile:solidity:get-source-paths';
@ -76,10 +80,9 @@ export const verifyAtPolygon = async (
&optimization={false}
&contractSourceCode={contractSourceCode}
*/
const network = (DRE as HardhatRuntimeEnvironment).network.name;
const net = network === EthereumNetworkNames.matic ? 'mainnet' : network;
try {
const network = (DRE as HardhatRuntimeEnvironment).network.name;
const net = network === EthereumNetworkNames.matic ? 'mainnet' : network;
const filePath = await findPath(id);
const encodedConstructorParams = encodeDeployParams(instance, args);
const flattenSourceCode = await hardhatFlattener(filePath);
@ -117,12 +120,19 @@ export const verifyAtPolygon = async (
if (response.status === 200 && response.data.message === 'OK') {
console.log(`[Polygon Verify] Verified contract at Matic ${net} network.`);
console.log(
`[Polygon Verify] You can check at https://explorer-${net}.maticvigil.com/address/${instance.address}/contracts) \n`
`[Polygon Verify] Check at: https://explorer-${net}.maticvigil.com/address/${instance.address}/contracts) \n`
);
return;
}
throw Error(JSON.stringify(response.data, null, 2));
} catch (error) {
if (error?.message.includes('Smart-contract already verified.')) {
console.log(
`[Polygon Verify] Already verified. Check it at: https://explorer-${net}.maticvigil.com/address/${instance.address}/contracts) \n`
);
return;
}
console.error('[Polygon Verify] Error:', error.toString());
throw error;
}

View File

@ -1,5 +1,11 @@
import BigNumber from 'bignumber.js';
import { oneEther, oneRay, RAY, ZERO_ADDRESS, MOCK_CHAINLINK_AGGREGATORS_PRICES } from '../../helpers/constants';
import {
oneEther,
oneRay,
RAY,
ZERO_ADDRESS,
MOCK_CHAINLINK_AGGREGATORS_PRICES,
} from '../../helpers/constants';
import { ICommonConfiguration, ePolygonNetwork } from '../../helpers/types';
// ----------------
@ -74,19 +80,19 @@ export const CommonsConfig: ICommonConfiguration = {
[ePolygonNetwork.mumbai]: '',
[ePolygonNetwork.matic]: '0x17c4A170FFF882862F656597889016D3a6073534',
},
EmergencyAdminIndex: 1,
EmergencyAdminIndex: 0,
ProviderRegistry: {
[ePolygonNetwork.mumbai]: '0x569859d41499B4dDC28bfaA43915051FF0A38a6F', // TEMP
[ePolygonNetwork.matic]: '0x28334e4791860a0c1eCF89a62B973ba04a5d643F', // TEMP
[ePolygonNetwork.mumbai]: '0x27453A916e91Fb922d309D92e637C0b6625846dF', // TEMP
[ePolygonNetwork.matic]: '0x28334e4791860a0c1eCF89a62B973ba04a5d643F', // TEMP
},
ProviderRegistryOwner: {
[ePolygonNetwork.mumbai]: '0x18d9bA2baEfBdE0FF137C4ad031427EF205f1Fd9', // TEMP
[ePolygonNetwork.matic]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F', // TEMP
[ePolygonNetwork.mumbai]: '0xa6842C2C7fece4Cdc6a4aaaD331eb1c7910e419A', // TEMP
[ePolygonNetwork.matic]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F', // TEMP
},
LendingRateOracle: {
[ePolygonNetwork.mumbai]: '',
[ePolygonNetwork.matic]: '',
},
},
LendingPoolCollateralManager: {
[ePolygonNetwork.mumbai]: '',
[ePolygonNetwork.matic]: '0x9Af76e0575D139570D3B4c821567Fe935E8c25C5',
@ -95,9 +101,9 @@ export const CommonsConfig: ICommonConfiguration = {
[ePolygonNetwork.mumbai]: '',
[ePolygonNetwork.matic]: '',
},
WethGateway: {
WethGateway: {
[ePolygonNetwork.mumbai]: '',
[ePolygonNetwork.matic]: '0x15A46f5073789b7D16F6F46632aE50Bae838d938',
[ePolygonNetwork.matic]: '',
},
AaveOracle: {
[ePolygonNetwork.mumbai]: '',
@ -135,10 +141,10 @@ export const CommonsConfig: ICommonConfiguration = {
},
WETH: {
[ePolygonNetwork.mumbai]: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', // WMATIC address (untested)
[ePolygonNetwork.matic]: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC address
[ePolygonNetwork.matic]: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC address
},
ReserveFactorTreasuryAddress: {
[ePolygonNetwork.mumbai]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', // TEMP
[ePolygonNetwork.matic]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', // TEMP
[ePolygonNetwork.mumbai]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', // TEMP
[ePolygonNetwork.matic]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', // TEMP
},
};

25528
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -69,6 +69,10 @@
"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",
"matic:mumbai:verify": "npm run hardhat:mumbai verify:general -- --all --pool Matic",
"matic:mainnet:verify": "npm run hardhat:matic verify:general -- --all --pool Matic",
"matic:mumbai:verify:tokens": "npm run hardhat:mumbai verify:tokens -- --pool Matic",
"matic:mainnet:verify:tokens": "npm run hardhat:matic verify:tokens -- --pool Matic",
"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",
@ -144,6 +148,7 @@
],
"license": "AGPLv3",
"dependencies": {
"axios-curlirize": "^1.3.7",
"tmp-promise": "^3.0.2"
},
"keywords": [

View File

@ -1,7 +1,7 @@
import { task } from 'hardhat/config';
import { UiPoolDataProviderFactory } from '../../types';
import { verifyContract } from '../../helpers/etherscan-verification';
import { verifyContract } from '../../helpers/contracts-helpers';
import { eContractid } from '../../helpers/types';
task(`deploy-${eContractid.UiPoolDataProvider}`, `Deploys the UiPoolDataProvider contract`)
@ -21,7 +21,9 @@ task(`deploy-${eContractid.UiPoolDataProvider}`, `Deploys the UiPoolDataProvider
).deploy();
await uiPoolDataProvider.deployTransaction.wait();
console.log('uiPoolDataProvider.address', uiPoolDataProvider.address);
await verifyContract(uiPoolDataProvider.address, []);
if (verify) {
await verifyContract(eContractid.UiPoolDataProvider, uiPoolDataProvider, []);
}
console.log(`\tFinished UiPoolDataProvider proxy and implementation deployment`);
});

View File

@ -1,8 +1,9 @@
import { task } from 'hardhat/config';
import { UniswapLiquiditySwapAdapterFactory } from '../../types';
import { verifyContract } from '../../helpers/etherscan-verification';
import { verifyContract } from '../../helpers/contracts-helpers';
import { getFirstSigner } from '../../helpers/contracts-getters';
import { eContractid } from '../../helpers/types';
const CONTRACT_NAME = 'UniswapLiquiditySwapAdapter';
@ -29,7 +30,14 @@ task(`deploy-${CONTRACT_NAME}`, `Deploys the ${CONTRACT_NAME} contract`)
).deploy(provider, router, weth);
await uniswapRepayAdapter.deployTransaction.wait();
console.log(`${CONTRACT_NAME}.address`, uniswapRepayAdapter.address);
await verifyContract(uniswapRepayAdapter.address, [provider, router, weth]);
if (verify) {
await verifyContract(eContractid.UniswapLiquiditySwapAdapter, uniswapRepayAdapter, [
provider,
router,
weth,
]);
}
console.log(`\tFinished ${CONTRACT_NAME} proxy and implementation deployment`);
});

View File

@ -1,8 +1,9 @@
import { task } from 'hardhat/config';
import { UniswapRepayAdapterFactory } from '../../types';
import { verifyContract } from '../../helpers/etherscan-verification';
import { verifyContract } from '../../helpers/contracts-helpers';
import { getFirstSigner } from '../../helpers/contracts-getters';
import { eContractid } from '../../helpers/types';
const CONTRACT_NAME = 'UniswapRepayAdapter';
@ -30,7 +31,14 @@ task(`deploy-${CONTRACT_NAME}`, `Deploys the ${CONTRACT_NAME} contract`)
);
await uniswapRepayAdapter.deployTransaction.wait();
console.log(`${CONTRACT_NAME}.address`, uniswapRepayAdapter.address);
await verifyContract(uniswapRepayAdapter.address, [provider, router, weth]);
if (verify) {
await verifyContract(eContractid.UniswapRepayAdapter, uniswapRepayAdapter, [
provider,
router,
weth,
]);
}
console.log(
`\tFinished ${CONTRACT_NAME}${CONTRACT_NAME}lDataProvider proxy and implementation deployment`

View File

@ -21,12 +21,7 @@ task(`full-deploy-weth-gateway`, `Deploys the ${CONTRACT_NAME} contract`)
if (!localBRE.network.config.chainId) {
throw new Error('INVALID_CHAIN_ID');
}
let gateWay = getParamPerNetwork(WethGateway, network);
if (gateWay === '') {
const wethGateWay = await deployWETHGateway([Weth], verify);
console.log(`${CONTRACT_NAME}.address`, wethGateWay.address);
console.log(`\tFinished ${CONTRACT_NAME} deployment`);
} else {
console.log(`Weth gateway already deployed. Address: ${gateWay}`);
}
const wethGateWay = await deployWETHGateway([Weth], verify);
console.log(`${CONTRACT_NAME}.address`, wethGateWay.address);
console.log(`\tFinished ${CONTRACT_NAME} deployment`);
});

View File

@ -95,6 +95,7 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.')
if (!notFalsyOrZeroAddress(gateWay)) {
gateWay = (await getWETHGateway()).address;
}
console.log('GATEWAY', gateWay);
await authorizeWETHGateway(gateWay, lendingPoolAddress);
} catch (err) {
console.error(err);

View File

@ -4,7 +4,7 @@ import { ConfigNames } from '../../helpers/configuration';
import { printContracts } from '../../helpers/misc-utils';
import { usingTenderly } from '../../helpers/tenderly-utils';
task('matic:mainnet', 'Deploy development enviroment')
task('matic:mainnet', 'Deploy Matic market at Polygon network')
.addFlag('verify', 'Verify contracts at Etherscan')
.setAction(async ({ verify }, DRE) => {
const POOL_NAME = ConfigNames.Matic;
@ -28,16 +28,18 @@ task('matic:mainnet', 'Deploy development enviroment')
console.log('4. Deploy Data Provider');
await DRE.run('full:data-provider', { pool: POOL_NAME });
console.log('5. Deploy WETH Gateway');
await DRE.run('full-deploy-weth-gateway', { pool: POOL_NAME });
console.log('5. Initialize lending pool');
console.log('6. Initialize lending pool');
await DRE.run('full:initialize-lending-pool', { pool: POOL_NAME });
if (verify) {
printContracts();
console.log('4. Veryfing contracts');
console.log('7. Veryfing contracts');
await DRE.run('verify:general', { all: true, pool: POOL_NAME });
console.log('5. Veryfing aTokens and debtTokens');
console.log('8. Veryfing aTokens and debtTokens');
await DRE.run('verify:tokens', { pool: POOL_NAME });
}

View File

@ -1,6 +1,5 @@
import { task } from 'hardhat/config';
import { verifyContract, checkVerification } from '../../helpers/etherscan-verification';
import { verifyEtherscanContract, checkVerification } from '../../helpers/etherscan-verification';
interface VerifyParams {
contractName: string;
address: string;
@ -24,6 +23,6 @@ task('verify-sc', 'Inits the DRE, to have access to all the plugins')
checkVerification();
const result = await verifyContract(address, constructorArguments, libraries);
const result = await verifyEtherscanContract(address, constructorArguments, libraries);
return result;
});

View File

@ -19,13 +19,13 @@ import {
getLendingPoolConfiguratorImpl,
getLendingPoolConfiguratorProxy,
getLendingPoolImpl,
getProxy,
getWalletProvider,
getWETHGateway,
} from '../../helpers/contracts-getters';
import { getParamPerNetwork } from '../../helpers/contracts-helpers';
import { verifyContract } from '../../helpers/etherscan-verification';
import { verifyContract, getParamPerNetwork } from '../../helpers/contracts-helpers';
import { notFalsyOrZeroAddress } from '../../helpers/misc-utils';
import { eNetwork, ICommonConfiguration } from '../../helpers/types';
import { eContractid, eNetwork, ICommonConfiguration } from '../../helpers/types';
task('verify:general', 'Verify contracts at Etherscan')
.addFlag('all', 'Verify all contracts at Etherscan')
@ -55,6 +55,10 @@ task('verify:general', 'Verify contracts at Etherscan')
const lendingPoolConfiguratorAddress = await addressesProvider.getLendingPoolConfigurator(); //getLendingPoolConfiguratorProxy();
const lendingPoolCollateralManagerAddress = await addressesProvider.getLendingPoolCollateralManager();
const lendingPoolProxy = await getProxy(lendingPoolAddress);
const lendingPoolConfiguratorProxy = await getProxy(lendingPoolConfiguratorAddress);
const lendingPoolCollateralManagerProxy = await getProxy(lendingPoolCollateralManagerAddress);
if (all) {
const lendingPoolImplAddress = getParamPerNetwork(LendingPool, network);
const lendingPoolImpl = notFalsyOrZeroAddress(lendingPoolImplAddress)
@ -89,64 +93,69 @@ task('verify:general', 'Verify contracts at Etherscan')
// Address Provider
console.log('\n- Verifying address provider...\n');
await verifyContract(addressesProvider.address, [MarketId]);
await verifyContract(eContractid.LendingPoolAddressesProvider, addressesProvider, [MarketId]);
// Address Provider Registry
console.log('\n- Verifying address provider registry...\n');
await verifyContract(addressesProviderRegistry.address, []);
await verifyContract(
eContractid.LendingPoolAddressesProviderRegistry,
addressesProviderRegistry,
[]
);
// Lending Pool implementation
console.log('\n- Verifying LendingPool Implementation...\n');
await verifyContract(lendingPoolImpl.address, []);
await verifyContract(eContractid.LendingPool, lendingPoolImpl, []);
// Lending Pool Configurator implementation
console.log('\n- Verifying LendingPool Configurator Implementation...\n');
await verifyContract(lendingPoolConfiguratorImpl.address, []);
await verifyContract(eContractid.LendingPoolConfigurator, lendingPoolConfiguratorImpl, []);
// Lending Pool Collateral Manager implementation
console.log('\n- Verifying LendingPool Collateral Manager Implementation...\n');
await verifyContract(lendingPoolCollateralManagerImpl.address, []);
await verifyContract(
eContractid.LendingPoolCollateralManager,
lendingPoolCollateralManagerImpl,
[]
);
// Test helpers
console.log('\n- Verifying Aave Provider Helpers...\n');
await verifyContract(dataProvider.address, [addressesProvider.address]);
await verifyContract(eContractid.AaveProtocolDataProvider, dataProvider, [
addressesProvider.address,
]);
// Wallet balance provider
console.log('\n- Verifying Wallet Balance Provider...\n');
await verifyContract(walletProvider.address, []);
await verifyContract(eContractid.WalletBalanceProvider, walletProvider, []);
// WETHGateway
console.log('\n- Verifying WETHGateway...\n');
await verifyContract(wethGateway.address, [await getWethAddress(poolConfig)]);
await verifyContract(eContractid.WETHGateway, wethGateway, [
await getWethAddress(poolConfig),
]);
}
// Lending Pool proxy
console.log('\n- Verifying Lending Pool Proxy...\n');
await verifyContract(lendingPoolAddress, [addressesProvider.address]);
await verifyContract(eContractid.InitializableAdminUpgradeabilityProxy, lendingPoolProxy, [
addressesProvider.address,
]);
// LendingPool Conf proxy
console.log('\n- Verifying Lending Pool Configurator Proxy...\n');
await verifyContract(lendingPoolConfiguratorAddress, [addressesProvider.address]);
await verifyContract(
eContractid.InitializableAdminUpgradeabilityProxy,
lendingPoolConfiguratorProxy,
[addressesProvider.address]
);
// Proxy collateral manager
console.log('\n- Verifying Lending Pool Collateral Manager Proxy...\n');
await verifyContract(lendingPoolCollateralManagerAddress, []);
await verifyContract(
eContractid.InitializableAdminUpgradeabilityProxy,
lendingPoolCollateralManagerProxy,
[]
);
// DelegatedAwareAToken
console.log('\n- Verifying DelegatedAwareAToken...\n');
const UNI = getParamPerNetwork(ReserveAssets, network).UNI;
const aUNI = await getAddressById('aUNI');
if (aUNI) {
console.log('Verifying aUNI');
await verifyContract(aUNI, [
lendingPoolAddress,
UNI,
treasuryAddress,
'Aave interest bearing UNI',
'aUNI',
ZERO_ADDRESS,
]);
} else {
console.error('Missing aUNI address at JSON DB. Skipping...');
}
console.log('Finished verifications.');
});

View File

@ -8,14 +8,16 @@ import {
import { ZERO_ADDRESS } from '../../helpers/constants';
import {
getAddressById,
getAToken,
getFirstSigner,
getLendingPool,
getInterestRateStrategy,
getLendingPoolAddressesProvider,
getLendingPoolConfiguratorProxy,
getProxy,
getStableDebtToken,
getVariableDebtToken,
} from '../../helpers/contracts-getters';
import { getParamPerNetwork } from '../../helpers/contracts-helpers';
import { verifyContract } from '../../helpers/etherscan-verification';
import { eNetwork, ICommonConfiguration, IReserveParams } from '../../helpers/types';
import { getParamPerNetwork, verifyContract } from '../../helpers/contracts-helpers';
import { eContractid, eNetwork, ICommonConfiguration, IReserveParams } from '../../helpers/types';
import { LendingPoolConfiguratorFactory, LendingPoolFactory } from '../../types';
task('verify:tokens', 'Deploy oracles for dev enviroment')
@ -66,27 +68,43 @@ task('verify:tokens', 'Deploy oracles for dev enviroment')
console.log;
// Proxy Stable Debt
console.log(`\n- Verifying Stable Debt Token proxy...\n`);
await verifyContract(stableDebtTokenAddress, [lendingPoolConfigurator.address]);
await verifyContract(
eContractid.InitializableAdminUpgradeabilityProxy,
await getProxy(stableDebtTokenAddress),
[lendingPoolConfigurator.address]
);
// Proxy Variable Debt
console.log(`\n- Verifying Debt Token proxy...\n`);
await verifyContract(variableDebtTokenAddress, [lendingPoolConfigurator.address]);
await verifyContract(
eContractid.InitializableAdminUpgradeabilityProxy,
await getProxy(variableDebtTokenAddress),
[lendingPoolConfigurator.address]
);
// Proxy aToken
console.log('\n- Verifying aToken proxy...\n');
await verifyContract(aTokenAddress, [lendingPoolConfigurator.address]);
await verifyContract(
eContractid.InitializableAdminUpgradeabilityProxy,
await getProxy(aTokenAddress),
[lendingPoolConfigurator.address]
);
// Strategy Rate
console.log(`\n- Verifying Strategy rate...\n`);
await verifyContract(interestRateStrategyAddress, [
addressesProvider.address,
optimalUtilizationRate,
baseVariableBorrowRate,
variableRateSlope1,
variableRateSlope2,
stableRateSlope1,
stableRateSlope2,
]);
await verifyContract(
eContractid.DefaultReserveInterestRateStrategy,
await getInterestRateStrategy(interestRateStrategyAddress),
[
addressesProvider.address,
optimalUtilizationRate,
baseVariableBorrowRate,
variableRateSlope1,
variableRateSlope2,
stableRateSlope1,
stableRateSlope2,
]
);
const stableDebt = await getAddressById(`stableDebt${token}`);
const variableDebt = await getAddressById(`variableDebt${token}`);
@ -94,7 +112,7 @@ task('verify:tokens', 'Deploy oracles for dev enviroment')
if (aToken) {
console.log('\n- Verifying aToken...\n');
await verifyContract(aToken, [
await verifyContract(eContractid.AToken, await getAToken(aToken), [
lendingPoolProxy.address,
tokenAddress,
treasuryAddress,
@ -107,7 +125,7 @@ task('verify:tokens', 'Deploy oracles for dev enviroment')
}
if (stableDebt) {
console.log('\n- Verifying StableDebtToken...\n');
await verifyContract(stableDebt, [
await verifyContract(eContractid.StableDebtToken, await getStableDebtToken(stableDebt), [
lendingPoolProxy.address,
tokenAddress,
`Aave stable debt bearing ${token}`,
@ -119,13 +137,17 @@ task('verify:tokens', 'Deploy oracles for dev enviroment')
}
if (variableDebt) {
console.log('\n- Verifying VariableDebtToken...\n');
await verifyContract(variableDebt, [
lendingPoolProxy.address,
tokenAddress,
`Aave variable debt bearing ${token}`,
`variableDebt${token}`,
ZERO_ADDRESS,
]);
await verifyContract(
eContractid.VariableDebtToken,
await getVariableDebtToken(variableDebt),
[
lendingPoolProxy.address,
tokenAddress,
`Aave variable debt bearing ${token}`,
`variableDebt${token}`,
ZERO_ADDRESS,
]
);
} else {
console.error(`Skipping variable debt verify for ${token}. Missing address at JSON DB.`);
}