From 21e57a1a3789d1dfaf83e111074382a19b572275 Mon Sep 17 00:00:00 2001 From: David Racero Date: Thu, 5 Nov 2020 12:18:20 +0100 Subject: [PATCH 1/8] Migrate buidler to hardhat --- config/aave.ts | 1 + config/commons.ts | 14 +- config/uniswap.ts | 2 + deployed-contracts.json | 213 ++++++++ hardhat.config.ts | 113 +++++ helpers/configuration.ts | 1 + helpers/contracts-deployments.ts | 15 +- helpers/contracts-helpers.ts | 4 +- helpers/misc-utils.ts | 11 +- helpers/types.ts | 2 + package-lock.json | 593 ++++++++++++++++++++++ package.json | 101 ++-- tasks/dev/1_mock_tokens.ts | 3 +- tasks/dev/2_address_provider_registry.ts | 2 +- tasks/dev/3_lending_pool.ts | 2 +- tasks/dev/4_oracles.ts | 2 +- tasks/dev/5_initialize.ts | 2 +- tasks/dev/6_wallet_balance_provider.ts | 2 +- tasks/full/1_address_provider_registry.ts | 2 +- tasks/full/2_lending_pool.ts | 2 +- tasks/full/3_oracles.ts | 2 +- tasks/full/5_initialize.ts | 2 +- tasks/migrations/aave.dev.ts | 5 +- tasks/migrations/aave.full.ts | 2 +- tasks/migrations/uniswap.dev.ts | 2 +- tasks/migrations/uniswap.full.ts | 2 +- tasks/misc/print-contracts.ts | 2 +- tasks/misc/set-bre.ts | 2 +- tasks/misc/verify-sc.ts | 2 +- test/__setup.spec.ts | 2 +- test/helpers/make-suite.ts | 3 +- tsconfig.json | 10 +- 32 files changed, 1027 insertions(+), 96 deletions(-) create mode 100644 hardhat.config.ts 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", From 729b642ea547dfbd39352750abb0b07770944211 Mon Sep 17 00:00:00 2001 From: David Racero Date: Thu, 5 Nov 2020 13:44:20 +0100 Subject: [PATCH 2/8] Support Buidler to run solidity-coverage until is ported. --- buidler.config.ts | 18 ++++---- hardhat.config.ts | 3 ++ helpers/configuration.ts | 8 ++-- helpers/contracts-deployments.ts | 18 ++++++-- helpers/contracts-getters.ts | 56 +++++++++++------------ helpers/contracts-helpers.ts | 19 ++++---- helpers/etherscan-verification.ts | 10 ++-- helpers/misc-utils.ts | 23 ++++++---- package.json | 4 +- tasks/dev/1_mock_tokens.ts | 2 +- tasks/dev/2_address_provider_registry.ts | 2 +- tasks/dev/3_lending_pool.ts | 2 +- tasks/dev/4_oracles.ts | 2 +- tasks/dev/5_initialize.ts | 2 +- tasks/dev/6_wallet_balance_provider.ts | 2 +- tasks/full/1_address_provider_registry.ts | 2 +- tasks/full/2_lending_pool.ts | 2 +- tasks/full/3_oracles.ts | 2 +- tasks/full/5_initialize.ts | 2 +- tasks/migrations/aave.dev.ts | 5 +- tasks/migrations/aave.full.ts | 2 +- tasks/migrations/uniswap.dev.ts | 2 +- tasks/migrations/uniswap.full.ts | 2 +- tasks/misc/print-contracts.ts | 4 +- tasks/misc/set-bre.ts | 10 ++-- tasks/misc/verify-sc.ts | 4 +- test/__setup.spec.ts | 2 +- test/atoken-permit.spec.ts | 16 +++---- test/delegation-aware-atoken.spec.ts | 2 +- test/helpers/actions.ts | 6 +-- test/helpers/make-suite.ts | 4 +- test/helpers/utils/helpers.ts | 4 +- test/liquidation-atoken.spec.ts | 4 +- test/liquidation-underlying.spec.ts | 6 +-- test/weth-gateway.spec.ts | 14 +++--- 35 files changed, 138 insertions(+), 128 deletions(-) diff --git a/buidler.config.ts b/buidler.config.ts index deaa7bcd..aa91a3a7 100644 --- a/buidler.config.ts +++ b/buidler.config.ts @@ -1,10 +1,11 @@ import path from 'path'; import fs from 'fs'; -import {usePlugin} from '@nomiclabs/buidler/config'; +import {usePlugin, task} from '@nomiclabs/buidler/config'; // @ts-ignore import {accounts} from './test-wallets.js'; import {eEthereumNetwork} from './helpers/types'; import {BUIDLEREVM_CHAINID, COVERAGE_CHAINID} from './helpers/buidler-constants'; +import {setDRE} from './helpers/misc-utils'; usePlugin('@nomiclabs/buidler-ethers'); usePlugin('buidler-typechain'); @@ -22,15 +23,12 @@ 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}`)); - }); -} +task(`set-DRE`, `Inits the DRE, to have access to all the plugins' objects`).setAction( + async (_, _DRE) => { + setDRE(_DRE); + return _DRE; + } +); const getCommonNetworkConfig = (networkName: eEthereumNetwork, networkId: number) => { return { diff --git a/hardhat.config.ts b/hardhat.config.ts index 8723050e..7398222d 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -23,6 +23,7 @@ const MNEMONIC = process.env.MNEMONIC || ''; // Prevent to load scripts before compilation and typechain if (!SKIP_LOAD) { + console.log('NOT SKPP'); ['misc', 'migrations', 'dev', 'full'].forEach((folder) => { const tasksPath = path.join(__dirname, 'tasks', folder); fs.readdirSync(tasksPath) @@ -33,6 +34,8 @@ if (!SKIP_LOAD) { }); } +require(`${path.join(__dirname, 'tasks/misc')}/set-bre.ts`); + const getCommonNetworkConfig = (networkName: eEthereumNetwork, networkId: number) => { return { url: `https://${networkName}.infura.io/v3/${INFURA_KEY}`, diff --git a/helpers/configuration.ts b/helpers/configuration.ts index b5b9f804..8faea63f 100644 --- a/helpers/configuration.ts +++ b/helpers/configuration.ts @@ -13,7 +13,7 @@ import {AaveConfig} from '../config/aave'; import {UniswapConfig} from '../config/uniswap'; import {CommonsConfig} from '../config/commons'; import {ZERO_ADDRESS} from './constants'; -import {BRE} from './misc-utils'; +import {DRE} from './misc-utils'; import {tEthereumAddress} from './types'; import {getParamPerNetwork} from './contracts-helpers'; import {deployWETHMocked} from './contracts-deployments'; @@ -66,13 +66,13 @@ export const getFeeDistributionParamsCommon = ( }; export const getGenesisAaveAdmin = async (config: ICommonConfiguration) => { - const currentNetwork = BRE.network.name; + const currentNetwork = DRE.network.name; const targetAddress = getParamPerNetwork(config.AaveAdmin, currentNetwork); if (targetAddress) { return targetAddress; } const addressList = await Promise.all( - (await BRE.ethers.getSigners()).map((signer) => signer.getAddress()) + (await DRE.ethers.getSigners()).map((signer) => signer.getAddress()) ); const addressIndex = config.AaveAdminIndex; return addressList[addressIndex]; @@ -84,7 +84,7 @@ export const getATokenDomainSeparatorPerNetwork = ( ): tEthereumAddress => getParamPerNetwork(config.ATokenDomainSeparator, network); export const getWethAddress = async (config: ICommonConfiguration) => { - const currentNetwork = BRE.network.name; + const currentNetwork = DRE.network.name; const wethAddress = getParamPerNetwork(config.WETH, currentNetwork); if (wethAddress) { return wethAddress; diff --git a/helpers/contracts-deployments.ts b/helpers/contracts-deployments.ts index 291c069b..a8185ff3 100644 --- a/helpers/contracts-deployments.ts +++ b/helpers/contracts-deployments.ts @@ -1,5 +1,5 @@ import {Contract} from 'ethers'; -import {BRE} from './misc-utils'; +import {DRE} from './misc-utils'; import { tEthereumAddress, eContractid, @@ -9,6 +9,7 @@ import { iMultiPoolsAssets, IReserveParams, PoolConfiguration, + eEthereumNetwork, } from './types'; import {MintableErc20 as MintableERC20} from '../types/MintableErc20'; @@ -50,7 +51,14 @@ import { import {withSaveAndVerify, registerContractInJsonDb, linkBytecode} from './contracts-helpers'; import {StableAndVariableTokensHelperFactory} from '../types/StableAndVariableTokensHelperFactory'; import {MintableDelegationErc20} from '../types/MintableDelegationErc20'; +import {readArtifact as buidlerReadArtifact} from '@nomiclabs/buidler/plugins'; +const readArtifact = async (id: string) => { + if (DRE.network.name === eEthereumNetwork.buidlerevm) { + return buidlerReadArtifact(DRE.config.paths.artifacts, id); + } + return DRE.artifacts.readArtifact(id); +}; export const deployLendingPoolAddressesProvider = async (verify?: boolean) => withSaveAndVerify( await new LendingPoolAddressesProviderFactory(await getFirstSigner()).deploy(), @@ -84,13 +92,13 @@ export const deployReserveLogicLibrary = async (verify?: boolean) => ); export const deployGenericLogic = async (reserveLogic: Contract, verify?: boolean) => { - const genericLogicArtifact = await BRE.artifacts.readArtifact(eContractid.GenericLogic); + const genericLogicArtifact = await readArtifact(eContractid.GenericLogic); const linkedGenericLogicByteCode = linkBytecode(genericLogicArtifact, { [eContractid.ReserveLogic]: reserveLogic.address, }); - const genericLogicFactory = await BRE.ethers.getContractFactory( + const genericLogicFactory = await DRE.ethers.getContractFactory( genericLogicArtifact.abi, linkedGenericLogicByteCode ); @@ -104,14 +112,14 @@ export const deployValidationLogic = async ( genericLogic: Contract, verify?: boolean ) => { - const validationLogicArtifact = await BRE.artifacts.readArtifact(eContractid.ValidationLogic); + const validationLogicArtifact = await readArtifact(eContractid.ValidationLogic); const linkedValidationLogicByteCode = linkBytecode(validationLogicArtifact, { [eContractid.ReserveLogic]: reserveLogic.address, [eContractid.GenericLogic]: genericLogic.address, }); - const validationLogicFactory = await BRE.ethers.getContractFactory( + const validationLogicFactory = await DRE.ethers.getContractFactory( validationLogicArtifact.abi, linkedValidationLogicByteCode ); diff --git a/helpers/contracts-getters.ts b/helpers/contracts-getters.ts index 713fb5cc..74b8564b 100644 --- a/helpers/contracts-getters.ts +++ b/helpers/contracts-getters.ts @@ -26,15 +26,15 @@ import { } from '../types'; import {Ierc20DetailedFactory} from '../types/Ierc20DetailedFactory'; import {MockTokenMap} from './contracts-helpers'; -import {BRE, getDb} from './misc-utils'; +import {DRE, getDb} from './misc-utils'; import {eContractid, PoolConfiguration, tEthereumAddress, TokenContractId} from './types'; -export const getFirstSigner = async () => (await BRE.ethers.getSigners())[0]; +export const getFirstSigner = async () => (await DRE.ethers.getSigners())[0]; export const getLendingPoolAddressesProvider = async (address?: tEthereumAddress) => await LendingPoolAddressesProviderFactory.connect( address || - (await getDb().get(`${eContractid.LendingPoolAddressesProvider}.${BRE.network.name}`).value()) + (await getDb().get(`${eContractid.LendingPoolAddressesProvider}.${DRE.network.name}`).value()) .address, await getFirstSigner() ); @@ -42,7 +42,7 @@ export const getLendingPoolAddressesProvider = async (address?: tEthereumAddress export const getLendingPoolConfiguratorProxy = async (address?: tEthereumAddress) => { return await LendingPoolConfiguratorFactory.connect( address || - (await getDb().get(`${eContractid.LendingPoolConfigurator}.${BRE.network.name}`).value()) + (await getDb().get(`${eContractid.LendingPoolConfigurator}.${DRE.network.name}`).value()) .address, await getFirstSigner() ); @@ -51,55 +51,55 @@ export const getLendingPoolConfiguratorProxy = async (address?: tEthereumAddress export const getLendingPool = async (address?: tEthereumAddress) => await LendingPoolFactory.connect( address || - (await getDb().get(`${eContractid.LendingPool}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.LendingPool}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getPriceOracle = async (address?: tEthereumAddress) => await PriceOracleFactory.connect( address || - (await getDb().get(`${eContractid.PriceOracle}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.PriceOracle}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getAToken = async (address?: tEthereumAddress) => await ATokenFactory.connect( - address || (await getDb().get(`${eContractid.AToken}.${BRE.network.name}`).value()).address, + address || (await getDb().get(`${eContractid.AToken}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getStableDebtToken = async (address?: tEthereumAddress) => await StableDebtTokenFactory.connect( address || - (await getDb().get(`${eContractid.StableDebtToken}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.StableDebtToken}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getVariableDebtToken = async (address?: tEthereumAddress) => await VariableDebtTokenFactory.connect( address || - (await getDb().get(`${eContractid.VariableDebtToken}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.VariableDebtToken}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getMintableErc20 = async (address: tEthereumAddress) => await MintableErc20Factory.connect( address || - (await getDb().get(`${eContractid.MintableERC20}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.MintableERC20}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getIErc20Detailed = async (address: tEthereumAddress) => await Ierc20DetailedFactory.connect( address || - (await getDb().get(`${eContractid.IERC20Detailed}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.IERC20Detailed}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getAaveProtocolTestHelpers = async (address?: tEthereumAddress) => await AaveProtocolTestHelpersFactory.connect( address || - (await getDb().get(`${eContractid.AaveProtocolTestHelpers}.${BRE.network.name}`).value()) + (await getDb().get(`${eContractid.AaveProtocolTestHelpers}.${DRE.network.name}`).value()) .address, await getFirstSigner() ); @@ -109,7 +109,7 @@ export const getInterestRateStrategy = async (address?: tEthereumAddress) => address || ( await getDb() - .get(`${eContractid.DefaultReserveInterestRateStrategy}.${BRE.network.name}`) + .get(`${eContractid.DefaultReserveInterestRateStrategy}.${DRE.network.name}`) .value() ).address, await getFirstSigner() @@ -118,7 +118,7 @@ export const getInterestRateStrategy = async (address?: tEthereumAddress) => export const getMockFlashLoanReceiver = async (address?: tEthereumAddress) => await MockFlashLoanReceiverFactory.connect( address || - (await getDb().get(`${eContractid.MockFlashLoanReceiver}.${BRE.network.name}`).value()) + (await getDb().get(`${eContractid.MockFlashLoanReceiver}.${DRE.network.name}`).value()) .address, await getFirstSigner() ); @@ -126,7 +126,7 @@ export const getMockFlashLoanReceiver = async (address?: tEthereumAddress) => export const getLendingRateOracle = async (address?: tEthereumAddress) => await LendingRateOracleFactory.connect( address || - (await getDb().get(`${eContractid.LendingRateOracle}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.LendingRateOracle}.${DRE.network.name}`).value()).address, await getFirstSigner() ); @@ -136,7 +136,7 @@ export const getMockedTokens = async (config: PoolConfiguration) => { const tokens: MockTokenMap = await tokenSymbols.reduce>( async (acc, tokenSymbol) => { const accumulator = await acc; - const address = db.get(`${tokenSymbol.toUpperCase()}.${BRE.network.name}`).value().address; + const address = db.get(`${tokenSymbol.toUpperCase()}.${DRE.network.name}`).value().address; accumulator[tokenSymbol] = await getMintableErc20(address); return Promise.resolve(acc); }, @@ -150,7 +150,7 @@ export const getAllMockedTokens = async () => { const tokens: MockTokenMap = await Object.keys(TokenContractId).reduce>( async (acc, tokenSymbol) => { const accumulator = await acc; - const address = db.get(`${tokenSymbol.toUpperCase()}.${BRE.network.name}`).value().address; + const address = db.get(`${tokenSymbol.toUpperCase()}.${DRE.network.name}`).value().address; accumulator[tokenSymbol] = await getMintableErc20(address); return Promise.resolve(acc); }, @@ -191,7 +191,7 @@ export const getLendingPoolAddressesProviderRegistry = async (address?: tEthereu address || ( await getDb() - .get(`${eContractid.LendingPoolAddressesProviderRegistry}.${BRE.network.name}`) + .get(`${eContractid.LendingPoolAddressesProviderRegistry}.${DRE.network.name}`) .value() ).address, await getFirstSigner() @@ -200,14 +200,14 @@ export const getLendingPoolAddressesProviderRegistry = async (address?: tEthereu export const getReserveLogic = async (address?: tEthereumAddress) => await ReserveLogicFactory.connect( address || - (await getDb().get(`${eContractid.ReserveLogic}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.ReserveLogic}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getGenericLogic = async (address?: tEthereumAddress) => await GenericLogicFactory.connect( address || - (await getDb().get(`${eContractid.GenericLogic}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.GenericLogic}.${DRE.network.name}`).value()).address, await getFirstSigner() ); @@ -216,7 +216,7 @@ export const getStableAndVariableTokensHelper = async (address?: tEthereumAddres address || ( await getDb() - .get(`${eContractid.StableAndVariableTokensHelper}.${BRE.network.name}`) + .get(`${eContractid.StableAndVariableTokensHelper}.${DRE.network.name}`) .value() ).address, await getFirstSigner() @@ -225,7 +225,7 @@ export const getStableAndVariableTokensHelper = async (address?: tEthereumAddres export const getATokensAndRatesHelper = async (address?: tEthereumAddress) => await ATokensAndRatesHelperFactory.connect( address || - (await getDb().get(`${eContractid.ATokensAndRatesHelper}.${BRE.network.name}`).value()) + (await getDb().get(`${eContractid.ATokensAndRatesHelper}.${DRE.network.name}`).value()) .address, await getFirstSigner() ); @@ -233,26 +233,26 @@ export const getATokensAndRatesHelper = async (address?: tEthereumAddress) => export const getWETHGateway = async (address?: tEthereumAddress) => await WethGatewayFactory.connect( address || - (await getDb().get(`${eContractid.WETHGateway}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.WETHGateway}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getWETHMocked = async (address?: tEthereumAddress) => await Weth9MockedFactory.connect( - address || (await getDb().get(`${eContractid.WETHMocked}.${BRE.network.name}`).value()).address, + address || (await getDb().get(`${eContractid.WETHMocked}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getMockAToken = async (address?: tEthereumAddress) => await MockATokenFactory.connect( - address || (await getDb().get(`${eContractid.MockAToken}.${BRE.network.name}`).value()).address, + address || (await getDb().get(`${eContractid.MockAToken}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getMockVariableDebtToken = async (address?: tEthereumAddress) => await MockVariableDebtTokenFactory.connect( address || - (await getDb().get(`${eContractid.MockVariableDebtToken}.${BRE.network.name}`).value()) + (await getDb().get(`${eContractid.MockVariableDebtToken}.${DRE.network.name}`).value()) .address, await getFirstSigner() ); @@ -260,14 +260,14 @@ export const getMockVariableDebtToken = async (address?: tEthereumAddress) => export const getMockStableDebtToken = async (address?: tEthereumAddress) => await MockStableDebtTokenFactory.connect( address || - (await getDb().get(`${eContractid.MockStableDebtToken}.${BRE.network.name}`).value()).address, + (await getDb().get(`${eContractid.MockStableDebtToken}.${DRE.network.name}`).value()).address, await getFirstSigner() ); export const getSelfdestructTransferMock = async (address?: tEthereumAddress) => await SelfdestructTransferFactory.connect( address || - (await getDb().get(`${eContractid.SelfdestructTransferMock}.${BRE.network.name}`).value()) + (await getDb().get(`${eContractid.SelfdestructTransferMock}.${DRE.network.name}`).value()) .address, await getFirstSigner() ); diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts index 663df086..d651080e 100644 --- a/helpers/contracts-helpers.ts +++ b/helpers/contracts-helpers.ts @@ -2,7 +2,7 @@ import {Contract, Signer, utils, ethers} from 'ethers'; import {signTypedData_v4} from 'eth-sig-util'; import {fromRpcSig, ECDSASignature} from 'ethereumjs-util'; import BigNumber from 'bignumber.js'; -import {getDb, BRE, waitForTx} from './misc-utils'; +import {getDb, DRE, waitForTx} from './misc-utils'; import { tEthereumAddress, eContractid, @@ -14,13 +14,14 @@ import { } from './types'; import {MintableErc20 as MintableERC20} from '../types/MintableErc20'; import {Artifact} from 'hardhat/types'; +import {Artifact as BuidlerArtifact} from '@nomiclabs/buidler/types'; import {verifyContract} from './etherscan-verification'; import {getIErc20Detailed} from './contracts-getters'; export type MockTokenMap = {[symbol: string]: MintableERC20}; export const registerContractInJsonDb = async (contractId: string, contractInstance: Contract) => { - const currentNetwork = BRE.network.name; + const currentNetwork = DRE.network.name; if (currentNetwork !== 'hardhat' && !currentNetwork.includes('coverage')) { console.log(`*** ${contractId} ***\n`); console.log(`Network: ${currentNetwork}`); @@ -43,19 +44,19 @@ export const registerContractInJsonDb = async (contractId: string, contractInsta export const insertContractAddressInDb = async (id: eContractid, address: tEthereumAddress) => await getDb() - .set(`${id}.${BRE.network.name}`, { + .set(`${id}.${DRE.network.name}`, { address, }) .write(); export const getEthersSigners = async (): Promise => - await Promise.all(await BRE.ethers.getSigners()); + await Promise.all(await DRE.ethers.getSigners()); export const getEthersSignersAddresses = async (): Promise => - await Promise.all((await BRE.ethers.getSigners()).map((signer) => signer.getAddress())); + await Promise.all((await DRE.ethers.getSigners()).map((signer) => signer.getAddress())); export const getCurrentBlock = async () => { - return BRE.ethers.provider.getBlockNumber(); + return DRE.ethers.provider.getBlockNumber(); }; export const decodeAbiNumber = (data: string): number => @@ -65,7 +66,7 @@ export const deployContract = async ( contractName: string, args: any[] ): Promise => { - const contract = (await (await BRE.ethers.getContractFactory(contractName)).deploy( + const contract = (await (await DRE.ethers.getContractFactory(contractName)).deploy( ...args )) as ContractType; await waitForTx(contract.deployTransaction); @@ -90,9 +91,9 @@ export const withSaveAndVerify = async ( export const getContract = async ( contractName: string, address: string -): Promise => (await BRE.ethers.getContractAt(contractName, address)) as ContractType; +): Promise => (await DRE.ethers.getContractAt(contractName, address)) as ContractType; -export const linkBytecode = (artifact: Artifact, libraries: any) => { +export const linkBytecode = (artifact: BuidlerArtifact | Artifact, libraries: any) => { let bytecode = artifact.bytecode; for (const [fileName, fileReferences] of Object.entries(artifact.linkReferences)) { diff --git a/helpers/etherscan-verification.ts b/helpers/etherscan-verification.ts index f02b00ec..02fe6c52 100644 --- a/helpers/etherscan-verification.ts +++ b/helpers/etherscan-verification.ts @@ -2,7 +2,7 @@ import {exit} from 'process'; import fs from 'fs'; import globby from 'globby'; import {file} from 'tmp-promise'; -import {BRE} from './misc-utils'; +import {DRE} from './misc-utils'; const listSolidityFiles = (dir: string) => globby(`${dir}/**/*.sol`); @@ -14,7 +14,7 @@ const fatalErrors = [ export const SUPPORTED_ETHERSCAN_NETWORKS = ['main', 'ropsten', 'kovan']; export const getEtherscanPath = async (contractName: string) => { - const paths = await listSolidityFiles(BRE.config.paths.sources); + const paths = await listSolidityFiles(DRE.config.paths.sources); const path = paths.find((p) => p.includes(contractName)); if (!path) { throw new Error( @@ -35,7 +35,7 @@ export const verifyContract = async ( constructorArguments: (string | string[])[], libraries?: string ) => { - const currentNetwork = BRE.network.name; + const currentNetwork = DRE.network.name; if (!process.env.ETHERSCAN_KEY) { throw Error('Missing process.env.ETHERSCAN_KEY.'); @@ -82,7 +82,7 @@ export const runTaskWithRetry = async ( try { if (times) { - await BRE.run(task, params); + await DRE.run(task, params); cleanup(); } else { cleanup(); @@ -107,7 +107,7 @@ export const runTaskWithRetry = async ( }; export const checkVerification = () => { - const currentNetwork = BRE.network.name; + const currentNetwork = DRE.network.name; if (!process.env.ETHERSCAN_KEY) { console.error('Missing process.env.ETHERSCAN_KEY.'); exit(3); diff --git a/helpers/misc-utils.ts b/helpers/misc-utils.ts index 91965035..0356fef4 100644 --- a/helpers/misc-utils.ts +++ b/helpers/misc-utils.ts @@ -5,6 +5,7 @@ import FileSync from 'lowdb/adapters/FileSync'; import {WAD} from './constants'; import {Wallet, ContractTransaction} from 'ethers'; import {HardhatRuntimeEnvironment} from 'hardhat/types'; +import {BuidlerRuntimeEnvironment} from '@nomiclabs/buidler/types'; export const toWad = (value: string | number) => new BigNumber(value).times(WAD).toFixed(); @@ -13,9 +14,11 @@ export const stringToBigNumber = (amount: string): BigNumber => new BigNumber(am export const getDb = () => low(new FileSync('./deployed-contracts.json')); -export let BRE: HardhatRuntimeEnvironment = {} as HardhatRuntimeEnvironment; -export const setBRE = (_BRE: HardhatRuntimeEnvironment) => { - BRE = _BRE; +export let DRE: + | HardhatRuntimeEnvironment + | BuidlerRuntimeEnvironment = {} as HardhatRuntimeEnvironment; +export const setDRE = (_DRE: HardhatRuntimeEnvironment | BuidlerRuntimeEnvironment) => { + DRE = _DRE; }; export const sleep = (milliseconds: number) => { @@ -24,21 +27,21 @@ export const sleep = (milliseconds: number) => { export const createRandomAddress = () => Wallet.createRandom().address; -export const evmSnapshot = async () => await BRE.ethers.provider.send('evm_snapshot', []); +export const evmSnapshot = async () => await DRE.ethers.provider.send('evm_snapshot', []); -export const evmRevert = async (id: string) => BRE.ethers.provider.send('evm_revert', [id]); +export const evmRevert = async (id: string) => DRE.ethers.provider.send('evm_revert', [id]); export const timeLatest = async () => { - const block = await BRE.ethers.provider.getBlock('latest'); + const block = await DRE.ethers.provider.getBlock('latest'); return new BigNumber(block.timestamp); }; export const advanceBlock = async (timestamp: number) => - await BRE.ethers.provider.send('evm_mine', [timestamp]); + await DRE.ethers.provider.send('evm_mine', [timestamp]); export const increaseTime = async (secondsToIncrease: number) => { - await BRE.ethers.provider.send('evm_increaseTime', [secondsToIncrease]); - await BRE.ethers.provider.send('evm_mine', []); + await DRE.ethers.provider.send('evm_increaseTime', [secondsToIncrease]); + await DRE.ethers.provider.send('evm_mine', []); }; export const waitForTx = async (tx: ContractTransaction) => await tx.wait(1); @@ -69,7 +72,7 @@ interface DbEntry { } export const printContracts = () => { - const network = BRE.network.name; + const network = DRE.network.name; const db = getDb(); console.log('Contracts deployed at', network); console.log('---------------------------------'); diff --git a/package.json b/package.json index 7b3db65a..fe1490b4 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "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": "SKIP_LOAD=true 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", @@ -44,7 +44,7 @@ "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:coverage": "buidler compile --force && buidler coverage --network coverage", "dev:deployment": "hardhat dev-deployment", "dev:deployExample": "hardhat deploy-Example", "dev:prettier": "prettier --write .", diff --git a/tasks/dev/1_mock_tokens.ts b/tasks/dev/1_mock_tokens.ts index 221ccd6b..550135f5 100644 --- a/tasks/dev/1_mock_tokens.ts +++ b/tasks/dev/1_mock_tokens.ts @@ -4,6 +4,6 @@ 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) => { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); await deployAllMockTokens(verify); }); diff --git a/tasks/dev/2_address_provider_registry.ts b/tasks/dev/2_address_provider_registry.ts index 5d709cad..cdb29e88 100644 --- a/tasks/dev/2_address_provider_registry.ts +++ b/tasks/dev/2_address_provider_registry.ts @@ -11,7 +11,7 @@ task( ) .addFlag('verify', 'Verify contracts at Etherscan') .setAction(async ({verify}, localBRE) => { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); const admin = await (await localBRE.ethers.getSigners())[0].getAddress(); diff --git a/tasks/dev/3_lending_pool.ts b/tasks/dev/3_lending_pool.ts index 819aa0cc..b1aeb58c 100644 --- a/tasks/dev/3_lending_pool.ts +++ b/tasks/dev/3_lending_pool.ts @@ -17,7 +17,7 @@ import {insertContractAddressInDb} from '../../helpers/contracts-helpers'; task('dev:deploy-lending-pool', 'Deploy lending pool for dev enviroment') .addFlag('verify', 'Verify contracts at Etherscan') .setAction(async ({verify}, localBRE) => { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); const addressesProvider = await getLendingPoolAddressesProvider(); diff --git a/tasks/dev/4_oracles.ts b/tasks/dev/4_oracles.ts index 9814fdf2..a3ce7203 100644 --- a/tasks/dev/4_oracles.ts +++ b/tasks/dev/4_oracles.ts @@ -24,7 +24,7 @@ task('dev:deploy-oracles', 'Deploy oracles for dev enviroment') .addFlag('verify', 'Verify contracts at Etherscan') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .setAction(async ({verify, pool}, localBRE) => { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); const poolConfig = loadPoolConfig(pool); const { Mocks: {ChainlinkAggregatorPrices, AllAssetsInitialPrices}, diff --git a/tasks/dev/5_initialize.ts b/tasks/dev/5_initialize.ts index 8061588e..aadc6a52 100644 --- a/tasks/dev/5_initialize.ts +++ b/tasks/dev/5_initialize.ts @@ -29,7 +29,7 @@ task('dev:initialize-lending-pool', 'Initialize lending pool configuration.') .addFlag('verify', 'Verify contracts at Etherscan') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .setAction(async ({verify, pool}, localBRE) => { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); const poolConfig = loadPoolConfig(pool); const mockTokens = await getAllMockedTokens(); diff --git a/tasks/dev/6_wallet_balance_provider.ts b/tasks/dev/6_wallet_balance_provider.ts index c84395a4..be7f6419 100644 --- a/tasks/dev/6_wallet_balance_provider.ts +++ b/tasks/dev/6_wallet_balance_provider.ts @@ -6,7 +6,7 @@ import {getLendingPoolAddressesProvider} from '../../helpers/contracts-getters'; task('dev:wallet-balance-provider', 'Initialize lending pool configuration.') .addFlag('verify', 'Verify contracts at Etherscan') .setAction(async ({verify}, localBRE) => { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); const addressesProvider = await getLendingPoolAddressesProvider(); await deployWalletBalancerProvider(addressesProvider.address, verify); diff --git a/tasks/full/1_address_provider_registry.ts b/tasks/full/1_address_provider_registry.ts index 00e3fdca..bfe062a8 100644 --- a/tasks/full/1_address_provider_registry.ts +++ b/tasks/full/1_address_provider_registry.ts @@ -16,7 +16,7 @@ task( .addFlag('verify', 'Verify contracts at Etherscan') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .setAction(async ({verify, pool}, localBRE) => { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); const network = localBRE.network.name; const poolConfig = loadPoolConfig(pool); const {ProviderId} = poolConfig; diff --git a/tasks/full/2_lending_pool.ts b/tasks/full/2_lending_pool.ts index b9103a6f..b8b57344 100644 --- a/tasks/full/2_lending_pool.ts +++ b/tasks/full/2_lending_pool.ts @@ -17,7 +17,7 @@ import { task('full:deploy-lending-pool', 'Deploy lending pool for dev enviroment') .addFlag('verify', 'Verify contracts at Etherscan') .setAction(async ({verify}, localBRE) => { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); const addressesProvider = await getLendingPoolAddressesProvider(); diff --git a/tasks/full/3_oracles.ts b/tasks/full/3_oracles.ts index 178862d6..dbc255fa 100644 --- a/tasks/full/3_oracles.ts +++ b/tasks/full/3_oracles.ts @@ -19,7 +19,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .setAction(async ({verify, pool}, localBRE) => { try { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); const network = localBRE.network.name; const poolConfig = loadPoolConfig(pool); const { diff --git a/tasks/full/5_initialize.ts b/tasks/full/5_initialize.ts index 1ac99fad..6b168dc6 100644 --- a/tasks/full/5_initialize.ts +++ b/tasks/full/5_initialize.ts @@ -23,7 +23,7 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .setAction(async ({verify, pool}, localBRE) => { try { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); const network = localBRE.network.name; const poolConfig = loadPoolConfig(pool); const {ReserveAssets, ReservesConfig} = poolConfig as ICommonConfiguration; diff --git a/tasks/migrations/aave.dev.ts b/tasks/migrations/aave.dev.ts index 29412f74..1892cb53 100644 --- a/tasks/migrations/aave.dev.ts +++ b/tasks/migrations/aave.dev.ts @@ -1,17 +1,14 @@ 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') .setAction(async ({verify}, localBRE) => { const POOL_NAME = ConfigNames.Aave; - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); // Prevent loss of gas verifying all the needed ENVs for Etherscan verification if (verify) { diff --git a/tasks/migrations/aave.full.ts b/tasks/migrations/aave.full.ts index 7d9963c8..502a77ae 100644 --- a/tasks/migrations/aave.full.ts +++ b/tasks/migrations/aave.full.ts @@ -10,7 +10,7 @@ task('aave:full', 'Deploy development enviroment') const POOL_NAME = ConfigNames.Aave; const network = localBRE.network.name; - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); // Prevent loss of gas verifying all the needed ENVs for Etherscan verification if (verify) { diff --git a/tasks/migrations/uniswap.dev.ts b/tasks/migrations/uniswap.dev.ts index d2c56acf..70a31f49 100644 --- a/tasks/migrations/uniswap.dev.ts +++ b/tasks/migrations/uniswap.dev.ts @@ -7,7 +7,7 @@ task('uniswap:dev', 'Deploy development enviroment') .setAction(async ({verify}, localBRE) => { const POOL_NAME = ConfigNames.Uniswap; - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); // Prevent loss of gas verifying all the needed ENVs for Etherscan verification if (verify) { diff --git a/tasks/migrations/uniswap.full.ts b/tasks/migrations/uniswap.full.ts index 0dbc4204..bca82466 100644 --- a/tasks/migrations/uniswap.full.ts +++ b/tasks/migrations/uniswap.full.ts @@ -7,7 +7,7 @@ task('uniswap:full', 'Deploy development enviroment') .setAction(async ({verify}, localBRE) => { const POOL_NAME = ConfigNames.Uniswap; - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); // Prevent loss of gas verifying all the needed ENVs for Etherscan verification if (verify) { diff --git a/tasks/misc/print-contracts.ts b/tasks/misc/print-contracts.ts index 51e08ec7..d3caf0cc 100644 --- a/tasks/misc/print-contracts.ts +++ b/tasks/misc/print-contracts.ts @@ -1,9 +1,9 @@ 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( +task('print-contracts', 'Inits the DRE, to have access to all the plugins').setAction( async ({}, localBRE) => { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); printContracts(); } ); diff --git a/tasks/misc/set-bre.ts b/tasks/misc/set-bre.ts index 8156aadb..a1cb29c5 100644 --- a/tasks/misc/set-bre.ts +++ b/tasks/misc/set-bre.ts @@ -1,9 +1,9 @@ import {task} from 'hardhat/config'; -import {setBRE} from '../../helpers/misc-utils'; +import {setDRE} from '../../helpers/misc-utils'; -task(`set-bre`, `Inits the BRE, to have access to all the plugins' objects`).setAction( - async (_, _BRE) => { - setBRE(_BRE); - return _BRE; +task(`set-DRE`, `Inits the DRE, to have access to all the plugins' objects`).setAction( + async (_, _DRE) => { + setDRE(_DRE); + return _DRE; } ); diff --git a/tasks/misc/verify-sc.ts b/tasks/misc/verify-sc.ts index b5fbf650..854aa36c 100644 --- a/tasks/misc/verify-sc.ts +++ b/tasks/misc/verify-sc.ts @@ -8,7 +8,7 @@ interface VerifyParams { libraries: string; } -task('verify-sc', 'Inits the BRE, to have access to all the plugins') +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( @@ -25,7 +25,7 @@ task('verify-sc', 'Inits the BRE, to have access to all the plugins') {contractName, address, constructorArguments = [], libraries}: VerifyParams, localBRE ) => { - await localBRE.run('set-bre'); + await localBRE.run('set-DRE'); checkVerification(); diff --git a/test/__setup.spec.ts b/test/__setup.spec.ts index 09079f47..b5c7f1dc 100644 --- a/test/__setup.spec.ts +++ b/test/__setup.spec.ts @@ -263,7 +263,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { }; before(async () => { - await rawBRE.run('set-bre'); + await rawBRE.run('set-DRE'); const [deployer, secondaryWallet] = await getEthersSigners(); console.log('-> Deploying test environment...'); await buildTestEnv(deployer, secondaryWallet); diff --git a/test/atoken-permit.spec.ts b/test/atoken-permit.spec.ts index 44c90008..aa680ee3 100644 --- a/test/atoken-permit.spec.ts +++ b/test/atoken-permit.spec.ts @@ -5,7 +5,7 @@ import {expect} from 'chai'; import {ethers} from 'ethers'; import {eEthereumNetwork} from '../helpers/types'; import {makeSuite, TestEnv} from './helpers/make-suite'; -import {BRE} from '../helpers/misc-utils'; +import {DRE} from '../helpers/misc-utils'; import { ConfigNames, getATokenDomainSeparatorPerNetwork, @@ -47,7 +47,7 @@ makeSuite('AToken: Permit', (testEnv: TestEnv) => { const tokenName = await aDai.name(); - const chainId = BRE.network.config.chainId || BUIDLEREVM_CHAINID; + const chainId = DRE.network.config.chainId || BUIDLEREVM_CHAINID; const expiration = 0; const nonce = (await aDai._nonces(owner.address)).toNumber(); const permitAmount = ethers.utils.parseEther('2').toString(); @@ -92,7 +92,7 @@ makeSuite('AToken: Permit', (testEnv: TestEnv) => { const owner = deployer; const spender = users[1]; - const chainId = BRE.network.config.chainId || BUIDLEREVM_CHAINID; + const chainId = DRE.network.config.chainId || BUIDLEREVM_CHAINID; const deadline = MAX_UINT_AMOUNT; const nonce = (await aDai._nonces(owner.address)).toNumber(); const permitAmount = parseEther('2').toString(); @@ -134,7 +134,7 @@ makeSuite('AToken: Permit', (testEnv: TestEnv) => { const owner = deployer; const spender = users[1]; - const chainId = BRE.network.config.chainId || BUIDLEREVM_CHAINID; + const chainId = DRE.network.config.chainId || BUIDLEREVM_CHAINID; const deadline = MAX_UINT_AMOUNT; const nonce = (await aDai._nonces(owner.address)).toNumber(); const permitAmount = '0'; @@ -180,7 +180,7 @@ makeSuite('AToken: Permit', (testEnv: TestEnv) => { const owner = deployer; const spender = users[1]; - const chainId = BRE.network.config.chainId || BUIDLEREVM_CHAINID; + const chainId = DRE.network.config.chainId || BUIDLEREVM_CHAINID; const deadline = MAX_UINT_AMOUNT; const nonce = 1000; const permitAmount = '0'; @@ -215,7 +215,7 @@ makeSuite('AToken: Permit', (testEnv: TestEnv) => { const owner = deployer; const spender = users[1]; - const chainId = BRE.network.config.chainId || BUIDLEREVM_CHAINID; + const chainId = DRE.network.config.chainId || BUIDLEREVM_CHAINID; const expiration = '1'; const nonce = (await aDai._nonces(owner.address)).toNumber(); const permitAmount = '0'; @@ -250,7 +250,7 @@ makeSuite('AToken: Permit', (testEnv: TestEnv) => { const owner = deployer; const spender = users[1]; - const chainId = BRE.network.config.chainId || BUIDLEREVM_CHAINID; + const chainId = DRE.network.config.chainId || BUIDLEREVM_CHAINID; const deadline = MAX_UINT_AMOUNT; const nonce = (await aDai._nonces(owner.address)).toNumber(); const permitAmount = '0'; @@ -285,7 +285,7 @@ makeSuite('AToken: Permit', (testEnv: TestEnv) => { const owner = deployer; const spender = users[1]; - const chainId = BRE.network.config.chainId || BUIDLEREVM_CHAINID; + const chainId = DRE.network.config.chainId || BUIDLEREVM_CHAINID; const expiration = MAX_UINT_AMOUNT; const nonce = (await aDai._nonces(owner.address)).toNumber(); const permitAmount = '0'; diff --git a/test/delegation-aware-atoken.spec.ts b/test/delegation-aware-atoken.spec.ts index 7170cc22..cc055c0d 100644 --- a/test/delegation-aware-atoken.spec.ts +++ b/test/delegation-aware-atoken.spec.ts @@ -5,7 +5,7 @@ import {expect} from 'chai'; import {ethers} from 'ethers'; import {eEthereumNetwork, ProtocolErrors} from '../helpers/types'; import {makeSuite, TestEnv} from './helpers/make-suite'; -import {BRE} from '../helpers/misc-utils'; +import {DRE} from '../helpers/misc-utils'; import { ConfigNames, getATokenDomainSeparatorPerNetwork, diff --git a/test/helpers/actions.ts b/test/helpers/actions.ts index d998962b..c6feab6b 100644 --- a/test/helpers/actions.ts +++ b/test/helpers/actions.ts @@ -21,7 +21,7 @@ import {convertToCurrencyDecimals} from '../../helpers/contracts-helpers'; import {getAToken, getMintableErc20} from '../../helpers/contracts-getters'; import {MAX_UINT_AMOUNT, ONE_YEAR} from '../../helpers/constants'; import {SignerWithAddress, TestEnv} from './make-suite'; -import {BRE, increaseTime, timeLatest, waitForTx} from '../../helpers/misc-utils'; +import {DRE, increaseTime, timeLatest, waitForTx} from '../../helpers/misc-utils'; import chai from 'chai'; import {ReserveData, UserReserveData} from './utils/interfaces'; @@ -729,9 +729,9 @@ export const getTxCostAndTimestamp = async (tx: ContractReceipt) => { if (!tx.blockNumber || !tx.transactionHash || !tx.cumulativeGasUsed) { throw new Error('No tx blocknumber'); } - const txTimestamp = new BigNumber((await BRE.ethers.provider.getBlock(tx.blockNumber)).timestamp); + const txTimestamp = new BigNumber((await DRE.ethers.provider.getBlock(tx.blockNumber)).timestamp); - const txInfo = await BRE.ethers.provider.getTransaction(tx.transactionHash); + const txInfo = await DRE.ethers.provider.getTransaction(tx.transactionHash); const txCost = new BigNumber(tx.cumulativeGasUsed.toString()).multipliedBy( txInfo.gasPrice.toString() ); diff --git a/test/helpers/make-suite.ts b/test/helpers/make-suite.ts index b875193d..1099b7b2 100644 --- a/test/helpers/make-suite.ts +++ b/test/helpers/make-suite.ts @@ -1,4 +1,4 @@ -import {evmRevert, evmSnapshot, BRE} from '../../helpers/misc-utils'; +import {evmRevert, evmSnapshot, DRE} from '../../helpers/misc-utils'; import {Signer} from 'ethers'; import { getLendingPool, @@ -59,7 +59,7 @@ export interface TestEnv { let buidlerevmSnapshotId: string = '0x1'; const setBuidlerevmSnapshotId = (id: string) => { - if (BRE.network.name === 'hardhat') { + if (DRE.network.name === 'hardhat') { buidlerevmSnapshotId = id; } }; diff --git a/test/helpers/utils/helpers.ts b/test/helpers/utils/helpers.ts index 7a909c20..c51a8960 100644 --- a/test/helpers/utils/helpers.ts +++ b/test/helpers/utils/helpers.ts @@ -10,7 +10,7 @@ import { } from '../../../helpers/contracts-getters'; import {tEthereumAddress} from '../../../helpers/types'; import BigNumber from 'bignumber.js'; -import {getDb, BRE} from '../../../helpers/misc-utils'; +import {getDb, DRE} from '../../../helpers/misc-utils'; import {AaveProtocolTestHelpers} from '../../../types/AaveProtocolTestHelpers'; export const getReserveData = async ( @@ -104,7 +104,7 @@ export const getUserData = async ( export const getReserveAddressFromSymbol = async (symbol: string) => { const token = await getMintableErc20( - (await getDb().get(`${symbol}.${BRE.network.name}`).value()).address + (await getDb().get(`${symbol}.${DRE.network.name}`).value()).address ); if (!token) { diff --git a/test/liquidation-atoken.spec.ts b/test/liquidation-atoken.spec.ts index 78b97842..b0f65336 100644 --- a/test/liquidation-atoken.spec.ts +++ b/test/liquidation-atoken.spec.ts @@ -1,6 +1,6 @@ import BigNumber from 'bignumber.js'; -import {BRE} from '../helpers/misc-utils'; +import {DRE} from '../helpers/misc-utils'; import {oneEther} from '../helpers/constants'; import {convertToCurrencyDecimals} from '../helpers/contracts-helpers'; import {makeSuite} from './helpers/make-suite'; @@ -185,7 +185,7 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => } const txTimestamp = new BigNumber( - (await BRE.ethers.provider.getBlock(tx.blockNumber)).timestamp + (await DRE.ethers.provider.getBlock(tx.blockNumber)).timestamp ); const variableDebtBeforeTx = calcExpectedVariableDebtTokenBalance( diff --git a/test/liquidation-underlying.spec.ts b/test/liquidation-underlying.spec.ts index 3a735e79..cccd46e8 100644 --- a/test/liquidation-underlying.spec.ts +++ b/test/liquidation-underlying.spec.ts @@ -1,6 +1,6 @@ import BigNumber from 'bignumber.js'; -import {BRE, increaseTime} from '../helpers/misc-utils'; +import {DRE, increaseTime} from '../helpers/misc-utils'; import {oneEther} from '../helpers/constants'; import {convertToCurrencyDecimals} from '../helpers/contracts-helpers'; import {makeSuite} from './helpers/make-suite'; @@ -185,7 +185,7 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', return; } const txTimestamp = new BigNumber( - (await BRE.ethers.provider.getBlock(tx.blockNumber)).timestamp + (await DRE.ethers.provider.getBlock(tx.blockNumber)).timestamp ); const stableDebtBeforeTx = calcExpectedStableDebtTokenBalance( @@ -302,7 +302,7 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', const usdcReserveDataBefore = await helpersContract.getReserveData(usdc.address); const ethReserveDataBefore = await helpersContract.getReserveData(weth.address); - const amountToLiquidate = BRE.ethers.BigNumber.from( + const amountToLiquidate = DRE.ethers.BigNumber.from( userReserveDataBefore.currentStableDebt.toString() ) .div(2) diff --git a/test/weth-gateway.spec.ts b/test/weth-gateway.spec.ts index f201a218..402ddabb 100644 --- a/test/weth-gateway.spec.ts +++ b/test/weth-gateway.spec.ts @@ -2,7 +2,7 @@ import {MAX_UINT_AMOUNT} from '../helpers/constants'; import {convertToCurrencyDecimals} from '../helpers/contracts-helpers'; import {makeSuite, TestEnv} from './helpers/make-suite'; import {formatEther, parseEther, parseUnits} from 'ethers/lib/utils'; -import {BRE, waitForTx} from '../helpers/misc-utils'; +import {DRE, waitForTx} from '../helpers/misc-utils'; import {BigNumber} from 'ethers'; import {getStableDebtToken, getVariableDebtToken} from '../helpers/contracts-getters'; import {WethGateway} from '../types/WethGateway'; @@ -195,7 +195,7 @@ makeSuite('Use native ETH at LendingPool via WETHGateway', (testEnv: TestEnv) => user.signer.sendTransaction({ to: wethGateway.address, value: amount, - gasLimit: BRE.network.config.gas, + gasLimit: DRE.network.config.gas, }) ).to.be.revertedWith('Receive not allowed'); }); @@ -205,7 +205,7 @@ makeSuite('Use native ETH at LendingPool via WETHGateway', (testEnv: TestEnv) => const user = users[0]; const amount = parseEther('1'); const fakeABI = ['function wantToCallFallback()']; - const abiCoder = new BRE.ethers.utils.Interface(fakeABI); + const abiCoder = new DRE.ethers.utils.Interface(fakeABI); const fakeMethodEncoded = abiCoder.encodeFunctionData('wantToCallFallback', []); // Call fallback function with value @@ -214,7 +214,7 @@ makeSuite('Use native ETH at LendingPool via WETHGateway', (testEnv: TestEnv) => to: wethGateway.address, data: fakeMethodEncoded, value: amount, - gasLimit: BRE.network.config.gas, + gasLimit: DRE.network.config.gas, }) ).to.be.revertedWith('Fallback not allowed'); }); @@ -224,7 +224,7 @@ makeSuite('Use native ETH at LendingPool via WETHGateway', (testEnv: TestEnv) => const user = users[0]; const fakeABI = ['function wantToCallFallback()']; - const abiCoder = new BRE.ethers.utils.Interface(fakeABI); + const abiCoder = new DRE.ethers.utils.Interface(fakeABI); const fakeMethodEncoded = abiCoder.encodeFunctionData('wantToCallFallback', []); // Call fallback function without value @@ -232,7 +232,7 @@ makeSuite('Use native ETH at LendingPool via WETHGateway', (testEnv: TestEnv) => user.signer.sendTransaction({ to: wethGateway.address, data: fakeMethodEncoded, - gasLimit: BRE.network.config.gas, + gasLimit: DRE.network.config.gas, }) ).to.be.revertedWith('Fallback not allowed'); }); @@ -299,7 +299,7 @@ makeSuite('Use native ETH at LendingPool via WETHGateway', (testEnv: TestEnv) => await wethGateway.connect(deployer.signer).emergencyEtherTransfer(user.address, amount); const userBalanceAfterRecovery = await user.signer.getBalance(); - const wethGatewayAfterRecovery = await BRE.ethers.provider.getBalance(wethGateway.address); + const wethGatewayAfterRecovery = await DRE.ethers.provider.getBalance(wethGateway.address); expect(userBalanceAfterRecovery).to.be.eq( userBalancePriorCall.sub(gasFees), From 51b3fb16697552ad87ba0a7e8a10846e64a448c7 Mon Sep 17 00:00:00 2001 From: David Racero Date: Thu, 5 Nov 2020 15:31:35 +0100 Subject: [PATCH 3/8] Fix migration logic --- hardhat.config.ts | 1 - helpers/configuration.ts | 2 ++ helpers/contracts-deployments.ts | 3 ++- helpers/contracts-helpers.ts | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index 7398222d..76c6e3c9 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -23,7 +23,6 @@ const MNEMONIC = process.env.MNEMONIC || ''; // Prevent to load scripts before compilation and typechain if (!SKIP_LOAD) { - console.log('NOT SKPP'); ['misc', 'migrations', 'dev', 'full'].forEach((folder) => { const tasksPath = path.join(__dirname, 'tasks', folder); fs.readdirSync(tasksPath) diff --git a/helpers/configuration.ts b/helpers/configuration.ts index 8faea63f..74f0d027 100644 --- a/helpers/configuration.ts +++ b/helpers/configuration.ts @@ -87,11 +87,13 @@ export const getWethAddress = async (config: ICommonConfiguration) => { const currentNetwork = DRE.network.name; const wethAddress = getParamPerNetwork(config.WETH, currentNetwork); if (wethAddress) { + console.log('here', wethAddress); return wethAddress; } if (currentNetwork.includes('main')) { throw new Error('WETH not set at mainnet configuration.'); } const weth = await deployWETHMocked(); + console.log('here2'); return weth.address; }; diff --git a/helpers/contracts-deployments.ts b/helpers/contracts-deployments.ts index a8185ff3..daacfde4 100644 --- a/helpers/contracts-deployments.ts +++ b/helpers/contracts-deployments.ts @@ -52,12 +52,13 @@ import {withSaveAndVerify, registerContractInJsonDb, linkBytecode} from './contr import {StableAndVariableTokensHelperFactory} from '../types/StableAndVariableTokensHelperFactory'; import {MintableDelegationErc20} from '../types/MintableDelegationErc20'; import {readArtifact as buidlerReadArtifact} from '@nomiclabs/buidler/plugins'; +import {HardhatRuntimeEnvironment} from 'hardhat/types'; const readArtifact = async (id: string) => { if (DRE.network.name === eEthereumNetwork.buidlerevm) { return buidlerReadArtifact(DRE.config.paths.artifacts, id); } - return DRE.artifacts.readArtifact(id); + return (DRE as HardhatRuntimeEnvironment).artifacts.readArtifact(id); }; export const deployLendingPoolAddressesProvider = async (verify?: boolean) => withSaveAndVerify( diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts index d651080e..25624634 100644 --- a/helpers/contracts-helpers.ts +++ b/helpers/contracts-helpers.ts @@ -125,14 +125,14 @@ export const getParamPerNetwork = ( return coverage; case eEthereumNetwork.buidlerevm: return buidlerevm; + case eEthereumNetwork.hardhat: + return buidlerevm; case eEthereumNetwork.kovan: return kovan; case eEthereumNetwork.ropsten: return ropsten; case eEthereumNetwork.main: return main; - default: - return main; } }; From 1c9eb2efbf6bc2d030cb5119fc4587e8887f221d Mon Sep 17 00:00:00 2001 From: David Racero Date: Thu, 5 Nov 2020 15:52:36 +0100 Subject: [PATCH 4/8] Fix CI --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fe1490b4..f8ff5d3b 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "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:test": "npm run compile && npm run test", "ci:clean": "rm -rf ./artifacts ./cache ./types", "print-contracts:kovan": "npm run hardhat:kovan -- print-contracts", "print-contracts:main": "npm run hardhat:main -- print-contracts", From 3aa5de28b4b59b00b11515b9ee76ccad6bd19092 Mon Sep 17 00:00:00 2001 From: eboado Date: Fri, 6 Nov 2020 12:09:24 +0100 Subject: [PATCH 5/8] - Added management of WETH to ChainlinkProxyPriceProvider. --- contracts/misc/ChainlinkProxyPriceProvider.sol | 13 ++++++++++--- helpers/contracts-deployments.ts | 2 +- tasks/dev/4_oracles.ts | 7 +++++-- tasks/full/3_oracles.ts | 4 ++-- test/__setup.spec.ts | 1 + 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/contracts/misc/ChainlinkProxyPriceProvider.sol b/contracts/misc/ChainlinkProxyPriceProvider.sol index a259ba50..f6516abc 100644 --- a/contracts/misc/ChainlinkProxyPriceProvider.sol +++ b/contracts/misc/ChainlinkProxyPriceProvider.sol @@ -18,11 +18,13 @@ import {SafeERC20} from '../dependencies/openzeppelin/contracts/SafeERC20.sol'; contract ChainlinkProxyPriceProvider is IPriceOracleGetter, Ownable { using SafeERC20 for IERC20; + event WethSet(address indexed weth); event AssetSourceUpdated(address indexed asset, address indexed source); event FallbackOracleUpdated(address indexed fallbackOracle); mapping(address => IChainlinkAggregator) private assetsSources; IPriceOracleGetter private _fallbackOracle; + address public immutable WETH; /// @notice Constructor /// @param assets The addresses of the assets @@ -32,10 +34,13 @@ contract ChainlinkProxyPriceProvider is IPriceOracleGetter, Ownable { constructor( address[] memory assets, address[] memory sources, - address fallbackOracle + address fallbackOracle, + address weth ) public { _setFallbackOracle(fallbackOracle); _setAssetsSources(assets, sources); + WETH = weth; + emit WethSet(weth); } /// @notice External function called by the Aave governance to set or replace sources of assets @@ -77,8 +82,10 @@ contract ChainlinkProxyPriceProvider is IPriceOracleGetter, Ownable { /// @param asset The asset address function getAssetPrice(address asset) public override view returns (uint256) { IChainlinkAggregator source = assetsSources[asset]; - // If there is no registered source for the asset, call the fallbackOracle - if (address(source) == address(0)) { + + if (asset == WETH) { + return 1 ether; + } else if (address(source) == address(0)) { return _fallbackOracle.getAssetPrice(asset); } else { int256 price = IChainlinkAggregator(source).latestAnswer(); diff --git a/helpers/contracts-deployments.ts b/helpers/contracts-deployments.ts index bc5e7d81..019aff73 100644 --- a/helpers/contracts-deployments.ts +++ b/helpers/contracts-deployments.ts @@ -191,7 +191,7 @@ export const deployMockAggregator = async (price: tStringTokenSmallUnits, verify ); export const deployChainlinkProxyPriceProvider = async ( - args: [tEthereumAddress[], tEthereumAddress[], tEthereumAddress], + args: [tEthereumAddress[], tEthereumAddress[], tEthereumAddress, tEthereumAddress], verify?: boolean ) => withSaveAndVerify( diff --git a/tasks/dev/4_oracles.ts b/tasks/dev/4_oracles.ts index 94b679e1..aea30974 100644 --- a/tasks/dev/4_oracles.ts +++ b/tasks/dev/4_oracles.ts @@ -13,7 +13,7 @@ import { import {ICommonConfiguration, iAssetBase, TokenContractId} from '../../helpers/types'; import {waitForTx} from '../../helpers/misc-utils'; import {getAllAggregatorsAddresses, getAllTokenAddresses} from '../../helpers/mock-helpers'; -import {ConfigNames, loadPoolConfig} from '../../helpers/configuration'; +import {ConfigNames, loadPoolConfig, getWethAddress} from '../../helpers/configuration'; import { getAllMockedTokens, getLendingPoolAddressesProvider, @@ -58,7 +58,10 @@ task('dev:deploy-oracles', 'Deploy oracles for dev enviroment') allAggregatorsAddresses ); - await deployChainlinkProxyPriceProvider([tokens, aggregators, fallbackOracle.address], verify); + await deployChainlinkProxyPriceProvider( + [tokens, aggregators, fallbackOracle.address, await getWethAddress(poolConfig)], + verify + ); await waitForTx(await addressesProvider.setPriceOracle(fallbackOracle.address)); const lendingRateOracle = await deployLendingRateOracle(verify); diff --git a/tasks/full/3_oracles.ts b/tasks/full/3_oracles.ts index d5b4c3dc..6583523a 100644 --- a/tasks/full/3_oracles.ts +++ b/tasks/full/3_oracles.ts @@ -7,7 +7,7 @@ import { import {setInitialMarketRatesInRatesOracleByHelper} from '../../helpers/oracles-helpers'; import {ICommonConfiguration, eEthereumNetwork, SymbolMap} from '../../helpers/types'; import {waitForTx, filterMapBy} from '../../helpers/misc-utils'; -import {ConfigNames, loadPoolConfig} from '../../helpers/configuration'; +import {ConfigNames, loadPoolConfig, getWethAddress} from '../../helpers/configuration'; import {exit} from 'process'; import { getLendingPoolAddressesProvider, @@ -46,7 +46,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment') const [tokens, aggregators] = getPairsTokenAggregator(tokensToWatch, chainlinkAggregators); const chainlinkProviderPriceProvider = await deployChainlinkProxyPriceProvider( - [tokens, aggregators, fallbackOracle], + [tokens, aggregators, fallbackOracle, await getWethAddress(poolConfig)], verify ); await waitForTx( diff --git a/test/__setup.spec.ts b/test/__setup.spec.ts index 738cd0f2..7d5db3e3 100644 --- a/test/__setup.spec.ts +++ b/test/__setup.spec.ts @@ -205,6 +205,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { tokens, aggregators, fallbackOracle.address, + mockTokens.WETH.address ]); await waitForTx(await addressesProvider.setPriceOracle(fallbackOracle.address)); From ef9e32f13b7f896fcfa226d4421a490c66af13e6 Mon Sep 17 00:00:00 2001 From: David Racero Date: Fri, 6 Nov 2020 12:14:41 +0100 Subject: [PATCH 6/8] Fix typos --- helpers/configuration.ts | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/helpers/configuration.ts b/helpers/configuration.ts index 390739c4..62e7282f 100644 --- a/helpers/configuration.ts +++ b/helpers/configuration.ts @@ -7,13 +7,12 @@ import { ICommonConfiguration, eEthereumNetwork, } from './types'; - import {getParamPerPool} from './contracts-helpers'; import {AaveConfig} from '../config/aave'; import {UniswapConfig} from '../config/uniswap'; import {CommonsConfig} from '../config/commons'; import {ZERO_ADDRESS} from './constants'; -import {DRE} from './misc-utils'; +import {BRE} from './misc-utils'; import {tEthereumAddress} from './types'; import {getParamPerNetwork} from './contracts-helpers'; import {deployWETHMocked} from './contracts-deployments'; @@ -58,7 +57,7 @@ export const getFeeDistributionParamsCommon = ( receiver: tEthereumAddress ): iBasicDistributionParams => { const receivers = [receiver, ZERO_ADDRESS]; - const percentages = ['200:0', '8000']; + const percentages = ['2000', '8000']; return { receivers, percentages, @@ -66,26 +65,26 @@ export const getFeeDistributionParamsCommon = ( }; export const getGenesisPoolAdmin = async (config: ICommonConfiguration) => { - const currentNetwork = DRE.network.name; + const currentNetwork = BRE.network.name; const targetAddress = getParamPerNetwork(config.PoolAdmin, currentNetwork); if (targetAddress) { return targetAddress; } const addressList = await Promise.all( - (await DRE.ethers.getSigners()).map((signer) => signer.getAddress()) + (await BRE.ethers.getSigners()).map((signer) => signer.getAddress()) ); const addressIndex = config.PoolAdminIndex; return addressList[addressIndex]; }; export const getEmergencyAdmin = async (config: ICommonConfiguration) => { - const currentNetwork = DRE.network.name; + const currentNetwork = BRE.network.name; const targetAddress = getParamPerNetwork(config.EmergencyAdmin, currentNetwork); if (targetAddress) { return targetAddress; } const addressList = await Promise.all( - (await DRE.ethers.getSigners()).map((signer) => signer.getAddress()) + (await BRE.ethers.getSigners()).map((signer) => signer.getAddress()) ); const addressIndex = config.EmergencyAdminIndex; return addressList[addressIndex]; @@ -97,16 +96,14 @@ export const getATokenDomainSeparatorPerNetwork = ( ): tEthereumAddress => getParamPerNetwork(config.ATokenDomainSeparator, network); export const getWethAddress = async (config: ICommonConfiguration) => { - const currentNetwork = DRE.network.name; + const currentNetwork = BRE.network.name; const wethAddress = getParamPerNetwork(config.WETH, currentNetwork); if (wethAddress) { - console.log('here', wethAddress); return wethAddress; } if (currentNetwork.includes('main')) { throw new Error('WETH not set at mainnet configuration.'); } const weth = await deployWETHMocked(); - console.log('here2'); return weth.address; }; From 1ee5ac78af36b51b0bdef10447666daf16ba3df7 Mon Sep 17 00:00:00 2001 From: David Racero Date: Fri, 6 Nov 2020 12:14:41 +0100 Subject: [PATCH 7/8] Fix typos --- helpers/configuration.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/helpers/configuration.ts b/helpers/configuration.ts index 390739c4..2f664891 100644 --- a/helpers/configuration.ts +++ b/helpers/configuration.ts @@ -58,7 +58,7 @@ export const getFeeDistributionParamsCommon = ( receiver: tEthereumAddress ): iBasicDistributionParams => { const receivers = [receiver, ZERO_ADDRESS]; - const percentages = ['200:0', '8000']; + const percentages = ['2000', '8000']; return { receivers, percentages, @@ -100,13 +100,11 @@ export const getWethAddress = async (config: ICommonConfiguration) => { const currentNetwork = DRE.network.name; const wethAddress = getParamPerNetwork(config.WETH, currentNetwork); if (wethAddress) { - console.log('here', wethAddress); return wethAddress; } if (currentNetwork.includes('main')) { throw new Error('WETH not set at mainnet configuration.'); } const weth = await deployWETHMocked(); - console.log('here2'); return weth.address; }; From b5a52c2b987fad969e53f59fb9f3e26de2e7cebb Mon Sep 17 00:00:00 2001 From: David Racero Date: Fri, 6 Nov 2020 12:19:08 +0100 Subject: [PATCH 8/8] Fix rename --- helpers/configuration.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/helpers/configuration.ts b/helpers/configuration.ts index 62e7282f..026bf250 100644 --- a/helpers/configuration.ts +++ b/helpers/configuration.ts @@ -12,7 +12,7 @@ import {AaveConfig} from '../config/aave'; import {UniswapConfig} from '../config/uniswap'; import {CommonsConfig} from '../config/commons'; import {ZERO_ADDRESS} from './constants'; -import {BRE} from './misc-utils'; +import {DRE} from './misc-utils'; import {tEthereumAddress} from './types'; import {getParamPerNetwork} from './contracts-helpers'; import {deployWETHMocked} from './contracts-deployments'; @@ -65,26 +65,26 @@ export const getFeeDistributionParamsCommon = ( }; export const getGenesisPoolAdmin = async (config: ICommonConfiguration) => { - const currentNetwork = BRE.network.name; + const currentNetwork = DRE.network.name; const targetAddress = getParamPerNetwork(config.PoolAdmin, currentNetwork); if (targetAddress) { return targetAddress; } const addressList = await Promise.all( - (await BRE.ethers.getSigners()).map((signer) => signer.getAddress()) + (await DRE.ethers.getSigners()).map((signer) => signer.getAddress()) ); const addressIndex = config.PoolAdminIndex; return addressList[addressIndex]; }; export const getEmergencyAdmin = async (config: ICommonConfiguration) => { - const currentNetwork = BRE.network.name; + const currentNetwork = DRE.network.name; const targetAddress = getParamPerNetwork(config.EmergencyAdmin, currentNetwork); if (targetAddress) { return targetAddress; } const addressList = await Promise.all( - (await BRE.ethers.getSigners()).map((signer) => signer.getAddress()) + (await DRE.ethers.getSigners()).map((signer) => signer.getAddress()) ); const addressIndex = config.EmergencyAdminIndex; return addressList[addressIndex]; @@ -96,7 +96,7 @@ export const getATokenDomainSeparatorPerNetwork = ( ): tEthereumAddress => getParamPerNetwork(config.ATokenDomainSeparator, network); export const getWethAddress = async (config: ICommonConfiguration) => { - const currentNetwork = BRE.network.name; + const currentNetwork = DRE.network.name; const wethAddress = getParamPerNetwork(config.WETH, currentNetwork); if (wethAddress) { return wethAddress;