diff --git a/contracts/deployments/ATokensAndRatesHelper.sol b/contracts/deployments/ATokensAndRatesHelper.sol index f39cdaa2..a44d5071 100644 --- a/contracts/deployments/ATokensAndRatesHelper.sol +++ b/contracts/deployments/ATokensAndRatesHelper.sol @@ -36,7 +36,6 @@ contract ATokensAndRatesHelper is Ownable { ) external onlyOwner { require(tokens.length == symbols.length, 't Arrays not same length'); require(rates.length == symbols.length, 'r Arrays not same length'); - for (uint256 i = 0; i < tokens.length; i++) { emit deployedContracts( address( diff --git a/deployed-contracts.json b/deployed-contracts.json index 7508eca4..ee549af2 100644 --- a/deployed-contracts.json +++ b/deployed-contracts.json @@ -251,7 +251,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "kovan": { - "address": "0x688C81eC2A0Be6F287fD8C9c343D299c03A34804", + "address": "0xfD65F43f039832D703fAb8B635C7522d4966f118", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" }, "hardhat": { @@ -265,7 +265,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "kovan": { - "address": "0xf189cC1eD07cEFB6e61082104e12673E133163f5", + "address": "0x082dAEDD5Ff6F6Ae58FF83Be57A3F76fC5Feff41", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" }, "hardhat": { @@ -279,7 +279,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "kovan": { - "address": "0x757855037B01c45832f8d662D217C766Ba4e8e74", + "address": "0x0ed5565EdDE0cea739c30BD5b56AAaa49611929E", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" }, "hardhat": { @@ -293,7 +293,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "kovan": { - "address": "0xBc013D1412E0F4acacAa64CDc1c93e8A3Ecd8fF4", + "address": "0x571270764042E5932C08066e8Da692f05A31153A", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" }, "hardhat": { @@ -307,7 +307,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "kovan": { - "address": "0xba681EfB276237903df60ef92D564610A393Dbd6", + "address": "0xdb3d5013b9f51063D2d934AD717C8e7Ef90A6f19", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" }, "hardhat": { @@ -321,7 +321,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "kovan": { - "address": "0x59525b17808F0a7eFe62303ca46e596A5a602683" + "address": "0x3F3BA806D66a5F3B03c7f30e94023A74eacE1c8F" }, "hardhat": { "address": "0xAa7BC1924711B77A0F3Aaebdd550BfeDDDbaf3cd", @@ -333,7 +333,7 @@ "address": "0xdbaA15927b1463EdD14Cf51D082BD7703Fd1C238" }, "kovan": { - "address": "0x0a9bc0ce44e6473a1B0e30b54b7227de6E75Fd83" + "address": "0x2bc505Db38aEA5EfA42e07Fb3855875094E2eB44" }, "hardhat": { "address": "0xdbaA15927b1463EdD14Cf51D082BD7703Fd1C238" @@ -345,7 +345,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "kovan": { - "address": "0x882AD7981FE3d63200A23F5d009A1d0488b5ea7e", + "address": "0xA103ea2B53e53209a4b58E4F2b4cd21958C9e3AA", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" }, "hardhat": { @@ -359,7 +359,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "kovan": { - "address": "0x20Bfad73e3A8aA9161b5c553f7825002a175DB23", + "address": "0xdbB044C41a395c2db96a401aFCb4367F6546B893", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" }, "hardhat": { @@ -412,7 +412,7 @@ "address": "0x93472C0e03215F9c33DA240Eb16703C8244eAa8c" }, "kovan": { - "address": "0xe875775D75F384944E77086Ea54bAD008ea8004A", + "address": "0xA9984C013875f4F6b0276d2EF62fe32934c93530", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" }, "hardhat": { @@ -425,7 +425,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "kovan": { - "address": "0xc072D8A233C8C52239dcD6ab39954240a0699055", + "address": "0x999ce4Ed17B90A1421f1D6b8891D87Ed61cb2763", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" }, "hardhat": { @@ -447,7 +447,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "kovan": { - "address": "0xf896A27CDd4E3bC101aCEa86cc1cE6b7C91AEFA1", + "address": "0x06C312C74F047f6009678239ada37BCE7bDC7DDb", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" }, "hardhat": { @@ -490,6 +490,10 @@ "address": "0x0Cf45557d25a4e4c0F1aC65EF6c48ae67c61a0E6", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, + "kovan": { + "address": "0x132D4cdC59981AE25De7F67b17160d78b462d199", + "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, "hardhat": { "address": "0x7fAeC7791277Ff512c41CA903c177B2Ed952dDAc", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" @@ -584,5 +588,440 @@ "address": "0x53369fd4680FfE3DfF39Fc6DDa9CfbfD43daeA2E", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } + }, + "LendingPoolImpl": { + "kovan": { + "address": "0x6152D1d883F4C5dA18B47FE45e6eB2Ee79339E78" + } + }, + "LendingPoolConfiguratorImpl": { + "kovan": { + "address": "0x46c410d5636dF430Ff1a7DDff7683d6CfdBF4A09" + } + }, + "LendingPoolCollateralManagerImpl": { + "kovan": { + "address": "0x999ce4Ed17B90A1421f1D6b8891D87Ed61cb2763" + } + }, + "stableDebtAAVE": { + "kovan": { + "address": "0xc206d99A916A45bAa74663C38F063C5f16d566bb" + } + }, + "variableDebtAAVE": { + "kovan": { + "address": "0xCBd4194aB034AcD234400F742Bf3093b917aa581" + } + }, + "stableDebtBAT": { + "kovan": { + "address": "0x2Af9Ce7274Ca7084abbf0Db313aEFA289D361A12" + } + }, + "variableDebtBAT": { + "kovan": { + "address": "0x2962aCbeDa9d1A258E1cBb99A6435A3D2F1af5eE" + } + }, + "stableDebtBUSD": { + "kovan": { + "address": "0x58704aB618678c58a11e86f1cf7b3ddACB659114" + } + }, + "variableDebtBUSD": { + "kovan": { + "address": "0x3903DB7B363A1C0B5272a53cA3B27d9D7759DE53" + } + }, + "stableDebtDAI": { + "kovan": { + "address": "0xe3CD1bbB9041b8c32D1ec96210842Ee1d91872B4" + } + }, + "variableDebtDAI": { + "kovan": { + "address": "0x6207fdDba94b932A73f02a988A760BBd4d942152" + } + }, + "aAAVE": { + "kovan": { + "address": "0x84145b267060bf9eE8FCA80324498A7444c8e821" + } + }, + "strategyAAVE": { + "kovan": { + "address": "0x367356225e3BFA34c1cb447CFCdEE7a2D2dB38B5" + } + }, + "aBAT": { + "kovan": { + "address": "0x2490F90399e169381DF8c78F81aC635f4be0d8A3" + } + }, + "strategyBAT": { + "kovan": { + "address": "0xac86Db376b8255d8FD8e41B092535875471eE311" + } + }, + "aBUSD": { + "kovan": { + "address": "0x6645315FA490C24e7969439EeF4c143ce69B3035" + } + }, + "strategyBUSD": { + "kovan": { + "address": "0xf4F7F30a34FDdB1Fd5B166CF121E2786a62B96Aa" + } + }, + "aDAI": { + "kovan": { + "address": "0xb1967F5b6e65705ACF985437f5743a63eDa20F73" + } + }, + "strategyDAI": { + "kovan": { + "address": "0x0ffeB139529D3DA091F8239712D25eab404C4421" + } + }, + "stableDebtENJ": { + "kovan": { + "address": "0x59FF56F1bE382464468637e59c5Ae57398B143cF" + } + }, + "variableDebtENJ": { + "kovan": { + "address": "0xb6DA3a57ea0A5b3C4f1926E9238c6F34b5B61eca" + } + }, + "stableDebtKNC": { + "kovan": { + "address": "0x813863F06b228DAC48ed2E861a3c07eD10e8D2F0" + } + }, + "variableDebtKNC": { + "kovan": { + "address": "0x8B08B2678D105Bf32F8F5A2013382773b2b24733" + } + }, + "stableDebtLINK": { + "kovan": { + "address": "0x86A28c4B9Bc2BFc03743b136405B63e6ceB4e963" + } + }, + "variableDebtLINK": { + "kovan": { + "address": "0x7A68F4382419D86c90cc069EF692BaaCfd3301Da" + } + }, + "stableDebtMANA": { + "kovan": { + "address": "0xb61c3B1BF95B78eCC327ddcd614ba96FEe8127b0" + } + }, + "variableDebtMANA": { + "kovan": { + "address": "0x196143A06206c5d47394c114ad5318b85CAC2E88" + } + }, + "aENJ": { + "kovan": { + "address": "0xF2F9f31FFB0f8d43974B05Bb560f093b441F5B1b" + } + }, + "strategyENJ": { + "kovan": { + "address": "0x66d0B7Ccd0C9a76A831334e9fE8a71680DD0A9e2" + } + }, + "aKNC": { + "kovan": { + "address": "0x5675D816D05cEF2bBF2737EbD55727549D4143e0" + } + }, + "strategyKNC": { + "kovan": { + "address": "0x8C7d058c50b241dD01d6a6d4E2a10C6c78e21eB3" + } + }, + "aLINK": { + "kovan": { + "address": "0x729c933284e8226137cd8a5ec39bD20A9c4c49F9" + } + }, + "strategyLINK": { + "kovan": { + "address": "0xB09a6AB9d32a576e73159083aFE9aBe14c29173E" + } + }, + "aMANA": { + "kovan": { + "address": "0xB98571944af08b8698622Ab0A988c59738Cf2AB8" + } + }, + "strategyMANA": { + "kovan": { + "address": "0xB44Ca018DB828f67C2BaFb6846AF12c5cCb92122" + } + }, + "stableDebtMKR": { + "kovan": { + "address": "0x536FA5ACA31cA1FE60Ec8a54432bA8E08E86222E" + } + }, + "variableDebtMKR": { + "kovan": { + "address": "0x6BF5055Fe4312194723888875Ce73A9461510344" + } + }, + "stableDebtREN": { + "kovan": { + "address": "0x2372E7a3d03e18F6ece2FDcb453c03e609134842" + } + }, + "variableDebtREN": { + "kovan": { + "address": "0x89C3b25C3C4d7f7Fd25B8cCe1De60Af835696C1B" + } + }, + "stableDebtREP": { + "kovan": { + "address": "0x9ED2D2d415A262487D7f0a3Ec62E8467fd3CF278" + } + }, + "variableDebtREP": { + "kovan": { + "address": "0xe1333768d0209078254215A131d49E3dE36F4617" + } + }, + "stableDebtSNX": { + "kovan": { + "address": "0xB14dbC77a03703074ed8a95f288413985f996b99" + } + }, + "variableDebtSNX": { + "kovan": { + "address": "0x77E31F2CDC45921156df5288D4dB20D3A5A915f2" + } + }, + "aMKR": { + "kovan": { + "address": "0xd87c0D428f89D54176808A3e78632c90C44fF5a5" + } + }, + "strategyMKR": { + "kovan": { + "address": "0x349E1B2e94b600Dd09817924207E50A6660fAF2B" + } + }, + "aREN": { + "kovan": { + "address": "0x9410999dFA3527317f0Ae3b5D2A54c213A48f9d1" + } + }, + "strategyREN": { + "kovan": { + "address": "0x192638591E5Bb456498E380cf91f456Fef21C4b4" + } + }, + "aREP": { + "kovan": { + "address": "0x8C94FE9CE952738C48799326E63294626e1A3C7c" + } + }, + "strategyREP": { + "kovan": { + "address": "0x1D2F67F9bb6db702067Fbb0D400c864a1ffC5594" + } + }, + "aSNX": { + "kovan": { + "address": "0x2473e6Ed1F9cbcc3141eB04AEd432BaAB575fDD1" + } + }, + "strategySNX": { + "kovan": { + "address": "0x75cb1cEB23956D20b94fF63ec9dB0990E5920A91" + } + }, + "stableDebtSUSD": { + "kovan": { + "address": "0xD59F6350A3a75cfa09Df8A182BF55be37f8A8840" + } + }, + "variableDebtSUSD": { + "kovan": { + "address": "0xcd8b423809eb2565f0e0f2d0435dFBAdcBBdCF18" + } + }, + "stableDebtTUSD": { + "kovan": { + "address": "0xA3b22b35DAee9F2E73F2A05eF57799B821513930" + } + }, + "variableDebtTUSD": { + "kovan": { + "address": "0x648663CD12F9BCde674c18a1F04A455e23aFc6b3" + } + }, + "stableDebtUNI": { + "kovan": { + "address": "0x30E2aBE48E78646347C3Cf8C437AE965AB6e9303" + } + }, + "variableDebtUNI": { + "kovan": { + "address": "0x83028921E12c9adB6c7bBa1d6872C9e771bbEC20" + } + }, + "stableDebtUSDC": { + "kovan": { + "address": "0xe86554cd90D2d8BF7fd5F3931F833e7c1604CbCE" + } + }, + "variableDebtUSDC": { + "kovan": { + "address": "0x5d4d415f627a10b20f5B3E8A1bbB4D3190761cE0" + } + }, + "aSUSD": { + "kovan": { + "address": "0x6a179aD153474df2af72b963145C1310727F65a7" + } + }, + "strategySUSD": { + "kovan": { + "address": "0x570114BcC09d440A7973e406A5c1b55C394c90aD" + } + }, + "aTUSD": { + "kovan": { + "address": "0x0290a0b6B5D249fD98F31Ae887F6d5B4d6C4A56F" + } + }, + "strategyTUSD": { + "kovan": { + "address": "0x9686D4f25eB0E4E72d2Eef22c66a3E1d9a42aca2" + } + }, + "aUNI": { + "kovan": { + "address": "0x3414b75532c400fb983a9fA22d71Cb45A05ADd2c" + } + }, + "strategyUNI": { + "kovan": { + "address": "0x9A01E6f57863bb03f7ED2ebad57123476e450FA9" + } + }, + "aUSDC": { + "kovan": { + "address": "0xB98DA540268F26Eb3A328F6c183BB3A5dCb1943b" + } + }, + "strategyUSDC": { + "kovan": { + "address": "0xF727D07a89C98A5296CcCa71cE3Cda4f027965a9" + } + }, + "stableDebtUSDT": { + "kovan": { + "address": "0xc6b875BAec3472520da7c9755E2bFF98a1DbB89F" + } + }, + "variableDebtUSDT": { + "kovan": { + "address": "0x935626db98525589969745e5edc2C9256E380e17" + } + }, + "stableDebtWBTC": { + "kovan": { + "address": "0xD5f7F2A4175B40cbdc53c952103AB427656D9C81" + } + }, + "variableDebtWBTC": { + "kovan": { + "address": "0xf11b889cB033a51391181f0180A27489484F832c" + } + }, + "stableDebtWETH": { + "kovan": { + "address": "0x06Df93951238B7aBeCBDceE767bF76f0119Ef6dd" + } + }, + "variableDebtWETH": { + "kovan": { + "address": "0x920e55564a59967FB7A9cbB52D806FcF9093fda9" + } + }, + "stableDebtYFI": { + "kovan": { + "address": "0xFa29EA4a56192B3435D1B44c06c105d6A68934eb" + } + }, + "variableDebtYFI": { + "kovan": { + "address": "0x6888B4E246af31Abd68b8809C559dBAe005F3f8C" + } + }, + "aUSDT": { + "kovan": { + "address": "0xcC43E5f28B99359A91241C3C7724329752959315" + } + }, + "strategyUSDT": { + "kovan": { + "address": "0x258B11Fe8840465aB532672Cae7552E9b9164868" + } + }, + "aWBTC": { + "kovan": { + "address": "0x5Df7c6D2bC373B5D4401A5Fb53c2ca0c5D54f3D9" + } + }, + "strategyWBTC": { + "kovan": { + "address": "0x9499FD7ca03BC886D9D5206Eb13ef49aFAd762D9" + } + }, + "aWETH": { + "kovan": { + "address": "0xC304Ee9c505e4Aa890E4738df1cd51eF344AE1af" + } + }, + "strategyWETH": { + "kovan": { + "address": "0x6dcb41D1EA0e01d5b411B51459F14c8DEe0271B1" + } + }, + "aYFI": { + "kovan": { + "address": "0xb88b11E148741c7182e3dF7f50f445174BFA6C80" + } + }, + "strategyYFI": { + "kovan": { + "address": "0x0bDd002c01D54129ef2D258Ce39fEeC63E37d0DF" + } + }, + "stableDebtZRX": { + "kovan": { + "address": "0x76309814279AbD6bfCA3722Db8dEC502F98012E1" + } + }, + "variableDebtZRX": { + "kovan": { + "address": "0x818215a596C8Cc8D27A4dC76c12e8A138570ed9B" + } + }, + "aZRX": { + "kovan": { + "address": "0x66Bf0A6886AC7024015C8020B0aFEdacD41b60c3" + } + }, + "strategyZRX": { + "kovan": { + "address": "0xC0499607b25dd626DF59343d7fCF246E4D875136" + } } } \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index 76c6e3c9..c30336fb 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -8,13 +8,14 @@ import {BUIDLEREVM_CHAINID, COVERAGE_CHAINID} from './helpers/buidler-constants' import '@nomiclabs/hardhat-ethers'; import '@nomiclabs/hardhat-waffle'; -import '@nomiclabs/hardhat-etherscan'; +import 'temp-hardhat-etherscan'; import 'hardhat-gas-reporter'; import 'hardhat-typechain'; const SKIP_LOAD = process.env.SKIP_LOAD === 'true'; const DEFAULT_BLOCK_GAS_LIMIT = 12450000; -const DEFAULT_GAS_PRICE = 10; +const DEFAULT_GAS_MUL = 2; +const DEFAULT_GAS_PRICE = 2000000000; const HARDFORK = 'istanbul'; const INFURA_KEY = process.env.INFURA_KEY || ''; const ETHERSCAN_KEY = process.env.ETHERSCAN_KEY || ''; @@ -40,7 +41,8 @@ const getCommonNetworkConfig = (networkName: eEthereumNetwork, networkId: number url: `https://${networkName}.infura.io/v3/${INFURA_KEY}`, hardfork: HARDFORK, blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT, - gasMultiplier: DEFAULT_GAS_PRICE, + gasMultiplier: DEFAULT_GAS_MUL, + gasPrice: DEFAULT_GAS_PRICE, chainId: networkId, accounts: { mnemonic: MNEMONIC, diff --git a/helpers/configuration.ts b/helpers/configuration.ts index 25e47c62..68c2db4e 100644 --- a/helpers/configuration.ts +++ b/helpers/configuration.ts @@ -53,7 +53,9 @@ export const getReservesConfigByPool = (pool: AavePools): iMultiPoolsAssets { +export const getGenesisPoolAdmin = async ( + config: ICommonConfiguration +): Promise => { const currentNetwork = DRE.network.name; const targetAddress = getParamPerNetwork(config.PoolAdmin, currentNetwork); if (targetAddress) { @@ -66,7 +68,9 @@ export const getGenesisPoolAdmin = async (config: ICommonConfiguration) => { return addressList[addressIndex]; }; -export const getEmergencyAdmin = async (config: ICommonConfiguration) => { +export const getEmergencyAdmin = async ( + config: ICommonConfiguration +): Promise => { const currentNetwork = DRE.network.name; const targetAddress = getParamPerNetwork(config.EmergencyAdmin, currentNetwork); if (targetAddress) { diff --git a/helpers/contracts-deployments.ts b/helpers/contracts-deployments.ts index af4dd3c9..f61e1dcd 100644 --- a/helpers/contracts-deployments.ts +++ b/helpers/contracts-deployments.ts @@ -48,7 +48,12 @@ import { Weth9MockedFactory, WethGatewayFactory, } from '../types'; -import {withSaveAndVerify, registerContractInJsonDb, linkBytecode} from './contracts-helpers'; +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'; @@ -76,13 +81,21 @@ export const deployLendingPoolAddressesProviderRegistry = async (verify?: boolea verify ); -export const deployLendingPoolConfigurator = async (verify?: boolean) => - withSaveAndVerify( - await new LendingPoolConfiguratorFactory(await getFirstSigner()).deploy(), +export const deployLendingPoolConfigurator = async (verify?: boolean) => { + const lendingPoolConfiguratorImpl = await new LendingPoolConfiguratorFactory( + await getFirstSigner() + ).deploy(); + await insertContractAddressInDb( + eContractid.LendingPoolConfiguratorImpl, + lendingPoolConfiguratorImpl.address + ); + return withSaveAndVerify( + lendingPoolConfiguratorImpl, eContractid.LendingPoolConfigurator, [], verify ); +}; export const deployReserveLogicLibrary = async (verify?: boolean) => withSaveAndVerify( @@ -156,12 +169,9 @@ export const deployAaveLibraries = async ( export const deployLendingPool = async (verify?: boolean) => { const libraries = await deployAaveLibraries(verify); - return withSaveAndVerify( - await new LendingPoolFactory(libraries, await getFirstSigner()).deploy(), - eContractid.LendingPool, - [], - verify - ); + const lendingPoolImpl = await new LendingPoolFactory(libraries, await getFirstSigner()).deploy(); + await insertContractAddressInDb(eContractid.LendingPoolImpl, lendingPoolImpl.address); + return withSaveAndVerify(lendingPoolImpl, eContractid.LendingPool, [], verify); }; export const deployPriceOracle = async (verify?: boolean) => @@ -200,8 +210,15 @@ export const deployChainlinkProxyPriceProvider = async ( ); export const deployLendingPoolCollateralManager = async (verify?: boolean) => { + const collateralManagerImpl = await new LendingPoolCollateralManagerFactory( + await getFirstSigner() + ).deploy(); + await insertContractAddressInDb( + eContractid.LendingPoolCollateralManagerImpl, + collateralManagerImpl.address + ); return withSaveAndVerify( - await new LendingPoolCollateralManagerFactory(await getFirstSigner()).deploy(), + collateralManagerImpl, eContractid.LendingPoolCollateralManager, [], verify diff --git a/helpers/contracts-getters.ts b/helpers/contracts-getters.ts index 74b8564b..bad1db2d 100644 --- a/helpers/contracts-getters.ts +++ b/helpers/contracts-getters.ts @@ -4,8 +4,10 @@ import { ATokensAndRatesHelperFactory, DefaultReserveInterestRateStrategyFactory, GenericLogicFactory, + InitializableAdminUpgradeabilityProxyFactory, LendingPoolAddressesProviderFactory, LendingPoolAddressesProviderRegistryFactory, + LendingPoolCollateralManagerFactory, LendingPoolConfiguratorFactory, LendingPoolFactory, LendingRateOracleFactory, @@ -20,11 +22,13 @@ import { StableAndVariableTokensHelperFactory, StableDebtTokenFactory, VariableDebtTokenFactory, + WalletBalanceProviderFactory, Weth9Factory, Weth9MockedFactory, WethGatewayFactory, } from '../types'; import {Ierc20DetailedFactory} from '../types/Ierc20DetailedFactory'; +import {UpgradeabilityProxy} from '../types/UpgradeabilityProxy'; import {MockTokenMap} from './contracts-helpers'; import {DRE, getDb} from './misc-utils'; import {eContractid, PoolConfiguration, tEthereumAddress, TokenContractId} from './types'; @@ -271,3 +275,51 @@ export const getSelfdestructTransferMock = async (address?: tEthereumAddress) => .address, await getFirstSigner() ); + +export const getProxy = async (address: tEthereumAddress) => + await InitializableAdminUpgradeabilityProxyFactory.connect(address, await getFirstSigner()); + +export const getLendingPoolImpl = async (address?: tEthereumAddress) => + await LendingPoolFactory.connect( + address || + (await getDb().get(`${eContractid.LendingPoolImpl}.${DRE.network.name}`).value()).address, + await getFirstSigner() + ); + +export const getLendingPoolConfiguratorImpl = async (address?: tEthereumAddress) => + await LendingPoolConfiguratorFactory.connect( + address || + (await getDb().get(`${eContractid.LendingPoolConfiguratorImpl}.${DRE.network.name}`).value()) + .address, + await getFirstSigner() + ); + +export const getLendingPoolCollateralManagerImpl = async (address?: tEthereumAddress) => + await LendingPoolCollateralManagerFactory.connect( + address || + ( + await getDb() + .get(`${eContractid.LendingPoolCollateralManagerImpl}.${DRE.network.name}`) + .value() + ).address, + await getFirstSigner() + ); + +export const getWalletProvider = async (address?: tEthereumAddress) => + await WalletBalanceProviderFactory.connect( + address || + (await getDb().get(`${eContractid.WalletBalanceProvider}.${DRE.network.name}`).value()) + .address, + await getFirstSigner() + ); + +export const getLendingPoolCollateralManager = async (address?: tEthereumAddress) => + await LendingPoolCollateralManagerFactory.connect( + address || + (await getDb().get(`${eContractid.LendingPoolCollateralManager}.${DRE.network.name}`).value()) + .address, + await getFirstSigner() + ); + +export const getAddressById = async (id: string) => + (await getDb().get(`${id}.${DRE.network.name}`).value()).address; diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts index 25624634..ba8ee5d1 100644 --- a/helpers/contracts-helpers.ts +++ b/helpers/contracts-helpers.ts @@ -49,6 +49,13 @@ export const insertContractAddressInDb = async (id: eContractid, address: tEther }) .write(); +export const rawInsertContractAddressInDb = async (id: string, address: tEthereumAddress) => + await getDb() + .set(`${id}.${DRE.network.name}`, { + address, + }) + .write(); + export const getEthersSigners = async (): Promise => await Promise.all(await DRE.ethers.getSigners()); @@ -83,7 +90,7 @@ export const withSaveAndVerify = async ( await waitForTx(instance.deployTransaction); await registerContractInJsonDb(id, instance); if (verify) { - await verifyContract(id, instance.address, args); + await verifyContract(instance.address, args); } return instance; }; diff --git a/helpers/etherscan-verification.ts b/helpers/etherscan-verification.ts index 02fe6c52..902cb2fe 100644 --- a/helpers/etherscan-verification.ts +++ b/helpers/etherscan-verification.ts @@ -1,36 +1,26 @@ import {exit} from 'process'; import fs from 'fs'; -import globby from 'globby'; import {file} from 'tmp-promise'; import {DRE} from './misc-utils'; -const listSolidityFiles = (dir: string) => globby(`${dir}/**/*.sol`); - const fatalErrors = [ `The address provided as argument contains a contract, but its bytecode`, `Daily limit of 100 source code submissions reached`, + `has no bytecode. Is the contract deployed to this network`, + `The constructor for`, ]; +const okErrors = [`Contract source code already verified`]; + +const unableVerifyError = 'Fail - Unable to verify'; + export const SUPPORTED_ETHERSCAN_NETWORKS = ['main', 'ropsten', 'kovan']; -export const getEtherscanPath = async (contractName: string) => { - const paths = await listSolidityFiles(DRE.config.paths.sources); - const path = paths.find((p) => p.includes(contractName)); - if (!path) { - throw new Error( - `Contract path not found for ${contractName}. Check if smart contract file is equal to contractName input.` - ); - } - - return `${path}:${contractName}`; -}; - function delay(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); } export const verifyContract = async ( - contractName: string, address: string, constructorArguments: (string | string[])[], libraries?: string @@ -45,14 +35,13 @@ export const verifyContract = async ( `Current network ${currentNetwork} not supported. Please change to one of the next networks: ${SUPPORTED_ETHERSCAN_NETWORKS.toString()}` ); } - const etherscanPath = await getEtherscanPath(contractName); try { console.log( '[ETHERSCAN][WARNING] Delaying Etherscan verification due their API can not find newly deployed contracts' ); const msDelay = 3000; - const times = 15; + const times = 4; // Write a temporal file to host complex parameters for buidler-etherscan https://github.com/nomiclabs/buidler/tree/development/packages/buidler-etherscan#complex-arguments const {fd, path, cleanup} = await file({ prefix: 'verify-params-', @@ -61,10 +50,10 @@ export const verifyContract = async ( fs.writeSync(fd, `module.exports = ${JSON.stringify([...constructorArguments])};`); const params = { - contractName: etherscanPath, address: address, libraries, constructorArgs: path, + relatedSources: true, }; await runTaskWithRetry('verify', params, times, msDelay, cleanup); } catch (error) {} @@ -81,7 +70,12 @@ export const runTaskWithRetry = async ( await delay(msDelay); try { - if (times) { + if (times > 1) { + await DRE.run(task, params); + cleanup(); + } else if (times === 1) { + console.log('[ETHERSCAN][WARNING] Trying to verify via uploading all sources.'); + delete params.relatedSources; await DRE.run(task, params); cleanup(); } else { @@ -92,16 +86,26 @@ export const runTaskWithRetry = async ( } } catch (error) { counter--; - console.info(`[ETHERSCAN][[INFO] Retrying attemps: ${counter}.`); - console.error('[ETHERSCAN][[ERROR]', error.message); - if (fatalErrors.some((fatalError) => error.message.includes(fatalError))) { - console.error( - '[ETHERSCAN][[ERROR] Fatal error detected, skip retries and resume deployment.' - ); + if (okErrors.some((okReason) => error.message.includes(okReason))) { + console.info('[ETHERSCAN][INFO] Skipping due OK response: ', error.message); return; } + if (fatalErrors.some((fatalError) => error.message.includes(fatalError))) { + console.error( + '[ETHERSCAN][ERROR] Fatal error detected, skip retries and resume deployment.', + error.message + ); + return; + } + console.error('[ETHERSCAN][ERROR]', error.message); + console.log(); + console.info(`[ETHERSCAN][[INFO] Retrying attemps: ${counter}.`); + if (error.message.includes(unableVerifyError)) { + console.log('[ETHERSCAN][WARNING] Trying to verify via uploading all sources.'); + delete params.relatedSources; + } await runTaskWithRetry(task, params, counter, msDelay, cleanup); } }; diff --git a/helpers/init-helpers.ts b/helpers/init-helpers.ts index c4aa3978..dd6f3fe3 100644 --- a/helpers/init-helpers.ts +++ b/helpers/init-helpers.ts @@ -1,4 +1,4 @@ -import {iMultiPoolsAssets, IReserveParams, tEthereumAddress} from './types'; +import {eContractid, iMultiPoolsAssets, IReserveParams, tEthereumAddress} from './types'; import {LendingPoolConfigurator} from '../types/LendingPoolConfigurator'; import {AaveProtocolTestHelpers} from '../types/AaveProtocolTestHelpers'; import { @@ -11,6 +11,7 @@ import { getLendingPoolAddressesProvider, getStableAndVariableTokensHelper, } from './contracts-getters'; +import {insertContractAddressInDb, rawInsertContractAddressInDb} from './contracts-helpers'; export const initReservesByHelper = async ( reservesParams: iMultiPoolsAssets, @@ -89,12 +90,15 @@ export const initReservesByHelper = async ( reservesDecimals.push(reserveDecimals); } - // Deploy stable and variable deployers + // Deploy stable and variable deployers and save implementations const tx1 = await waitForTx( await stableAndVariableDeployer.initDeployment(tokens, symbols, incentivesController) ); - - // Deploy atokens and rate strategies + tx1.events?.forEach((event, index) => { + rawInsertContractAddressInDb(`stableDebt${symbols[index]}`, event?.args?.stableToken); + rawInsertContractAddressInDb(`variableDebt${symbols[index]}`, event?.args?.variableToken); + }); + // Deploy atokens and rate strategies and save implementations const tx2 = await waitForTx( await atokenAndRatesDeployer.initDeployment( tokens, @@ -103,6 +107,11 @@ export const initReservesByHelper = async ( incentivesController ) ); + tx2.events?.forEach((event, index) => { + rawInsertContractAddressInDb(`a${symbols[index]}`, event?.args?.aToken); + rawInsertContractAddressInDb(`strategy${symbols[index]}`, event?.args?.strategy); + }); + console.log(` - Deployed aToken, DebtTokens and Strategy for: ${symbols.join(', ')} `); const stableTokens: string[] = tx1.events?.map((e) => e.args?.stableToken) || []; const variableTokens: string[] = tx1.events?.map((e) => e.args?.variableToken) || []; diff --git a/helpers/types.ts b/helpers/types.ts index df6f4afc..3d1a0e3b 100644 --- a/helpers/types.ts +++ b/helpers/types.ts @@ -64,6 +64,9 @@ export enum eContractid { WETH = 'WETH', WETHMocked = 'WETHMocked', SelfdestructTransferMock = 'SelfdestructTransferMock', + LendingPoolImpl = 'LendingPoolImpl', + LendingPoolConfiguratorImpl = 'LendingPoolConfiguratorImpl', + LendingPoolCollateralManagerImpl = 'LendingPoolCollateralManagerImpl', } /* diff --git a/package-lock.json b/package-lock.json index 4dd77f10..ca272b63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1115,253 +1115,6 @@ "integrity": "sha512-fIi6XP9PgKqwSNVcLDr6S5hvGlc21PendaLD5eGdXEXc9aYQ0OJX8Mk3evs+p78x7W9n9U3ZcKtTiGc1+YScDw==", "dev": true }, - "@nomiclabs/hardhat-etherscan": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.0.0.tgz", - "integrity": "sha512-bPFxhoyDmhbguhEk2Fco6flXmcV4Cca9V1qEi/hhrTJSxUQf52LcB5WbxLSCPl79oHFKvcRoKVmpK+CUkeYAHA==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.0.2", - "@ethersproject/address": "^5.0.2", - "cbor": "^5.0.2", - "fs-extra": "^7.0.1", - "node-fetch": "^2.6.0", - "semver": "^6.3.0" - }, - "dependencies": { - "@ethersproject/abi": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", - "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", - "dev": true, - "requires": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/hash": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/strings": "^5.0.4" - } - }, - "@ethersproject/abstract-provider": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.5.tgz", - "integrity": "sha512-i/CjElAkzV7vQBAeoz+IpjGfcFYEP9eD7j3fzZ0fzTq03DO7PPnR+xkEZ1IoDXGwDS+55aLM1xvLDwB/Lx6IOQ==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/networks": "^5.0.3", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/transactions": "^5.0.5", - "@ethersproject/web": "^5.0.6" - } - }, - "@ethersproject/abstract-signer": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.7.tgz", - "integrity": "sha512-8W8gy/QutEL60EoMEpvxZ8MFAEWs/JvH5nmZ6xeLXoZvmBCasGmxqHdYjo2cxg0nevkPkq9SeenSsBBZSCx+SQ==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3" - } - }, - "@ethersproject/address": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.5.tgz", - "integrity": "sha512-DpkQ6rwk9jTefrRsJzEm6nhRiJd9pvhn1xN0rw5N/jswXG5r7BLk/GVA0mMAVWAsYfvi2xSc5L41FMox43RYEA==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/rlp": "^5.0.3", - "bn.js": "^4.4.0" - } - }, - "@ethersproject/base64": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.4.tgz", - "integrity": "sha512-4KRykQ7BQMeOXfvio1YITwHjxwBzh92UoXIdzxDE1p53CK28bbHPdsPNYo0wl0El7lJAMpT2SOdL0hhbWRnyIA==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.0.4" - } - }, - "@ethersproject/bignumber": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.8.tgz", - "integrity": "sha512-KXFVAFKS1jdTXYN8BE5Oj+ZfPMh28iRdFeNGBVT6cUFdtiPVqeXqc0ggvBqA3A1VoFFGgM7oAeaagA393aORHA==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "bn.js": "^4.4.0" - } - }, - "@ethersproject/bytes": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.5.tgz", - "integrity": "sha512-IEj9HpZB+ACS6cZ+QQMTqmu/cnUK2fYNE6ms/PVxjoBjoxc6HCraLpam1KuRvreMy0i523PLmjN8OYeikRdcUQ==", - "dev": true, - "requires": { - "@ethersproject/logger": "^5.0.5" - } - }, - "@ethersproject/constants": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.5.tgz", - "integrity": "sha512-foaQVmxp2+ik9FrLUCtVrLZCj4M3Ibgkqvh+Xw/vFRSerkjVSYePApaVE5essxhoSlF1U9oXfWY09QI2AXtgKA==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.0.7" - } - }, - "@ethersproject/hash": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.6.tgz", - "integrity": "sha512-Gvh57v6BWhwnud6l7tMfQm32PRQ2DYx2WaAAQmAxAfYvmzUkpQCBstnGeNMXIL8/2wdkvcB2u+WZRWaZtsFuUQ==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.0.6", - "@ethersproject/address": "^5.0.5", - "@ethersproject/bignumber": "^5.0.8", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.4", - "@ethersproject/strings": "^5.0.4" - } - }, - "@ethersproject/keccak256": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.4.tgz", - "integrity": "sha512-GNpiOUm9PGUxFNqOxYKDQBM0u68bG9XC9iOulEQ8I0tOx/4qUpgVzvgXL6ugxr0RY554Gz/NQsVqknqPzUcxpQ==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.0.4", - "js-sha3": "0.5.7" - } - }, - "@ethersproject/logger": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.6.tgz", - "integrity": "sha512-FrX0Vnb3JZ1md/7GIZfmJ06XOAA8r3q9Uqt9O5orr4ZiksnbpXKlyDzQtlZ5Yv18RS8CAUbiKH9vwidJg1BPmQ==", - "dev": true - }, - "@ethersproject/networks": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.4.tgz", - "integrity": "sha512-/wHDTRms5mpJ09BoDrbNdFWINzONe05wZRgohCXvEv39rrH/Gd/yAnct8wC0RsW3tmFOgjgQxuBvypIxuUynTw==", - "dev": true, - "requires": { - "@ethersproject/logger": "^5.0.5" - } - }, - "@ethersproject/properties": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.4.tgz", - "integrity": "sha512-UdyX3GqBxFt15B0uSESdDNmhvEbK3ACdDXl2soshoPcneXuTswHDeA0LoPlnaZzhbgk4p6jqb4GMms5C26Qu6A==", - "dev": true, - "requires": { - "@ethersproject/logger": "^5.0.5" - } - }, - "@ethersproject/rlp": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.4.tgz", - "integrity": "sha512-5qrrZad7VTjofxSsm7Zg/7Dr4ZOln4S2CqiDdOuTv6MBKnXj0CiBojXyuDy52M8O3wxH0CyE924hXWTDV1PQWQ==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5" - } - }, - "@ethersproject/signing-key": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.5.tgz", - "integrity": "sha512-Z1wY7JC1HVO4CvQWY2TyTTuAr8xK3bJijZw1a9G92JEmKdv1j255R/0YLBBcFTl2J65LUjtXynNJ2GbArPGi5g==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "elliptic": "6.5.3" - } - }, - "@ethersproject/strings": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.5.tgz", - "integrity": "sha512-JED6WaIV00xM/gvj8vSnd+0VWtDYdidTmavFRCTQakqfz+4tDo6Jz5LHgG+dd45h7ah7ykCHW0C7ZXWEDROCXQ==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/logger": "^5.0.5" - } - }, - "@ethersproject/transactions": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.6.tgz", - "integrity": "sha512-htsFhOD+NMBxx676A8ehSuwVV49iqpSB+CkjPZ02tpNew0K6p8g0CZ46Z1ZP946gIHAU80xQ0NACHYrjIUaCFA==", - "dev": true, - "requires": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/rlp": "^5.0.3", - "@ethersproject/signing-key": "^5.0.4" - } - }, - "@ethersproject/web": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.9.tgz", - "integrity": "sha512-//QNlv1MSkOII1hv3+HQwWoiVFS+BMVGI0KYeUww4cyrEktnx1QIez5bTSab9s9fWTFaWKNmQNBwMbxAqPuYDw==", - "dev": true, - "requires": { - "@ethersproject/base64": "^5.0.3", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/strings": "^5.0.4" - } - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true - } - } - }, "@nomiclabs/hardhat-waffle": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.0.tgz", @@ -8058,9 +7811,9 @@ }, "dependencies": { "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "optional": true, "requires": { @@ -13843,16 +13596,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "scrypt": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/scrypt/-/scrypt-6.0.3.tgz", - "integrity": "sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0=", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.0.8" - } - }, "scrypt-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", @@ -15354,9 +15097,9 @@ }, "dependencies": { "@types/node": { - "version": "12.12.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.53.tgz", - "integrity": "sha512-51MYTDTyCziHb70wtGNFRwB4l+5JNvdqzFSkbDvpbftEgVUBEE+T5f7pROhWMp/fxp07oNIEQZd5bbfAH22ohQ==", + "version": "12.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.3.tgz", + "integrity": "sha512-8Jduo8wvvwDzEVJCOvS/G6sgilOLvvhn1eMmK3TW8/T217O7u1jdrK6ImKLv80tVryaPSVeKu6sjDEiFjd4/eg==", "dev": true, "optional": true } @@ -19464,6 +19207,16 @@ } } }, + "scrypt": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/scrypt/-/scrypt-6.0.3.tgz", + "integrity": "sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0=", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.0.8" + } + }, "scrypt-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", @@ -20264,6 +20017,254 @@ } } }, + "temp-hardhat-etherscan": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/temp-hardhat-etherscan/-/temp-hardhat-etherscan-2.0.2.tgz", + "integrity": "sha512-q9+OMPXlsXZ+2fnF+Xmvv0J9vNJChwOXVGJIATiDJr7Qe8LzTwgs55C4l4NKMWPLe4PE9UjcQMVntRfXGTF9vA==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.0.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^5.0.2", + "fs-extra": "^7.0.1", + "lodash": "^4.17.11", + "node-fetch": "^2.6.0", + "semver": "^6.3.0" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", + "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/hash": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.5.tgz", + "integrity": "sha512-i/CjElAkzV7vQBAeoz+IpjGfcFYEP9eD7j3fzZ0fzTq03DO7PPnR+xkEZ1IoDXGwDS+55aLM1xvLDwB/Lx6IOQ==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/networks": "^5.0.3", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/transactions": "^5.0.5", + "@ethersproject/web": "^5.0.6" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.7.tgz", + "integrity": "sha512-8W8gy/QutEL60EoMEpvxZ8MFAEWs/JvH5nmZ6xeLXoZvmBCasGmxqHdYjo2cxg0nevkPkq9SeenSsBBZSCx+SQ==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3" + } + }, + "@ethersproject/address": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.5.tgz", + "integrity": "sha512-DpkQ6rwk9jTefrRsJzEm6nhRiJd9pvhn1xN0rw5N/jswXG5r7BLk/GVA0mMAVWAsYfvi2xSc5L41FMox43RYEA==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/rlp": "^5.0.3", + "bn.js": "^4.4.0" + } + }, + "@ethersproject/base64": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.4.tgz", + "integrity": "sha512-4KRykQ7BQMeOXfvio1YITwHjxwBzh92UoXIdzxDE1p53CK28bbHPdsPNYo0wl0El7lJAMpT2SOdL0hhbWRnyIA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.4" + } + }, + "@ethersproject/bignumber": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.8.tgz", + "integrity": "sha512-KXFVAFKS1jdTXYN8BE5Oj+ZfPMh28iRdFeNGBVT6cUFdtiPVqeXqc0ggvBqA3A1VoFFGgM7oAeaagA393aORHA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "bn.js": "^4.4.0" + } + }, + "@ethersproject/bytes": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.5.tgz", + "integrity": "sha512-IEj9HpZB+ACS6cZ+QQMTqmu/cnUK2fYNE6ms/PVxjoBjoxc6HCraLpam1KuRvreMy0i523PLmjN8OYeikRdcUQ==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.0.5" + } + }, + "@ethersproject/constants": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.5.tgz", + "integrity": "sha512-foaQVmxp2+ik9FrLUCtVrLZCj4M3Ibgkqvh+Xw/vFRSerkjVSYePApaVE5essxhoSlF1U9oXfWY09QI2AXtgKA==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.0.7" + } + }, + "@ethersproject/hash": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.6.tgz", + "integrity": "sha512-Gvh57v6BWhwnud6l7tMfQm32PRQ2DYx2WaAAQmAxAfYvmzUkpQCBstnGeNMXIL8/2wdkvcB2u+WZRWaZtsFuUQ==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.0.6", + "@ethersproject/address": "^5.0.5", + "@ethersproject/bignumber": "^5.0.8", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.4", + "@ethersproject/strings": "^5.0.4" + } + }, + "@ethersproject/keccak256": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.4.tgz", + "integrity": "sha512-GNpiOUm9PGUxFNqOxYKDQBM0u68bG9XC9iOulEQ8I0tOx/4qUpgVzvgXL6ugxr0RY554Gz/NQsVqknqPzUcxpQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.4", + "js-sha3": "0.5.7" + } + }, + "@ethersproject/logger": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.6.tgz", + "integrity": "sha512-FrX0Vnb3JZ1md/7GIZfmJ06XOAA8r3q9Uqt9O5orr4ZiksnbpXKlyDzQtlZ5Yv18RS8CAUbiKH9vwidJg1BPmQ==", + "dev": true + }, + "@ethersproject/networks": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.4.tgz", + "integrity": "sha512-/wHDTRms5mpJ09BoDrbNdFWINzONe05wZRgohCXvEv39rrH/Gd/yAnct8wC0RsW3tmFOgjgQxuBvypIxuUynTw==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.0.5" + } + }, + "@ethersproject/properties": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.4.tgz", + "integrity": "sha512-UdyX3GqBxFt15B0uSESdDNmhvEbK3ACdDXl2soshoPcneXuTswHDeA0LoPlnaZzhbgk4p6jqb4GMms5C26Qu6A==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.0.5" + } + }, + "@ethersproject/rlp": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.4.tgz", + "integrity": "sha512-5qrrZad7VTjofxSsm7Zg/7Dr4ZOln4S2CqiDdOuTv6MBKnXj0CiBojXyuDy52M8O3wxH0CyE924hXWTDV1PQWQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5" + } + }, + "@ethersproject/signing-key": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.5.tgz", + "integrity": "sha512-Z1wY7JC1HVO4CvQWY2TyTTuAr8xK3bJijZw1a9G92JEmKdv1j255R/0YLBBcFTl2J65LUjtXynNJ2GbArPGi5g==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "elliptic": "6.5.3" + } + }, + "@ethersproject/strings": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.5.tgz", + "integrity": "sha512-JED6WaIV00xM/gvj8vSnd+0VWtDYdidTmavFRCTQakqfz+4tDo6Jz5LHgG+dd45h7ah7ykCHW0C7ZXWEDROCXQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/logger": "^5.0.5" + } + }, + "@ethersproject/transactions": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.6.tgz", + "integrity": "sha512-htsFhOD+NMBxx676A8ehSuwVV49iqpSB+CkjPZ02tpNew0K6p8g0CZ46Z1ZP946gIHAU80xQ0NACHYrjIUaCFA==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/rlp": "^5.0.3", + "@ethersproject/signing-key": "^5.0.4" + } + }, + "@ethersproject/web": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.9.tgz", + "integrity": "sha512-//QNlv1MSkOII1hv3+HQwWoiVFS+BMVGI0KYeUww4cyrEktnx1QIez5bTSab9s9fWTFaWKNmQNBwMbxAqPuYDw==", + "dev": true, + "requires": { + "@ethersproject/base64": "^5.0.3", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", + "dev": true + } + } + }, "test-value": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", diff --git a/package.json b/package.json index 8ab08ee2..e3786fc7 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,10 @@ "print-contracts:kovan": "npm run hardhat:kovan -- print-contracts", "print-contracts:main": "npm run hardhat:main -- print-contracts", "print-contracts:ropsten": "npm run hardhat:main -- print-contracts", - "dev:deployUIProvider": "npm run buidler:kovan deploy-UiPoolDataProvider" + "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" }, "devDependencies": { "@nomiclabs/buidler": "^1.4.7", @@ -61,7 +64,6 @@ "@nomiclabs/buidler-etherscan": "^2.1.0", "@nomiclabs/buidler-waffle": "2.0.0", "@nomiclabs/hardhat-ethers": "^2.0.0", - "@nomiclabs/hardhat-etherscan": "^2.0.0", "@nomiclabs/hardhat-waffle": "^2.0.0", "@openzeppelin/contracts": "3.1.0", "@typechain/ethers-v4": "1.0.0", @@ -93,6 +95,7 @@ "prettier-plugin-solidity": "^1.0.0-alpha.53", "pretty-quick": "^2.0.1", "solidity-coverage": "0.7.10", + "temp-hardhat-etherscan": "^2.0.2", "ts-generator": "0.0.8", "ts-node": "^8.10.2", "tslint": "^6.1.2", diff --git a/tasks/full/6_verify.ts b/tasks/full/6_verify.ts new file mode 100644 index 00000000..fe10b83a --- /dev/null +++ b/tasks/full/6_verify.ts @@ -0,0 +1,179 @@ +import {zeroAddress} from 'ethereumjs-util'; +import {task} from 'hardhat/config'; +import {loadPoolConfig, ConfigNames, getWethAddress} from '../../helpers/configuration'; +import {ZERO_ADDRESS} from '../../helpers/constants'; +import { + getAaveProtocolTestHelpers, + getAddressById, + getLendingPool, + getLendingPoolAddressesProvider, + getLendingPoolAddressesProviderRegistry, + getLendingPoolCollateralManager, + getLendingPoolCollateralManagerImpl, + getLendingPoolConfiguratorImpl, + getLendingPoolConfiguratorProxy, + getLendingPoolImpl, + getWalletProvider, + getWETHGateway, +} from '../../helpers/contracts-getters'; +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') + .addFlag('all', 'Verify all contracts at Etherscan') + .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 addressesProviderRegistry = await getLendingPoolAddressesProviderRegistry(); + const lendingPoolProxy = await getLendingPool(); + const lendingPoolConfigurator = await getLendingPoolConfiguratorProxy(); + const lendingPoolCollateralManager = await getLendingPoolCollateralManager(); + + if (!verify) { + return; + } + if (all) { + const lendingPoolImpl = await getLendingPoolImpl(); + const lendingPoolConfiguratorImpl = await getLendingPoolConfiguratorImpl(); + const lendingPoolCollateralManagerImpl = await getLendingPoolCollateralManagerImpl(); + const testHelpers = await getAaveProtocolTestHelpers(); + const walletProvider = await getWalletProvider(); + const wethGateway = await getWETHGateway(); + + // Address Provider + console.log('\n- Verifying address provider...\n'); + await verifyContract(addressesProvider.address, []); + + // Address Provider Registry + console.log('\n- Verifying address provider registry...\n'); + await verifyContract(addressesProviderRegistry.address, []); + + // Lending Pool implementation + console.log('\n- Verifying LendingPool Implementation...\n'); + await verifyContract(lendingPoolImpl.address, []); + + // Lending Pool Configurator implementation + console.log('\n- Verifying LendingPool Configurator Implementation...\n'); + await verifyContract(lendingPoolConfiguratorImpl.address, []); + + // Lending Pool Collateral Manager implementation + console.log('\n- Verifying LendingPool Collateral Manager Implementation...\n'); + await verifyContract(lendingPoolCollateralManagerImpl.address, []); + + // Test helpers + console.log('\n- Verifying Aave Helpers...\n'); + await verifyContract(testHelpers.address, [addressesProvider.address]); + + // Wallet balance provider + console.log('\n- Verifying Wallet Balance Provider...\n'); + await verifyContract(walletProvider.address, [addressesProvider.address]); + + // WETHGateway + console.log('\n- Verifying WETHGateway...\n'); + await verifyContract(wethGateway.address, [ + await getWethAddress(poolConfig), + lendingPoolProxy.address, + ]); + } + // Lending Pool proxy + console.log('\n- Verifying Lending Pool Proxy...\n'); + await verifyContract(lendingPoolProxy.address, [addressesProvider.address]); + + // LendingPool Conf proxy + console.log('\n- Verifying Lending Pool Configurator Proxy...\n'); + await verifyContract(lendingPoolConfigurator.address, [addressesProvider.address]); + + // Proxy collateral manager + console.log('\n- Verifying Lending Pool Collateral Manager Proxy...\n'); + await verifyContract(lendingPoolCollateralManager.address, []); + + // Tokens verification + const DAI = getParamPerNetwork(ReserveAssets, network).DAI; + const stableDebtDai = await getAddressById('stableDebtDAI'); + const variableDebtDai = await getAddressById('variableDebtDAI'); + const aDAI = await getAddressById('aDAI'); + const { + stableDebtTokenAddress, + variableDebtTokenAddress, + aTokenAddress, + interestRateStrategyAddress, + } = await lendingPoolProxy.getReserveData(DAI); + const { + baseVariableBorrowRate, + variableRateSlope1, + variableRateSlope2, + stableRateSlope1, + stableRateSlope2, + } = ReservesConfig.DAI; + + // Proxy Stable Debt + console.log('\n- Verifying DAI Stable Debt Token proxy...\n'); + await verifyContract(stableDebtTokenAddress, [lendingPoolConfigurator.address]); + + // Proxy Variable Debt + console.log('\n- Verifying DAI Variable Debt Token proxy...\n'); + await verifyContract(variableDebtTokenAddress, [lendingPoolConfigurator.address]); + + // Proxy aToken + console.log('\n- Verifying aDAI Token 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, + ]); + + // aToken + console.log('\n- Verifying aToken...\n'); + await verifyContract(aDAI, [ + lendingPoolProxy.address, + DAI, + ZERO_ADDRESS, + 'Aave interest bearing DAI', + 'aDAI', + ZERO_ADDRESS, + ]); + // stableDebtToken + console.log('\n- Verifying StableDebtToken...\n'); + await verifyContract(stableDebtDai, [ + lendingPoolProxy.address, + DAI, + 'Aave stable debt bearing DAI', + 'stableDebtDAI', + ZERO_ADDRESS, + ]); + // variableDebtToken + console.log('\n- Verifying VariableDebtToken...\n'); + await verifyContract(variableDebtDai, [ + lendingPoolProxy.address, + DAI, + 'Aave variable debt bearing DAI', + 'variableDebtDAI', + ZERO_ADDRESS, + ]); + // DelegatedAwareAToken + console.log('\n- Verifying DelegatedAwareAToken...\n'); + const UNI = getParamPerNetwork(ReserveAssets, network).UNI; + const aUNI = await getAddressById('aUNI'); + await verifyContract(aUNI, [ + lendingPoolProxy.address, + UNI, + ZERO_ADDRESS, + 'Aave interest bearing UNI', + 'aUNI', + ZERO_ADDRESS, + ]); + }); diff --git a/tasks/migrations/aave.full.ts b/tasks/migrations/aave.full.ts index 502a77ae..17fb92c6 100644 --- a/tasks/migrations/aave.full.ts +++ b/tasks/migrations/aave.full.ts @@ -20,13 +20,16 @@ task('aave:full', 'Deploy development enviroment') console.log('Migration started\n'); console.log('1. Deploy address provider'); - await localBRE.run('full:deploy-address-provider', {verify, pool: POOL_NAME}); + await localBRE.run('full:deploy-address-provider', {pool: POOL_NAME}); console.log('2. Deploy lending pool'); - await localBRE.run('full:deploy-lending-pool', {verify}); + await localBRE.run('full:deploy-lending-pool'); console.log('3. Initialize lending pool'); - await localBRE.run('full:initialize-lending-pool', {verify, pool: POOL_NAME}); + 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}); console.log('\nFinished migrations'); printContracts(); diff --git a/tasks/misc/verify-sc.ts b/tasks/misc/verify-sc.ts index 854aa36c..81f0970c 100644 --- a/tasks/misc/verify-sc.ts +++ b/tasks/misc/verify-sc.ts @@ -9,7 +9,6 @@ interface VerifyParams { } task('verify-sc', 'Inits the DRE, to have access to all the plugins') - .addParam('contractName', 'Name of the Solidity smart contract') .addParam('address', 'Ethereum address of the smart contract') .addOptionalParam( 'libraries', @@ -20,16 +19,11 @@ task('verify-sc', 'Inits the DRE, to have access to all the plugins') 'arguments for contract constructor', [] ) - .setAction( - async ( - {contractName, address, constructorArguments = [], libraries}: VerifyParams, - localBRE - ) => { - await localBRE.run('set-DRE'); + .setAction(async ({address, constructorArguments = [], libraries}: VerifyParams, localBRE) => { + await localBRE.run('set-DRE'); - checkVerification(); + checkVerification(); - const result = await verifyContract(contractName, address, constructorArguments, libraries); - return result; - } - ); + const result = await verifyContract(address, constructorArguments, libraries); + return result; + });