mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
Merge branch 'feat/hardhat-etherscan-dependency-graph' into 'master'
Upload source dependency graph instead of all source code while etherscan verification See merge request aave-tech/protocol-v2!137
This commit is contained in:
commit
4a836740d0
|
@ -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(
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -53,7 +53,9 @@ export const getReservesConfigByPool = (pool: AavePools): iMultiPoolsAssets<IRes
|
|||
pool
|
||||
);
|
||||
|
||||
export const getGenesisPoolAdmin = async (config: ICommonConfiguration) => {
|
||||
export const getGenesisPoolAdmin = async (
|
||||
config: ICommonConfiguration
|
||||
): Promise<tEthereumAddress> => {
|
||||
const currentNetwork = DRE.network.name;
|
||||
const targetAddress = getParamPerNetwork(config.PoolAdmin, <eEthereumNetwork>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<tEthereumAddress> => {
|
||||
const currentNetwork = DRE.network.name;
|
||||
const targetAddress = getParamPerNetwork(config.EmergencyAdmin, <eEthereumNetwork>currentNetwork);
|
||||
if (targetAddress) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<Signer[]> =>
|
||||
await Promise.all(await DRE.ethers.getSigners());
|
||||
|
||||
|
@ -83,7 +90,7 @@ export const withSaveAndVerify = async <ContractType extends Contract>(
|
|||
await waitForTx(instance.deployTransaction);
|
||||
await registerContractInJsonDb(id, instance);
|
||||
if (verify) {
|
||||
await verifyContract(id, instance.address, args);
|
||||
await verifyContract(instance.address, args);
|
||||
}
|
||||
return instance;
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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<IReserveParams>,
|
||||
|
@ -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) || [];
|
||||
|
|
|
@ -64,6 +64,9 @@ export enum eContractid {
|
|||
WETH = 'WETH',
|
||||
WETHMocked = 'WETHMocked',
|
||||
SelfdestructTransferMock = 'SelfdestructTransferMock',
|
||||
LendingPoolImpl = 'LendingPoolImpl',
|
||||
LendingPoolConfiguratorImpl = 'LendingPoolConfiguratorImpl',
|
||||
LendingPoolCollateralManagerImpl = 'LendingPoolCollateralManagerImpl',
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
527
package-lock.json
generated
527
package-lock.json
generated
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
179
tasks/full/6_verify.ts
Normal file
179
tasks/full/6_verify.ts
Normal file
|
@ -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,
|
||||
]);
|
||||
});
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue
Block a user