diff --git a/config/aave.ts b/config/aave.ts index 1f769d78..9de88a14 100644 --- a/config/aave.ts +++ b/config/aave.ts @@ -58,6 +58,7 @@ export const AaveConfig: IAaveConfiguration = { }, ReserveAssets: { [eEthereumNetwork.buidlerevm]: {}, + [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.coverage]: {}, [EthereumNetwork.kovan]: { WETH: '0xd0a1e359811322d97991e03f863a0c30c2cf029c', diff --git a/config/commons.ts b/config/commons.ts index 66fe5f3e..d807b2d4 100644 --- a/config/commons.ts +++ b/config/commons.ts @@ -133,8 +133,9 @@ export const CommonsConfig: ICommonConfiguration = { // If lendingPoolManagerAddress is set, will take priority over lendingPoolManagerAddressIndex AaveAdmin: { - [eEthereumNetwork.coverage]: undefined, [eEthereumNetwork.buidlerevm]: undefined, + [eEthereumNetwork.coverage]: undefined, + [eEthereumNetwork.hardhat]: undefined, [eEthereumNetwork.kovan]: undefined, [eEthereumNetwork.ropsten]: undefined, [eEthereumNetwork.main]: undefined, @@ -145,10 +146,12 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '', [eEthereumNetwork.main]: '', [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', }, LendingRateOracle: { [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', [eEthereumNetwork.kovan]: '0xdcde9bb6a49e37fa433990832ab541ae2d4feb4a', [eEthereumNetwork.ropsten]: '0x05dcca805a6562c1bdd0423768754acb6993241b', @@ -157,12 +160,14 @@ export const CommonsConfig: ICommonConfiguration = { TokenDistributor: { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.hardhat]: '', [EthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708', [EthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c', [EthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', }, ChainlinkProxyPriceProvider: { [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', [EthereumNetwork.kovan]: '0x276C4793F2EE3D5Bf18C5b879529dD4270BA4814', [EthereumNetwork.ropsten]: '0x657372A559c30d236F011239fF9fbB6D76718271', @@ -170,6 +175,7 @@ export const CommonsConfig: ICommonConfiguration = { }, FallbackOracle: { [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', [EthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe', [EthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d', @@ -177,6 +183,7 @@ export const CommonsConfig: ICommonConfiguration = { }, ChainlinkAggregator: { [eEthereumNetwork.coverage]: {}, + [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.buidlerevm]: {}, [EthereumNetwork.kovan]: { DAI: '0x6F47077D3B6645Cb6fb7A29D280277EC1e5fFD90', @@ -268,6 +275,7 @@ export const CommonsConfig: ICommonConfiguration = { }, ReserveAssets: { [eEthereumNetwork.coverage]: {}, + [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.buidlerevm]: {}, [EthereumNetwork.main]: {}, [EthereumNetwork.kovan]: {}, @@ -277,6 +285,8 @@ export const CommonsConfig: ICommonConfiguration = { ATokenDomainSeparator: { [eEthereumNetwork.coverage]: '0x95b73a72c6ecf4ccbbba5178800023260bad8e75cdccdb8e4827a2977a37c820', + [eEthereumNetwork.hardhat]: + '0x92d0d54f437b6e70937ecba8ac80fc3b6767cf26bc725820e937d5a78427c2d1', [eEthereumNetwork.buidlerevm]: '0x92d0d54f437b6e70937ecba8ac80fc3b6767cf26bc725820e937d5a78427c2d1', [eEthereumNetwork.kovan]: '', @@ -285,6 +295,7 @@ export const CommonsConfig: ICommonConfiguration = { }, ProxyPriceProvider: { [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', [eEthereumNetwork.kovan]: '0x276C4793F2EE3D5Bf18C5b879529dD4270BA4814', [eEthereumNetwork.ropsten]: '', @@ -292,6 +303,7 @@ export const CommonsConfig: ICommonConfiguration = { }, WETH: { [eEthereumNetwork.coverage]: '', // deployed in local evm + [eEthereumNetwork.hardhat]: '', // deployed in local evm [eEthereumNetwork.buidlerevm]: '', // deployed in local evm [eEthereumNetwork.kovan]: '0xd0a1e359811322d97991e03f863a0c30c2cf029c', [eEthereumNetwork.ropsten]: '0xc778417e063141139fce010982780140aa0cd5ab', diff --git a/config/uniswap.ts b/config/uniswap.ts index ae01a991..79adb71f 100644 --- a/config/uniswap.ts +++ b/config/uniswap.ts @@ -146,6 +146,7 @@ export const UniswapConfig: IUniswapConfiguration = { }, ChainlinkAggregator: { [eEthereumNetwork.buidlerevm]: {}, + [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.coverage]: {}, [EthereumNetwork.kovan]: { DAI: '0x6F47077D3B6645Cb6fb7A29D280277EC1e5fFD90', @@ -182,6 +183,7 @@ export const UniswapConfig: IUniswapConfiguration = { }, }, ReserveAssets: { + [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.buidlerevm]: {}, [eEthereumNetwork.coverage]: {}, [EthereumNetwork.kovan]: { diff --git a/deployed-contracts.json b/deployed-contracts.json index 7144c966..46528db6 100644 --- a/deployed-contracts.json +++ b/deployed-contracts.json @@ -3,12 +3,20 @@ "buidlerevm": { "address": "0x18b9306737eaf6E8FC8e737F488a1AE077b18053", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x18b9306737eaf6E8FC8e737F488a1AE077b18053", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "DAI": { "buidlerevm": { "address": "0x7c2C195CD6D34B8F845992d380aADB2730bB9C6F", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x7c2C195CD6D34B8F845992d380aADB2730bB9C6F", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "LEND": { @@ -21,132 +29,220 @@ "buidlerevm": { "address": "0x0078371BDeDE8aAc7DeBfFf451B74c5EDB385Af7", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x0078371BDeDE8aAc7DeBfFf451B74c5EDB385Af7", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "BAT": { "buidlerevm": { "address": "0xf4e77E5Da47AC3125140c470c71cBca77B5c638c", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xf4e77E5Da47AC3125140c470c71cBca77B5c638c", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "WETH": { "buidlerevm": { "address": "0xf784709d2317D872237C4bC22f867d1BAe2913AB", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xf784709d2317D872237C4bC22f867d1BAe2913AB", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "USDC": { "buidlerevm": { "address": "0x3619DbE27d7c1e7E91aA738697Ae7Bc5FC3eACA5", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x3619DbE27d7c1e7E91aA738697Ae7Bc5FC3eACA5", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "USDT": { "buidlerevm": { "address": "0x038B86d9d8FAFdd0a02ebd1A476432877b0107C8", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x038B86d9d8FAFdd0a02ebd1A476432877b0107C8", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "SUSD": { "buidlerevm": { "address": "0x1A1FEe7EeD918BD762173e4dc5EfDB8a78C924A8", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x1A1FEe7EeD918BD762173e4dc5EfDB8a78C924A8", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "ZRX": { "buidlerevm": { "address": "0x500D1d6A4c7D8Ae28240b47c8FCde034D827fD5e", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x500D1d6A4c7D8Ae28240b47c8FCde034D827fD5e", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "MKR": { "buidlerevm": { "address": "0xc4905364b78a742ccce7B890A89514061E47068D", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xc4905364b78a742ccce7B890A89514061E47068D", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "WBTC": { "buidlerevm": { "address": "0xD6C850aeBFDC46D7F4c207e445cC0d6B0919BDBe", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xD6C850aeBFDC46D7F4c207e445cC0d6B0919BDBe", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "LINK": { "buidlerevm": { "address": "0x8B5B7a6055E54a36fF574bbE40cf2eA68d5554b3", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x8B5B7a6055E54a36fF574bbE40cf2eA68d5554b3", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "KNC": { "buidlerevm": { "address": "0xEcc0a6dbC0bb4D51E4F84A315a9e5B0438cAD4f0", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xEcc0a6dbC0bb4D51E4F84A315a9e5B0438cAD4f0", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "MANA": { "buidlerevm": { "address": "0x20Ce94F404343aD2752A2D01b43fa407db9E0D00", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x20Ce94F404343aD2752A2D01b43fa407db9E0D00", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "REP": { "buidlerevm": { "address": "0x1d80315fac6aBd3EfeEbE97dEc44461ba7556160", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x1d80315fac6aBd3EfeEbE97dEc44461ba7556160", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "SNX": { "buidlerevm": { "address": "0x52d3b94181f8654db2530b0fEe1B19173f519C52", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x52d3b94181f8654db2530b0fEe1B19173f519C52", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "BUSD": { "buidlerevm": { "address": "0xd15468525c35BDBC1eD8F2e09A00F8a173437f2f", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xd15468525c35BDBC1eD8F2e09A00F8a173437f2f", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "USD": { "buidlerevm": { "address": "0x7e35Eaf7e8FBd7887ad538D4A38Df5BbD073814a", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x7e35Eaf7e8FBd7887ad538D4A38Df5BbD073814a", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "UNI_DAI_ETH": { "buidlerevm": { "address": "0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "UNI_USDC_ETH": { "buidlerevm": { "address": "0x58F132FBB86E21545A4Bace3C19f1C05d86d7A22", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x58F132FBB86E21545A4Bace3C19f1C05d86d7A22", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "UNI_SETH_ETH": { "buidlerevm": { "address": "0xa4bcDF64Cdd5451b6ac3743B414124A6299B65FF", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xa4bcDF64Cdd5451b6ac3743B414124A6299B65FF", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "UNI_LINK_ETH": { "buidlerevm": { "address": "0x22474D350EC2dA53D717E30b96e9a2B7628Ede5b", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x22474D350EC2dA53D717E30b96e9a2B7628Ede5b", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "UNI_MKR_ETH": { "buidlerevm": { "address": "0x5A0773Ff307Bf7C71a832dBB5312237fD3437f9F", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x5A0773Ff307Bf7C71a832dBB5312237fD3437f9F", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "UNI_LEND_ETH": { "buidlerevm": { "address": "0x18b9306737eaf6E8FC8e737F488a1AE077b18053", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x18b9306737eaf6E8FC8e737F488a1AE077b18053", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "LendingPoolAddressesProvider": { @@ -157,6 +253,10 @@ "kovan": { "address": "0x688C81eC2A0Be6F287fD8C9c343D299c03A34804", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, + "hardhat": { + "address": "0xFAe0fd738dAbc8a0426F47437322b6d026A9FD95", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "LendingPoolAddressesProviderRegistry": { @@ -167,6 +267,10 @@ "kovan": { "address": "0xf189cC1eD07cEFB6e61082104e12673E133163f5", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, + "hardhat": { + "address": "0x8456161947DFc1fC159A0B26c025cD2b4bba0c3e", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "ReserveLogic": { @@ -177,6 +281,10 @@ "kovan": { "address": "0x757855037B01c45832f8d662D217C766Ba4e8e74", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, + "hardhat": { + "address": "0x33958cC3535Fc328369EAC2B2Bebd120D67C7fa1", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "GenericLogic": { @@ -187,6 +295,10 @@ "kovan": { "address": "0xBc013D1412E0F4acacAa64CDc1c93e8A3Ecd8fF4", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, + "hardhat": { + "address": "0x2cBbbBE1B75Ad7848F0844215816F551f429c64f", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "ValidationLogic": { @@ -197,6 +309,10 @@ "kovan": { "address": "0xba681EfB276237903df60ef92D564610A393Dbd6", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, + "hardhat": { + "address": "0xbAc762e2000b6815268587b081Fd17aC25519aD5", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "LendingPool": { @@ -206,6 +322,10 @@ }, "kovan": { "address": "0x59525b17808F0a7eFe62303ca46e596A5a602683" + }, + "hardhat": { + "address": "0xa43Ba00FCA75B805D17f67F9433b971E9a398690", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "LendingPoolConfigurator": { @@ -214,6 +334,9 @@ }, "kovan": { "address": "0x0a9bc0ce44e6473a1B0e30b54b7227de6E75Fd83" + }, + "hardhat": { + "address": "0xdbaA15927b1463EdD14Cf51D082BD7703Fd1C238" } }, "StableAndVariableTokensHelper": { @@ -224,6 +347,10 @@ "kovan": { "address": "0x882AD7981FE3d63200A23F5d009A1d0488b5ea7e", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, + "hardhat": { + "address": "0xE4C10Db67595aF2Cb4166c8C274e0140f7E43059", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "ATokensAndRatesHelper": { @@ -234,30 +361,50 @@ "kovan": { "address": "0x20Bfad73e3A8aA9161b5c553f7825002a175DB23", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, + "hardhat": { + "address": "0x099d9fF8F818290C8b5B7Db5bFca84CEebd2714c", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "PriceOracle": { "buidlerevm": { "address": "0x85bdE212E66e2BAE510E44Ed59116c1eC712795b", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x85bdE212E66e2BAE510E44Ed59116c1eC712795b", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "MockAggregator": { "buidlerevm": { "address": "0x8Dd7f10813aC8fCB83ad7ad94e941D53b002fBc7", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x8Dd7f10813aC8fCB83ad7ad94e941D53b002fBc7", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "ChainlinkProxyPriceProvider": { "buidlerevm": { "address": "0xfA9dbd706c674801F50169f4B5862cCe045408E6", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xfA9dbd706c674801F50169f4B5862cCe045408E6", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "LendingRateOracle": { "buidlerevm": { "address": "0xbFAD7C67855cc0272CC5ED00dAabeFDB31E7190a", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xbFAD7C67855cc0272CC5ED00dAabeFDB31E7190a", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "AaveProtocolTestHelpers": { @@ -267,6 +414,9 @@ "kovan": { "address": "0xe875775D75F384944E77086Ea54bAD008ea8004A", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, + "hardhat": { + "address": "0x93472C0e03215F9c33DA240Eb16703C8244eAa8c" } }, "LendingPoolCollateralManager": { @@ -277,11 +427,18 @@ "kovan": { "address": "0xc072D8A233C8C52239dcD6ab39954240a0699055", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, + "hardhat": { + "address": "0x417fc1038b2AF553D65F4fF2839efE9f93Ec1eac", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "MockFlashLoanReceiver": { "buidlerevm": { "address": "0x0459c841b02Aee8730730C737582c53B20a27288" + }, + "hardhat": { + "address": "0x0459c841b02Aee8730730C737582c53B20a27288" } }, "WalletBalanceProvider": { @@ -292,84 +449,140 @@ "kovan": { "address": "0xf896A27CDd4E3bC101aCEa86cc1cE6b7C91AEFA1", "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" + }, + "hardhat": { + "address": "0x2530ce07D254eA185E8e0bCC37a39e2FbA3bE548", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "MockAToken": { "buidlerevm": { "address": "0x0EBCa695959e5f138Af772FAa44ce1A9C7aEd921", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x7fAeC7791277Ff512c41CA903c177B2Ed952dDAc", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "MockStableDebtToken": { "buidlerevm": { "address": "0x417fc1038b2AF553D65F4fF2839efE9f93Ec1eac", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x33958cC3535Fc328369EAC2B2Bebd120D67C7fa1", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "MockVariableDebtToken": { "buidlerevm": { "address": "0x8BFFF31B1757da579Bb5B118489568526F7fb6D4", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x2cBbbBE1B75Ad7848F0844215816F551f429c64f", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "WETHGateway": { "buidlerevm": { "address": "0x0Cf45557d25a4e4c0F1aC65EF6c48ae67c61a0E6", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x0Cf45557d25a4e4c0F1aC65EF6c48ae67c61a0E6", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "WETHMocked": { "buidlerevm": { "address": "0xf784709d2317D872237C4bC22f867d1BAe2913AB", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0xf784709d2317D872237C4bC22f867d1BAe2913AB", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "MintableDelegationERC20": { "buidlerevm": { "address": "0x7fAeC7791277Ff512c41CA903c177B2Ed952dDAc", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x7fAeC7791277Ff512c41CA903c177B2Ed952dDAc", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "AAVE": { "buidlerevm": { "address": "0x8858eeB3DfffA017D4BCE9801D340D36Cf895CCf", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x8858eeB3DfffA017D4BCE9801D340D36Cf895CCf", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "REN": { "buidlerevm": { "address": "0x2D8553F9ddA85A9B3259F6Bf26911364B85556F5", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x2D8553F9ddA85A9B3259F6Bf26911364B85556F5", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "YFI": { "buidlerevm": { "address": "0x5bcb88A0d20426e451332eE6C4324b0e663c50E0", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x5bcb88A0d20426e451332eE6C4324b0e663c50E0", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "UNI": { "buidlerevm": { "address": "0x3521eF8AaB0323004A6dD8b03CE890F4Ea3A13f5", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x3521eF8AaB0323004A6dD8b03CE890F4Ea3A13f5", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "AToken": { "buidlerevm": { "address": "0x33958cC3535Fc328369EAC2B2Bebd120D67C7fa1", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x33958cC3535Fc328369EAC2B2Bebd120D67C7fa1", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "SelfdestructTransferMock": { "buidlerevm": { "address": "0x920d847fE49E54C19047ba8bc236C45A8068Bca7", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x33958cC3535Fc328369EAC2B2Bebd120D67C7fa1", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, "ENJ": { "buidlerevm": { "address": "0x53369fd4680FfE3DfF39Fc6DDa9CfbfD43daeA2E", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + }, + "hardhat": { + "address": "0x53369fd4680FfE3DfF39Fc6DDa9CfbfD43daeA2E", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } } } \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts new file mode 100644 index 00000000..8723050e --- /dev/null +++ b/hardhat.config.ts @@ -0,0 +1,113 @@ +import path from 'path'; +import fs from 'fs'; +import {HardhatUserConfig} from 'hardhat/config'; +// @ts-ignore +import {accounts} from './test-wallets.js'; +import {eEthereumNetwork} from './helpers/types'; +import {BUIDLEREVM_CHAINID, COVERAGE_CHAINID} from './helpers/buidler-constants'; + +import '@nomiclabs/hardhat-ethers'; +import '@nomiclabs/hardhat-waffle'; +import '@nomiclabs/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 HARDFORK = 'istanbul'; +const INFURA_KEY = process.env.INFURA_KEY || ''; +const ETHERSCAN_KEY = process.env.ETHERSCAN_KEY || ''; +const MNEMONIC_PATH = "m/44'/60'/0'/0"; +const MNEMONIC = process.env.MNEMONIC || ''; + +// Prevent to load scripts before compilation and typechain +if (!SKIP_LOAD) { + ['misc', 'migrations', 'dev', 'full'].forEach((folder) => { + const tasksPath = path.join(__dirname, 'tasks', folder); + fs.readdirSync(tasksPath) + .filter((pth) => pth.includes('.ts')) + .forEach((task) => { + require(`${tasksPath}/${task}`); + }); + }); +} + +const getCommonNetworkConfig = (networkName: eEthereumNetwork, networkId: number) => { + return { + url: `https://${networkName}.infura.io/v3/${INFURA_KEY}`, + hardfork: HARDFORK, + blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT, + gasMultiplier: DEFAULT_GAS_PRICE, + chainId: networkId, + accounts: { + mnemonic: MNEMONIC, + path: MNEMONIC_PATH, + initialIndex: 0, + count: 20, + }, + }; +}; + +const buidlerConfig: HardhatUserConfig = { + solidity: { + version: '0.6.8', + settings: { + optimizer: {enabled: true, runs: 200}, + evmVersion: 'istanbul', + }, + }, + typechain: { + outDir: 'types', + target: 'ethers-v5', + }, + etherscan: { + apiKey: ETHERSCAN_KEY, + }, + mocha: { + timeout: 0, + }, + networks: { + coverage: { + url: 'http://localhost:8555', + chainId: COVERAGE_CHAINID, + }, + kovan: getCommonNetworkConfig(eEthereumNetwork.kovan, 42), + ropsten: getCommonNetworkConfig(eEthereumNetwork.ropsten, 3), + main: getCommonNetworkConfig(eEthereumNetwork.main, 1), + hardhat: { + hardfork: 'istanbul', + blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT, + gas: DEFAULT_BLOCK_GAS_LIMIT, + gasPrice: 8000000000, + chainId: BUIDLEREVM_CHAINID, + throwOnTransactionFailures: true, + throwOnCallFailures: true, + accounts: accounts.map(({secretKey, balance}: {secretKey: string; balance: string}) => ({ + privateKey: secretKey, + balance, + })), + }, + buidlerevm_docker: { + hardfork: 'istanbul', + blockGasLimit: 9500000, + gas: 9500000, + gasPrice: 8000000000, + chainId: BUIDLEREVM_CHAINID, + throwOnTransactionFailures: true, + throwOnCallFailures: true, + url: 'http://localhost:8545', + }, + ganache: { + url: 'http://ganache:8545', + accounts: { + mnemonic: 'fox sight canyon orphan hotel grow hedgehog build bless august weather swarm', + path: "m/44'/60'/0'/0", + initialIndex: 0, + count: 20, + }, + }, + }, +}; + +export default buidlerConfig; diff --git a/helpers/configuration.ts b/helpers/configuration.ts index b4bda09c..b5b9f804 100644 --- a/helpers/configuration.ts +++ b/helpers/configuration.ts @@ -7,6 +7,7 @@ import { ICommonConfiguration, eEthereumNetwork, } from './types'; + import {getParamPerPool} from './contracts-helpers'; import {AaveConfig} from '../config/aave'; import {UniswapConfig} from '../config/uniswap'; diff --git a/helpers/contracts-deployments.ts b/helpers/contracts-deployments.ts index bc5e7d81..291c069b 100644 --- a/helpers/contracts-deployments.ts +++ b/helpers/contracts-deployments.ts @@ -12,7 +12,6 @@ import { } from './types'; import {MintableErc20 as MintableERC20} from '../types/MintableErc20'; -import {readArtifact} from '@nomiclabs/buidler/plugins'; import {MockContract} from 'ethereum-waffle'; import {getReservesConfigByPool} from './configuration'; import {getFirstSigner} from './contracts-getters'; @@ -45,16 +44,12 @@ import { StableDebtTokenFactory, VariableDebtTokenFactory, WalletBalanceProviderFactory, - Weth9Factory, Weth9MockedFactory, WethGatewayFactory, } from '../types'; import {withSaveAndVerify, registerContractInJsonDb, linkBytecode} from './contracts-helpers'; import {StableAndVariableTokensHelperFactory} from '../types/StableAndVariableTokensHelperFactory'; -import {MockStableDebtToken} from '../types/MockStableDebtToken'; -import {MockVariableDebtToken} from '../types/MockVariableDebtToken'; import {MintableDelegationErc20} from '../types/MintableDelegationErc20'; -import {SelfdestructTransfer} from '../types/SelfdestructTransfer'; export const deployLendingPoolAddressesProvider = async (verify?: boolean) => withSaveAndVerify( @@ -89,10 +84,7 @@ export const deployReserveLogicLibrary = async (verify?: boolean) => ); export const deployGenericLogic = async (reserveLogic: Contract, verify?: boolean) => { - const genericLogicArtifact = await readArtifact( - BRE.config.paths.artifacts, - eContractid.GenericLogic - ); + const genericLogicArtifact = await BRE.artifacts.readArtifact(eContractid.GenericLogic); const linkedGenericLogicByteCode = linkBytecode(genericLogicArtifact, { [eContractid.ReserveLogic]: reserveLogic.address, @@ -112,10 +104,7 @@ export const deployValidationLogic = async ( genericLogic: Contract, verify?: boolean ) => { - const validationLogicArtifact = await readArtifact( - BRE.config.paths.artifacts, - eContractid.ValidationLogic - ); + const validationLogicArtifact = await BRE.artifacts.readArtifact(eContractid.ValidationLogic); const linkedValidationLogicByteCode = linkBytecode(validationLogicArtifact, { [eContractid.ReserveLogic]: reserveLogic.address, diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts index cbe2b69c..663df086 100644 --- a/helpers/contracts-helpers.ts +++ b/helpers/contracts-helpers.ts @@ -13,7 +13,7 @@ import { iParamsPerPool, } from './types'; import {MintableErc20 as MintableERC20} from '../types/MintableErc20'; -import {Artifact} from '@nomiclabs/buidler/types'; +import {Artifact} from 'hardhat/types'; import {verifyContract} from './etherscan-verification'; import {getIErc20Detailed} from './contracts-getters'; @@ -21,7 +21,7 @@ export type MockTokenMap = {[symbol: string]: MintableERC20}; export const registerContractInJsonDb = async (contractId: string, contractInstance: Contract) => { const currentNetwork = BRE.network.name; - if (currentNetwork !== 'buidlerevm' && !currentNetwork.includes('coverage')) { + if (currentNetwork !== 'hardhat' && !currentNetwork.includes('coverage')) { console.log(`*** ${contractId} ***\n`); console.log(`Network: ${currentNetwork}`); console.log(`tx: ${contractInstance.deployTransaction.hash}`); diff --git a/helpers/misc-utils.ts b/helpers/misc-utils.ts index ee30f870..91965035 100644 --- a/helpers/misc-utils.ts +++ b/helpers/misc-utils.ts @@ -4,8 +4,7 @@ import low from 'lowdb'; import FileSync from 'lowdb/adapters/FileSync'; import {WAD} from './constants'; import {Wallet, ContractTransaction} from 'ethers'; -import {BuidlerRuntimeEnvironment} from '@nomiclabs/buidler/types'; -import {createBrotliCompress} from 'zlib'; +import {HardhatRuntimeEnvironment} from 'hardhat/types'; export const toWad = (value: string | number) => new BigNumber(value).times(WAD).toFixed(); @@ -14,8 +13,8 @@ export const stringToBigNumber = (amount: string): BigNumber => new BigNumber(am export const getDb = () => low(new FileSync('./deployed-contracts.json')); -export let BRE: BuidlerRuntimeEnvironment = {} as BuidlerRuntimeEnvironment; -export const setBRE = (_BRE: BuidlerRuntimeEnvironment) => { +export let BRE: HardhatRuntimeEnvironment = {} as HardhatRuntimeEnvironment; +export const setBRE = (_BRE: HardhatRuntimeEnvironment) => { BRE = _BRE; }; @@ -25,9 +24,9 @@ export const sleep = (milliseconds: number) => { export const createRandomAddress = () => Wallet.createRandom().address; -export const evmSnapshot = async () => await BRE.ethereum.send('evm_snapshot', []); +export const evmSnapshot = async () => await BRE.ethers.provider.send('evm_snapshot', []); -export const evmRevert = async (id: string) => BRE.ethereum.send('evm_revert', [id]); +export const evmRevert = async (id: string) => BRE.ethers.provider.send('evm_revert', [id]); export const timeLatest = async () => { const block = await BRE.ethers.provider.getBlock('latest'); diff --git a/helpers/types.ts b/helpers/types.ts index 3670d880..6c588a25 100644 --- a/helpers/types.ts +++ b/helpers/types.ts @@ -11,6 +11,7 @@ export enum eEthereumNetwork { ropsten = 'ropsten', main = 'main', coverage = 'coverage', + hardhat = 'hardhat', } export enum EthereumNetworkNames { @@ -318,6 +319,7 @@ export interface iParamsPerNetwork { [eEthereumNetwork.kovan]: T; [eEthereumNetwork.ropsten]: T; [eEthereumNetwork.main]: T; + [eEthereumNetwork.hardhat]: T; } export interface iParamsPerPool { diff --git a/package-lock.json b/package-lock.json index 84b80849..bfb398c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1109,6 +1109,269 @@ } } }, + "@nomiclabs/hardhat-ethers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.0.tgz", + "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", + "integrity": "sha512-CnG9JC0rgqa68LTgyETxBUEWYAovvNGVs5abqaXjG80eF7iMLjDjM8IjOM87siAaxaxFCf6VBMJmtueqVq7jZw==", + "dev": true, + "requires": { + "@types/sinon-chai": "^3.2.3", + "@types/web3": "1.0.19" + } + }, "@openzeppelin/contracts": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.1.0.tgz", @@ -2256,6 +2519,12 @@ "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", "dev": true }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, "aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", @@ -6043,6 +6312,12 @@ } } }, + "follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", + "dev": true + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -17014,6 +17289,295 @@ "har-schema": "^2.0.0" } }, + "hardhat": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.0.2.tgz", + "integrity": "sha512-P8SMYsWeC0OakmHUAgL9STalidQ1bAHFHFroPyvnfljei7EPHaIQpS6QursoZ+KVNkPTnKC+9m1Lky8nnKIjuw==", + "dev": true, + "requires": { + "@nomiclabs/ethereumjs-vm": "^4.1.1", + "@sentry/node": "^5.18.1", + "@solidity-parser/parser": "^0.7.1", + "@types/bn.js": "^4.11.5", + "@types/lru-cache": "^5.1.0", + "abort-controller": "^3.0.0", + "adm-zip": "^0.4.16", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "eth-sig-util": "^2.5.2", + "ethereum-cryptography": "^0.1.2", + "ethereumjs-abi": "^0.6.8", + "ethereumjs-account": "^3.0.0", + "ethereumjs-block": "^2.2.0", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^6.1.0", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "^7.1.3", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "lodash": "^4.17.11", + "merkle-patricia-tree": "^3.0.0", + "mocha": "^7.1.2", + "node-fetch": "^2.6.0", + "qs": "^6.7.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "slash": "^3.0.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "true-case-path": "^2.2.1", + "tsort": "0.0.1", + "uuid": "^3.3.2", + "ws": "^7.2.1" + }, + "dependencies": { + "@solidity-parser/parser": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.7.1.tgz", + "integrity": "sha512-5ma2uuwPAEX1TPl2rAPAAuGlBkKnn2oUKQvnhTFlDIB8U/KDWX77FpHtL6Rcz+OwqSCWx9IClxACgyIEJ/GhIw==", + "dev": true + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + } + } + }, + "hardhat-gas-reporter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.0.tgz", + "integrity": "sha512-ckGLu62GSZDqTemO5EgSUdjn+Dyk4X20nryZ0gutgVnjfrTwpV7/AXoDIj93cxIGMLmui09EQR0QB0D0OIssdA==", + "dev": true, + "requires": { + "eth-gas-reporter": "^0.2.19" + }, + "dependencies": { + "@solidity-parser/parser": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.8.1.tgz", + "integrity": "sha512-DF7H6T8I4lo2IZOE2NZwt3631T8j1gjpQLjmvY2xBNK50c4ltslR4XPKwT6RkeSd4+xCAK0GHC/k7sbRDBE4Yw==", + "dev": true + }, + "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" + } + }, + "eth-gas-reporter": { + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.19.tgz", + "integrity": "sha512-yQmbAa6O9/Yl/syNml2A0R+ZLQnJ9m9jogFXHzjMWVBMUVnAcEskOVyxaMYddkclZdYIMxE99tQy830C2jLsAQ==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.0.0-beta.146", + "@solidity-parser/parser": "^0.8.0", + "cli-table3": "^0.5.0", + "colors": "^1.1.2", + "ethereumjs-util": "6.2.0", + "ethers": "^4.0.40", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^7.1.1", + "req-cwd": "^2.0.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", + "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", + "secp256k1": "^3.0.1" + } + }, + "ethers": { + "version": "4.0.48", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.48.tgz", + "integrity": "sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g==", + "dev": true, + "requires": { + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.5.3", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.4", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^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 + }, + "scrypt-js": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", + "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", + "dev": true + }, + "setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=", + "dev": true + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", + "dev": true + } + } + }, + "hardhat-typechain": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/hardhat-typechain/-/hardhat-typechain-0.3.3.tgz", + "integrity": "sha512-NrqP7Zng28prV3YT0lXoo1pXtZxoNCMfiZIWkf1HXjjID42JLLfSOTsvlb0okDMpz4tJaEEkgADJO69sKZxw+Q==", + "dev": true + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -17362,6 +17926,12 @@ "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", "dev": true }, + "immutable": { + "version": "4.0.0-rc.12", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.12.tgz", + "integrity": "sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A==", + "dev": true + }, "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", @@ -21414,6 +21984,23 @@ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", "dev": true }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true + } + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -22072,6 +22659,12 @@ "escape-string-regexp": "^1.0.2" } }, + "true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true + }, "ts-essentials": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-2.0.12.tgz", diff --git a/package.json b/package.json index 71561eb9..7b3db65a 100644 --- a/package.json +++ b/package.json @@ -4,62 +4,64 @@ "description": "Aave Protocol V2 smart contracts", "scripts": { "run-env": "npm i && tail -f /dev/null", - "buidler": "buidler", - "buidler:kovan": "buidler --network kovan", - "buidler:ropsten": "buidler--network ropsten", - "buidler:main": "buidler --network main", - "buidler:docker": "buidler --network buidlerevm_docker", - "buidler help": "buidler help", - "compile": "SKIP_LOAD=true buidler compile", - "types-gen": "npm run compile -- --force && typechain --target ethers-v5 --outDir ./types './artifacts/*.json'", - "test": "buidler test", - "test-scenarios": "buidler test test/__setup.spec.ts test/scenario.spec.ts", - "aave:evm:dev:migration": "buidler aave:dev", - "aave:evm:full:migration": "buidler aave:full", - "aave:docker:dev:migration": "npm run buidler:docker -- aave:dev", - "aave:docker:full:migration": "npm run buidler:docker -- aave:full", - "aave:kovan:dev:migration": "npm run buidler:kovan -- aave:dev --verify", - "aave:kovan:full:migration": "npm run buidler:kovan -- aave:full --verify", - "aave:kovan:full:initialize": "npm run buidler:kovan -- full:initialize-lending-pool --verify --pool Aave", - "aave:ropsten:dev:migration": "npm run buidler:ropsten -- aave:dev --verify", - "aave:ropsten:full:migration": "npm run buidler:ropsten -- aave:full --verify", - "aave:main:dev:migration": "npm run buidler:main -- aave:dev --verify", - "aave:main:full:migration": "npm run buidler:main -- aave:full --verify", - "uniswap:evm:dev:migration": "buidler uniswap:dev", - "uniswap:evm:full:migration": "buidler uniswap:full --verify", - "uniswap:kovan:dev:migration": "npm run buidler:kovan -- uniswap:dev --verify", - "uniswap:kovan:full:migration": "npm run buidler:kovan -- uniswap:full --verify", - "uniswap:ropsten:dev:migration": "npm run buidler:ropsten -- uniswap:dev --verify", - "uniswap:ropsten:full:migration": "npm run buidler:ropsten -- uniswap:full --verify", - "uniswap:main:dev:migration": "npm run buidler:main -- uniswap:dev --verify", - "uniswap:main:full:migration": "npm run buidler:main -- uniswap:full --verify", - "test-repay-with-collateral": "buidler test test/__setup.spec.ts test/repay-with-collateral.spec.ts", - "test-liquidate-with-collateral": "buidler test test/__setup.spec.ts test/flash-liquidation-with-collateral.spec.ts", - "test-liquidate-underlying": "buidler test test/__setup.spec.ts test/liquidation-underlying.spec.ts", - "test-transfers": "buidler test test/__setup.spec.ts test/atoken-transfer.spec.ts", - "test-flash": "buidler test test/__setup.spec.ts test/flashloan.spec.ts", - "test-liquidate": "buidler test test/__setup.spec.ts test/liquidation-atoken.spec.ts", - "test-deploy": "buidler test test/__setup.spec.ts test/test-init.spec.ts", - "test-pausable": "buidler test test/__setup.spec.ts test/pausable-functions.spec.ts", - "test-permit": "buidler test test/__setup.spec.ts test/atoken-permit.spec.ts", - "test-stable-and-atokens": "buidler test test/__setup.spec.ts test/atoken-transfer.spec.ts test/stable-token.spec.ts", - "test-subgraph:scenarios": "buidler --network buidlerevm_docker test test/__setup.spec.ts test/subgraph-scenarios.spec.ts", - "test-weth": "buidler test test/__setup.spec.ts test/weth-gateway.spec.ts", + "hardhat": "hardhat", + "hardhat:kovan": "hardhat --network kovan", + "hardhat:ropsten": "hardhat--network ropsten", + "hardhat:main": "hardhat --network main", + "hardhat:docker": "hardhat --network hardhatevm_docker", + "compile": "SKIP_LOAD=true hardhat compile", + "test": "TS_NODE_TRANSPILE_ONLY=1 hardhat test", + "test-scenarios": "npm run test -- test/__setup.spec.ts test/scenario.spec.ts", + "aave:evm:dev:migration": "hardhat aave:dev", + "aave:evm:full:migration": "hardhat aave:full", + "aave:docker:dev:migration": "npm run hardhat:docker -- aave:dev", + "aave:docker:full:migration": "npm run hardhat:docker -- aave:full", + "aave:kovan:dev:migration": "npm run hardhat:kovan -- aave:dev --verify", + "aave:kovan:full:migration": "npm run hardhat:kovan -- aave:full --verify", + "aave:kovan:full:initialize": "npm run hardhat:kovan -- full:initialize-lending-pool --verify --pool Aave", + "aave:ropsten:dev:migration": "npm run hardhat:ropsten -- aave:dev --verify", + "aave:ropsten:full:migration": "npm run hardhat:ropsten -- aave:full --verify", + "aave:main:dev:migration": "npm run hardhat:main -- aave:dev --verify", + "aave:main:full:migration": "npm run hardhat:main -- aave:full --verify", + "uniswap:evm:dev:migration": "hardhat uniswap:dev", + "uniswap:evm:full:migration": "hardhat uniswap:full --verify", + "uniswap:kovan:dev:migration": "npm run hardhat:kovan -- uniswap:dev --verify", + "uniswap:kovan:full:migration": "npm run hardhat:kovan -- uniswap:full --verify", + "uniswap:ropsten:dev:migration": "npm run hardhat:ropsten -- uniswap:dev --verify", + "uniswap:ropsten:full:migration": "npm run hardhat:ropsten -- uniswap:full --verify", + "uniswap:main:dev:migration": "npm run hardhat:main -- uniswap:dev --verify", + "uniswap:main:full:migration": "npm run hardhat:main -- uniswap:full --verify", + "test-repay-with-collateral": "hardhat test test/__setup.spec.ts test/repay-with-collateral.spec.ts", + "test-liquidate-with-collateral": "hardhat test test/__setup.spec.ts test/flash-liquidation-with-collateral.spec.ts", + "test-liquidate-underlying": "hardhat test test/__setup.spec.ts test/liquidation-underlying.spec.ts", + "test-configurator": "hardhat test test/__setup.spec.ts test/configurator.spec.ts", + "test-transfers": "hardhat test test/__setup.spec.ts test/atoken-transfer.spec.ts", + "test-flash": "hardhat test test/__setup.spec.ts test/flashloan.spec.ts", + "test-liquidate": "hardhat test test/__setup.spec.ts test/liquidation-atoken.spec.ts", + "test-deploy": "hardhat test test/__setup.spec.ts test/test-init.spec.ts", + "test-pausable": "hardhat test test/__setup.spec.ts test/pausable-functions.spec.ts", + "test-permit": "hardhat test test/__setup.spec.ts test/atoken-permit.spec.ts", + "test-stable-and-atokens": "hardhat test test/__setup.spec.ts test/atoken-transfer.spec.ts test/stable-token.spec.ts", + "test-subgraph:scenarios": "hardhat --network hardhatevm_docker test test/__setup.spec.ts test/subgraph-scenarios.spec.ts", + "test-weth": "hardhat test test/__setup.spec.ts test/weth-gateway.spec.ts", "dev:coverage": "buidler coverage --network coverage", - "dev:deployment": "buidler dev-deployment", - "dev:deployExample": "buidler deploy-Example", + "dev:deployment": "hardhat dev-deployment", + "dev:deployExample": "hardhat deploy-Example", "dev:prettier": "prettier --write .", "ci:test": "npm run compile && npm run types-gen && npm run test", "ci:clean": "rm -rf ./artifacts ./cache ./types", - "print-contracts:kovan": "npm run buidler:kovan -- print-contracts", - "print-contracts:main": "npm run buidler:main -- print-contracts", - "print-contracts:ropsten": "npm run buidler:main -- print-contracts" + "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" }, "devDependencies": { "@nomiclabs/buidler": "^1.4.7", "@nomiclabs/buidler-ethers": "2.0.0", "@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", "@typechain/ethers-v5": "^1.0.0", @@ -81,6 +83,9 @@ "ethereumjs-util": "7.0.2", "ethers": "5.0.8", "globby": "^11.0.1", + "hardhat": "^2.0.2", + "hardhat-gas-reporter": "^1.0.0", + "hardhat-typechain": "^0.3.3", "husky": "^4.2.5", "lowdb": "1.0.0", "prettier": "^2.0.5", @@ -88,12 +93,12 @@ "pretty-quick": "^2.0.1", "solidity-coverage": "0.7.10", "ts-generator": "0.0.8", - "ts-node": "8.10.2", + "ts-node": "^8.10.2", "tslint": "^6.1.2", "tslint-config-prettier": "^1.18.0", "tslint-plugin-prettier": "^2.3.0", "typechain": "2.0.0", - "typescript": "3.9.3" + "typescript": "^3.9.3" }, "husky": { "hooks": { diff --git a/tasks/dev/1_mock_tokens.ts b/tasks/dev/1_mock_tokens.ts index cff4630c..221ccd6b 100644 --- a/tasks/dev/1_mock_tokens.ts +++ b/tasks/dev/1_mock_tokens.ts @@ -1,5 +1,6 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {deployAllMockTokens} from '../../helpers/contracts-deployments'; + task('dev:deploy-mock-tokens', 'Deploy mock tokens for dev enviroment') .addFlag('verify', 'Verify contracts at Etherscan') .setAction(async ({verify}, localBRE) => { diff --git a/tasks/dev/2_address_provider_registry.ts b/tasks/dev/2_address_provider_registry.ts index f14af75c..5d709cad 100644 --- a/tasks/dev/2_address_provider_registry.ts +++ b/tasks/dev/2_address_provider_registry.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import { deployLendingPoolAddressesProvider, deployLendingPoolAddressesProviderRegistry, diff --git a/tasks/dev/3_lending_pool.ts b/tasks/dev/3_lending_pool.ts index 1124f150..819aa0cc 100644 --- a/tasks/dev/3_lending_pool.ts +++ b/tasks/dev/3_lending_pool.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import { deployATokensAndRatesHelper, deployLendingPool, diff --git a/tasks/dev/4_oracles.ts b/tasks/dev/4_oracles.ts index 7546bf92..9814fdf2 100644 --- a/tasks/dev/4_oracles.ts +++ b/tasks/dev/4_oracles.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import { deployPriceOracle, deployChainlinkProxyPriceProvider, diff --git a/tasks/dev/5_initialize.ts b/tasks/dev/5_initialize.ts index 90368ab5..8061588e 100644 --- a/tasks/dev/5_initialize.ts +++ b/tasks/dev/5_initialize.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import { deployLendingPoolCollateralManager, deployMockFlashLoanReceiver, diff --git a/tasks/dev/6_wallet_balance_provider.ts b/tasks/dev/6_wallet_balance_provider.ts index beec8dd7..c84395a4 100644 --- a/tasks/dev/6_wallet_balance_provider.ts +++ b/tasks/dev/6_wallet_balance_provider.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {deployWalletBalancerProvider} from '../../helpers/contracts-deployments'; import {getLendingPoolAddressesProvider} from '../../helpers/contracts-getters'; diff --git a/tasks/full/1_address_provider_registry.ts b/tasks/full/1_address_provider_registry.ts index 4dd84f08..00e3fdca 100644 --- a/tasks/full/1_address_provider_registry.ts +++ b/tasks/full/1_address_provider_registry.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {getParamPerNetwork} from '../../helpers/contracts-helpers'; import { deployLendingPoolAddressesProvider, diff --git a/tasks/full/2_lending_pool.ts b/tasks/full/2_lending_pool.ts index 4a10b30c..b9103a6f 100644 --- a/tasks/full/2_lending_pool.ts +++ b/tasks/full/2_lending_pool.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {insertContractAddressInDb} from '../../helpers/contracts-helpers'; import { deployATokensAndRatesHelper, diff --git a/tasks/full/3_oracles.ts b/tasks/full/3_oracles.ts index e7a28329..178862d6 100644 --- a/tasks/full/3_oracles.ts +++ b/tasks/full/3_oracles.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {getParamPerNetwork} from '../../helpers/contracts-helpers'; import { deployChainlinkProxyPriceProvider, diff --git a/tasks/full/5_initialize.ts b/tasks/full/5_initialize.ts index c9ef9b3b..1ac99fad 100644 --- a/tasks/full/5_initialize.ts +++ b/tasks/full/5_initialize.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {getParamPerNetwork} from '../../helpers/contracts-helpers'; import { deployLendingPoolCollateralManager, diff --git a/tasks/migrations/aave.dev.ts b/tasks/migrations/aave.dev.ts index 3be0502e..29412f74 100644 --- a/tasks/migrations/aave.dev.ts +++ b/tasks/migrations/aave.dev.ts @@ -1,7 +1,10 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {checkVerification} from '../../helpers/etherscan-verification'; +console.log('ji'); import {ConfigNames} from '../../helpers/configuration'; +console.log('pi'); import {printContracts} from '../../helpers/misc-utils'; +console.log('i'); task('aave:dev', 'Deploy development enviroment') .addOptionalParam('verify', 'Verify contracts at Etherscan') diff --git a/tasks/migrations/aave.full.ts b/tasks/migrations/aave.full.ts index 50ae51d2..7d9963c8 100644 --- a/tasks/migrations/aave.full.ts +++ b/tasks/migrations/aave.full.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {checkVerification} from '../../helpers/etherscan-verification'; import {ConfigNames} from '../../helpers/configuration'; import {EthereumNetworkNames} from '../../helpers/types'; diff --git a/tasks/migrations/uniswap.dev.ts b/tasks/migrations/uniswap.dev.ts index 5ad2c544..d2c56acf 100644 --- a/tasks/migrations/uniswap.dev.ts +++ b/tasks/migrations/uniswap.dev.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {checkVerification} from '../../helpers/etherscan-verification'; import {ConfigNames} from '../../helpers/configuration'; diff --git a/tasks/migrations/uniswap.full.ts b/tasks/migrations/uniswap.full.ts index fef440b1..0dbc4204 100644 --- a/tasks/migrations/uniswap.full.ts +++ b/tasks/migrations/uniswap.full.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {checkVerification} from '../../helpers/etherscan-verification'; import {ConfigNames} from '../../helpers/configuration'; diff --git a/tasks/misc/print-contracts.ts b/tasks/misc/print-contracts.ts index a5c42bba..51e08ec7 100644 --- a/tasks/misc/print-contracts.ts +++ b/tasks/misc/print-contracts.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {printContracts} from '../../helpers/misc-utils'; task('print-contracts', 'Inits the BRE, to have access to all the plugins').setAction( diff --git a/tasks/misc/set-bre.ts b/tasks/misc/set-bre.ts index 609ac6b6..8156aadb 100644 --- a/tasks/misc/set-bre.ts +++ b/tasks/misc/set-bre.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {setBRE} from '../../helpers/misc-utils'; task(`set-bre`, `Inits the BRE, to have access to all the plugins' objects`).setAction( diff --git a/tasks/misc/verify-sc.ts b/tasks/misc/verify-sc.ts index ee1ce0e2..b5fbf650 100644 --- a/tasks/misc/verify-sc.ts +++ b/tasks/misc/verify-sc.ts @@ -1,4 +1,4 @@ -import {task} from '@nomiclabs/buidler/config'; +import {task} from 'hardhat/config'; import {verifyContract, checkVerification} from '../../helpers/etherscan-verification'; interface VerifyParams { diff --git a/test/__setup.spec.ts b/test/__setup.spec.ts index f412dec7..09079f47 100644 --- a/test/__setup.spec.ts +++ b/test/__setup.spec.ts @@ -1,4 +1,4 @@ -import rawBRE from '@nomiclabs/buidler'; +import rawBRE from 'hardhat'; import {MockContract} from 'ethereum-waffle'; import { insertContractAddressInDb, diff --git a/test/helpers/make-suite.ts b/test/helpers/make-suite.ts index f8b2656c..b875193d 100644 --- a/test/helpers/make-suite.ts +++ b/test/helpers/make-suite.ts @@ -27,7 +27,6 @@ import {PriceOracle} from '../../types/PriceOracle'; import {LendingPoolAddressesProvider} from '../../types/LendingPoolAddressesProvider'; import {LendingPoolAddressesProviderRegistry} from '../../types/LendingPoolAddressesProviderRegistry'; import {getEthersSigners} from '../../helpers/contracts-helpers'; -import {Weth9} from '../../types/Weth9'; import {Weth9Mocked} from '../../types/Weth9Mocked'; import {WethGateway} from '../../types/WethGateway'; import {solidity} from 'ethereum-waffle'; @@ -60,7 +59,7 @@ export interface TestEnv { let buidlerevmSnapshotId: string = '0x1'; const setBuidlerevmSnapshotId = (id: string) => { - if (BRE.network.name === 'buidlerevm') { + if (BRE.network.name === 'hardhat') { buidlerevmSnapshotId = id; } }; diff --git a/tsconfig.json b/tsconfig.json index edf9e693..e6a15a81 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,16 +1,14 @@ { "compilerOptions": { - "target": "ES2019", + "target": "es2019", "module": "commonjs", "strict": true, "esModuleInterop": true, - "outDir": "dist", - "resolveJsonModule": true, - "downlevelIteration": true + "outDir": "dist" }, - "include": ["./**/*"], + "include": ["./scripts", "./test"], "files": [ - "./buidler.config.ts", + "./hardhat.config.ts", "node_modules/@nomiclabs/buidler-ethers/src/type-extensions.d.ts", "node_modules/buidler-typechain/src/type-extensions.d.ts", "node_modules/@nomiclabs/buidler-waffle/src/type-extensions.d.ts",