From baa5de09d0029e94eb28320e26c73facd3b388d0 Mon Sep 17 00:00:00 2001 From: Hadrien Charlanes Date: Mon, 22 Feb 2021 09:59:21 +0100 Subject: [PATCH 01/17] Improved hardhat config --- hardhat.config.ts | 68 +++++++++++----------------------------- helper-hardhat-config.ts | 41 ++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 50 deletions(-) create mode 100644 helper-hardhat-config.ts diff --git a/hardhat.config.ts b/hardhat.config.ts index 030a780d..7f293569 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -3,9 +3,10 @@ import fs from 'fs'; import { HardhatUserConfig } from 'hardhat/types'; // @ts-ignore import { accounts } from './test-wallets.js'; -import { eEthereumNetwork } from './helpers/types'; +import { eEthereumNetwork, iParamsPerNetwork } from './helpers/types'; import { BUIDLEREVM_CHAINID, COVERAGE_CHAINID } from './helpers/buidler-constants'; - +import { NETWORKS_RPC_URL, NETWORKS_DEFAULT_GAS } from './helper-hardhat-config'; + require('dotenv').config(); import '@nomiclabs/hardhat-ethers'; @@ -43,58 +44,25 @@ if (!SKIP_LOAD) { require(`${path.join(__dirname, 'tasks/misc')}/set-bre.ts`); -const getCommonNetworkConfig = (networkName: eEthereumNetwork, networkId: number) => { - const net = networkName === 'main' ? 'mainnet' : networkName; - if (networkName == 'matic') return { - url: 'https://rpc-mainnet.matic.network', - blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT, - gasMultiplier: DEFAULT_GAS_MUL, - gasPrice: 7500000000, - chainId: networkId, - accounts: { - mnemonic: MNEMONIC, - path: MNEMONIC_PATH, - initialIndex: 0, - count: 20, - }, - } - if (networkName == 'mumbai') return { - url: 'https://rpc-mumbai.maticvigil.com', - blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT, - gasMultiplier: DEFAULT_GAS_MUL, - gasPrice: 1 * 1000 * 1000 * 1000, - chainId: networkId, - accounts: { - mnemonic: MNEMONIC, - path: MNEMONIC_PATH, - initialIndex: 0, - count: 20, - }, - } - return { - url: ALCHEMY_KEY - ? `https://eth-${net}.alchemyapi.io/v2/${ALCHEMY_KEY}` - : `https://${net}.infura.io/v3/${INFURA_KEY}`, - hardfork: HARDFORK, - blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT, - gasMultiplier: DEFAULT_GAS_MUL, - gasPrice: DEFAULT_GAS_PRICE, - chainId: networkId, - accounts: { - mnemonic: MNEMONIC, - path: MNEMONIC_PATH, - initialIndex: 0, - count: 20, - }, - }; -}; +const getCommonNetworkConfig = (networkName: eEthereumNetwork, networkId: number) => ({ + url: NETWORKS_RPC_URL[networkName], + hardfork: HARDFORK, + blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT, + gasMultiplier: DEFAULT_GAS_MUL, + gasPrice: NETWORKS_DEFAULT_GAS[networkName], + chainId: networkId, + accounts: { + mnemonic: MNEMONIC, + path: MNEMONIC_PATH, + initialIndex: 0, + count: 20, + }, +}); const mainnetFork = MAINNET_FORK ? { blockNumber: 11739065, - url: ALCHEMY_KEY - ? `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}` - : `https://mainnet.infura.io/v3/${INFURA_KEY}`, + url: NETWORKS_RPC_URL['main'], } : undefined; diff --git a/helper-hardhat-config.ts b/helper-hardhat-config.ts new file mode 100644 index 00000000..8c78656d --- /dev/null +++ b/helper-hardhat-config.ts @@ -0,0 +1,41 @@ +// @ts-ignore +import { eEthereumNetwork, iParamsPerNetwork } from './helpers/types'; + +require('dotenv').config(); + +const INFURA_KEY = process.env.INFURA_KEY || ''; +const ALCHEMY_KEY = process.env.ALCHEMY_KEY || ''; + +const GWEI = 1000 * 1000 * 1000; + +export const NETWORKS_RPC_URL: iParamsPerNetwork = { + [eEthereumNetwork.kovan]: ALCHEMY_KEY + ? `https://eth-kovan.alchemyapi.io/v2/${ALCHEMY_KEY}` + : `https://kovan.infura.io/v3/${INFURA_KEY}`, + [eEthereumNetwork.ropsten]: ALCHEMY_KEY + ? `https://eth-ropsten.alchemyapi.io/v2/${ALCHEMY_KEY}` + : `https://ropsten.infura.io/v3/${INFURA_KEY}`, + [eEthereumNetwork.main]: ALCHEMY_KEY + ? `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}` + : `https://mainnet.infura.io/v3/${INFURA_KEY}`, + [eEthereumNetwork.coverage]: 'http://localhost:8555', + [eEthereumNetwork.hardhat]: 'http://localhost:8545', + [eEthereumNetwork.buidlerevm]: 'http://localhost:8545', + [eEthereumNetwork.tenderlyMain]: ALCHEMY_KEY + ? `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}` + : `https://mainnet.infura.io/v3/${INFURA_KEY}`, + [eEthereumNetwork.mumbai]: 'https://rpc-mumbai.maticvigil.com', + [eEthereumNetwork.matic]: 'https://rpc-mainnet.matic.network', +} + +export const NETWORKS_DEFAULT_GAS: iParamsPerNetwork = { + [eEthereumNetwork.kovan]: 65 * GWEI , + [eEthereumNetwork.ropsten]: 65 * GWEI , + [eEthereumNetwork.main]: 65 * GWEI , + [eEthereumNetwork.coverage]: 65 * GWEI , + [eEthereumNetwork.hardhat]: 65 * GWEI , + [eEthereumNetwork.buidlerevm]: 65 * GWEI , + [eEthereumNetwork.tenderlyMain]: 65 * GWEI , + [eEthereumNetwork.mumbai]: 1 * GWEI , + [eEthereumNetwork.matic]: 65 * GWEI , +} \ No newline at end of file From 06d75ac7c7ba42c2f3d5ceaa626dfc6c86952d52 Mon Sep 17 00:00:00 2001 From: Hadrien Charlanes Date: Mon, 22 Feb 2021 10:44:10 +0100 Subject: [PATCH 02/17] Cleaned up config --- hardhat.config.ts | 3 - helper-hardhat-config.ts | 4 +- helpers/types.ts | 39 +++++---- markets/aave/commons.ts | 70 +++++----------- markets/aave/index.ts | 12 ++- markets/matic/commons.ts | 172 +++++++-------------------------------- markets/matic/index.ts | 29 +------ 7 files changed, 85 insertions(+), 244 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index 7f293569..d518905a 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -19,10 +19,7 @@ import '@tenderly/hardhat-tenderly'; const SKIP_LOAD = process.env.SKIP_LOAD === 'true'; const DEFAULT_BLOCK_GAS_LIMIT = 12450000; const DEFAULT_GAS_MUL = 5; -const DEFAULT_GAS_PRICE = 65 * 1000 * 1000 * 1000; const HARDFORK = 'istanbul'; -const INFURA_KEY = process.env.INFURA_KEY || ''; -const ALCHEMY_KEY = process.env.ALCHEMY_KEY || ''; const ETHERSCAN_KEY = process.env.ETHERSCAN_KEY || ''; const MNEMONIC_PATH = "m/44'/60'/0'/0"; const MNEMONIC = process.env.MNEMONIC || ''; diff --git a/helper-hardhat-config.ts b/helper-hardhat-config.ts index 8c78656d..159418e9 100644 --- a/helper-hardhat-config.ts +++ b/helper-hardhat-config.ts @@ -26,6 +26,7 @@ export const NETWORKS_RPC_URL: iParamsPerNetwork = { : `https://mainnet.infura.io/v3/${INFURA_KEY}`, [eEthereumNetwork.mumbai]: 'https://rpc-mumbai.maticvigil.com', [eEthereumNetwork.matic]: 'https://rpc-mainnet.matic.network', + [eEthereumNetwork.xdai]: 'https://rpc.xdaichain.com/', } export const NETWORKS_DEFAULT_GAS: iParamsPerNetwork = { @@ -37,5 +38,6 @@ export const NETWORKS_DEFAULT_GAS: iParamsPerNetwork = { [eEthereumNetwork.buidlerevm]: 65 * GWEI , [eEthereumNetwork.tenderlyMain]: 65 * GWEI , [eEthereumNetwork.mumbai]: 1 * GWEI , - [eEthereumNetwork.matic]: 65 * GWEI , + [eEthereumNetwork.matic]: 2 * GWEI , + [eEthereumNetwork.xdai]: 1 * GWEI, } \ No newline at end of file diff --git a/helpers/types.ts b/helpers/types.ts index d8e17fcf..8b6b442d 100644 --- a/helpers/types.ts +++ b/helpers/types.ts @@ -12,8 +12,15 @@ export enum eEthereumNetwork { coverage = 'coverage', hardhat = 'hardhat', tenderlyMain = 'tenderlyMain', +} + +export enum ePolygonNetwork { matic = 'matic', - mumbai = 'mumbai', + mumbai = 'mumbail', +} + +export enum eXDaiNetwork { + xdai = 'xdai', } export enum EthereumNetworkNames { @@ -22,6 +29,7 @@ export enum EthereumNetworkNames { main = 'main', matic = 'matic', mumbai = 'mumbai', + xdai = 'xdai', } export enum AavePools { @@ -378,7 +386,12 @@ export interface IMarketRates { borrowRate: string; } -export interface iParamsPerNetwork { +export type iParamsPerNetwork = + | iEthereumParamsPerNetwork + | iPolygonParamsPerNetwork + | iXDaiParamsPerNetwork; + +export interface iEthereumParamsPerNetwork { [eEthereumNetwork.coverage]: T; [eEthereumNetwork.buidlerevm]: T; [eEthereumNetwork.kovan]: T; @@ -386,8 +399,15 @@ export interface iParamsPerNetwork { [eEthereumNetwork.main]: T; [eEthereumNetwork.hardhat]: T; [eEthereumNetwork.tenderlyMain]: T; - [eEthereumNetwork.mumbai]: T; - [eEthereumNetwork.matic]: T; +} + +export interface iPolygonParamsPerNetwork { + [ePolygonNetwork.matic]: T; + [ePolygonNetwork.mumbai]: T; +} + +export interface iXDaiParamsPerNetwork { + [eXDaiNetwork.xdai]: T; } export interface iParamsPerPool { @@ -411,17 +431,6 @@ export interface ObjectString { [key: string]: string; } -export enum EthereumNetwork { - kovan = 'kovan', - ropsten = 'ropsten', - development = 'development', - main = 'main', - coverage = 'soliditycoverage', - tenderlyMain = 'tenderlyMain', - matic = 'matic', - mumbai = 'mumbai', -} - export interface IProtocolGlobalConfig { TokenDistributorPercentageBase: string; MockUsdPriceInWei: string; diff --git a/markets/aave/commons.ts b/markets/aave/commons.ts index 39be628b..da91442d 100644 --- a/markets/aave/commons.ts +++ b/markets/aave/commons.ts @@ -1,6 +1,6 @@ import BigNumber from 'bignumber.js'; import { oneEther, oneRay, RAY, ZERO_ADDRESS, MOCK_CHAINLINK_AGGREGATORS_PRICES } from '../../helpers/constants'; -import { ICommonConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types'; +import { ICommonConfiguration, eEthereumNetwork } from '../../helpers/types'; // ---------------- // PROTOCOL GLOBAL PARAMS @@ -105,8 +105,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: undefined, [eEthereumNetwork.main]: undefined, [eEthereumNetwork.tenderlyMain]: undefined, - [eEthereumNetwork.mumbai]: undefined, - [eEthereumNetwork.matic]: undefined, }, PoolAdminIndex: 0, EmergencyAdmin: { @@ -117,8 +115,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: undefined, [eEthereumNetwork.main]: undefined, [eEthereumNetwork.tenderlyMain]: undefined, - [eEthereumNetwork.mumbai]: undefined, - [eEthereumNetwork.matic]: undefined, }, EmergencyAdminIndex: 1, ProviderRegistry: { @@ -129,8 +125,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', [eEthereumNetwork.tenderlyMain]: '0x52D306e36E3B6B02c153d0266ff0f85d18BCD413', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, ProviderRegistryOwner: { [eEthereumNetwork.kovan]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F', @@ -140,8 +134,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', [eEthereumNetwork.tenderlyMain]: '0xbd723fc4f1d737dcfc48a07fe7336766d34cad5f', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, LendingRateOracle: { [eEthereumNetwork.coverage]: '', @@ -151,8 +143,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '0x05dcca805a6562c1bdd0423768754acb6993241b', [eEthereumNetwork.main]: '',//'0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D', [eEthereumNetwork.tenderlyMain]: '0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, LendingPoolCollateralManager: { [eEthereumNetwork.coverage]: '', @@ -162,8 +152,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '', [eEthereumNetwork.main]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C', [eEthereumNetwork.tenderlyMain]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, WethGateway: { [eEthereumNetwork.coverage]: '', @@ -178,42 +166,34 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.buidlerevm]: '', [eEthereumNetwork.hardhat]: '', - [EthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708', - [EthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c', - [EthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', - [EthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', + [eEthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708', + [eEthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c', + [eEthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', + [eEthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', }, AaveOracle: { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', - [EthereumNetwork.kovan]: '',//'0xB8bE51E6563BB312Cbb2aa26e352516c25c26ac1', - [EthereumNetwork.ropsten]: ZERO_ADDRESS, - [EthereumNetwork.main]: '',//'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9', - [EthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', + [eEthereumNetwork.kovan]: '',//'0xB8bE51E6563BB312Cbb2aa26e352516c25c26ac1', + [eEthereumNetwork.ropsten]: ZERO_ADDRESS, + [eEthereumNetwork.main]: '',//'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9', + [eEthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9', }, FallbackOracle: { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', - [EthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe', - [EthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d', - [EthereumNetwork.main]: ZERO_ADDRESS, - [EthereumNetwork.tenderlyMain]: ZERO_ADDRESS, - [eEthereumNetwork.mumbai]: ZERO_ADDRESS, - [eEthereumNetwork.matic]: ZERO_ADDRESS, + [eEthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe', + [eEthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d', + [eEthereumNetwork.main]: ZERO_ADDRESS, + [eEthereumNetwork.tenderlyMain]: ZERO_ADDRESS, }, ChainlinkAggregator: { [eEthereumNetwork.coverage]: {}, [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.buidlerevm]: {}, - [eEthereumNetwork.matic]: {}, - [eEthereumNetwork.mumbai]: {}, - [EthereumNetwork.kovan]: { + [eEthereumNetwork.kovan]: { AAVE: '0xd04647B7CB523bb9f26730E9B6dE1174db7591Ad', BAT: '0x0e4fcEC26c9f85c3D714370c98f43C4E02Fc35Ae', BUSD: '0xbF7A18ea5DE0501f7559144e702b29c55b055CcB', @@ -235,7 +215,7 @@ export const CommonsConfig: ICommonConfiguration = { ZRX: '0xBc3f28Ccc21E9b5856E81E6372aFf57307E2E883', USD: '0x9326BFA02ADD2366b30bacB125260Af641031331', }, - [EthereumNetwork.ropsten]: { + [eEthereumNetwork.ropsten]: { AAVE: ZERO_ADDRESS, BAT: '0xafd8186c962daf599f171b8600f3e19af7b52c92', BUSD: '0x0A32D96Ff131cd5c3E0E5AAB645BF009Eda61564', @@ -257,7 +237,7 @@ export const CommonsConfig: ICommonConfiguration = { ZRX: '0x1d0052e4ae5b4ae4563cbac50edc3627ca0460d7', USD: '0x8468b2bDCE073A157E560AA4D9CcF6dB1DB98507', }, - [EthereumNetwork.main]: { + [eEthereumNetwork.main]: { AAVE: '0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012', BAT: '0x0d16d4528239e9ee52fa531af613AcdB23D88c94', BUSD: '0x614715d2Af89E6EC99A233818275142cE88d1Cfd', @@ -279,7 +259,7 @@ export const CommonsConfig: ICommonConfiguration = { ZRX: '0x2Da4983a622a8498bb1a21FaE9D8F6C664939962', USD: '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419', }, - [EthereumNetwork.tenderlyMain]: { + [eEthereumNetwork.tenderlyMain]: { AAVE: '0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012', BAT: '0x0d16d4528239e9ee52fa531af613AcdB23D88c94', BUSD: '0x614715d2Af89E6EC99A233818275142cE88d1Cfd', @@ -306,12 +286,10 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.coverage]: {}, [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.buidlerevm]: {}, - [EthereumNetwork.main]: {}, - [EthereumNetwork.kovan]: {}, - [EthereumNetwork.ropsten]: {}, - [EthereumNetwork.tenderlyMain]: {}, - [eEthereumNetwork.matic]: {}, - [eEthereumNetwork.mumbai]: {}, + [eEthereumNetwork.main]: {}, + [eEthereumNetwork.kovan]: {}, + [eEthereumNetwork.ropsten]: {}, + [eEthereumNetwork.tenderlyMain]: {}, }, ReservesConfig: {}, ATokenDomainSeparator: { @@ -325,8 +303,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '', [eEthereumNetwork.main]: '', [eEthereumNetwork.tenderlyMain]: '', - [EthereumNetwork.mumbai]: '', - [EthereumNetwork.matic]: '', }, WETH: { [eEthereumNetwork.coverage]: '', // deployed in local evm @@ -336,8 +312,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '0xc778417e063141139fce010982780140aa0cd5ab', [eEthereumNetwork.main]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', [eEthereumNetwork.tenderlyMain]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - [EthereumNetwork.mumbai]: '', - [EthereumNetwork.matic]: '', }, ReserveFactorTreasuryAddress: { [eEthereumNetwork.coverage]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', @@ -347,7 +321,5 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', [eEthereumNetwork.main]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', [eEthereumNetwork.tenderlyMain]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', - [EthereumNetwork.mumbai]: '', - [EthereumNetwork.matic]: '', }, }; diff --git a/markets/aave/index.ts b/markets/aave/index.ts index 0f4d56c8..88e55a83 100644 --- a/markets/aave/index.ts +++ b/markets/aave/index.ts @@ -1,5 +1,5 @@ import { oneRay, ZERO_ADDRESS } from '../../helpers/constants'; -import { IAaveConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types'; +import { IAaveConfiguration, eEthereumNetwork } from '../../helpers/types'; import { CommonsConfig } from './commons'; import { @@ -58,9 +58,7 @@ export const AaveConfig: IAaveConfiguration = { [eEthereumNetwork.buidlerevm]: {}, [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.coverage]: {}, - [eEthereumNetwork.matic]: {}, - [eEthereumNetwork.mumbai]: {}, - [EthereumNetwork.kovan]: { + [eEthereumNetwork.kovan]: { AAVE: '0xB597cd8D3217ea6477232F9217fa70837ff667Af', BAT: '0x2d12186Fbb9f9a8C28B3FfdD4c42920f8539D738', BUSD: '0x4c6E1EFC12FDfD568186b7BAEc0A43fFfb4bCcCf', @@ -82,7 +80,7 @@ export const AaveConfig: IAaveConfiguration = { YFI: '0xb7c325266ec274fEb1354021D27FA3E3379D840d', ZRX: '0xD0d76886cF8D952ca26177EB7CfDf83bad08C00C', }, - [EthereumNetwork.ropsten]: { + [eEthereumNetwork.ropsten]: { AAVE: '', BAT: '0x85B24b3517E3aC7bf72a14516160541A60cFF19d', BUSD: '0xFA6adcFf6A90c11f31Bc9bb59eC0a6efB38381C6', @@ -104,7 +102,7 @@ export const AaveConfig: IAaveConfiguration = { YFI: ZERO_ADDRESS, ZRX: '0x02d7055704EfF050323A2E5ee4ba05DB2A588959', }, - [EthereumNetwork.main]: { + [eEthereumNetwork.main]: { AAVE: '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', BAT: '0x0d8775f648430679a709e98d2b0cb6250d2887ef', BUSD: '0x4Fabb145d64652a948d72533023f6E7A623C7C53', @@ -126,7 +124,7 @@ export const AaveConfig: IAaveConfiguration = { YFI: '0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e', ZRX: '0xE41d2489571d322189246DaFA5ebDe1F4699F498', }, - [EthereumNetwork.tenderlyMain]: { + [eEthereumNetwork.tenderlyMain]: { AAVE: '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', BAT: '0x0d8775f648430679a709e98d2b0cb6250d2887ef', BUSD: '0x4Fabb145d64652a948d72533023f6E7A623C7C53', diff --git a/markets/matic/commons.ts b/markets/matic/commons.ts index 2029fd54..7dfed41f 100644 --- a/markets/matic/commons.ts +++ b/markets/matic/commons.ts @@ -1,6 +1,6 @@ import BigNumber from 'bignumber.js'; import { oneEther, oneRay, RAY, ZERO_ADDRESS, MOCK_CHAINLINK_AGGREGATORS_PRICES } from '../../helpers/constants'; -import { ICommonConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types'; +import { ICommonConfiguration, ePolygonNetwork } from '../../helpers/types'; // ---------------- // PROTOCOL GLOBAL PARAMS @@ -58,112 +58,45 @@ export const CommonsConfig: ICommonConfiguration = { // If PoolAdmin/emergencyAdmin is set, will take priority over PoolAdminIndex/emergencyAdminIndex PoolAdmin: { - [eEthereumNetwork.coverage]: undefined, - [eEthereumNetwork.buidlerevm]: undefined, - [eEthereumNetwork.coverage]: undefined, - [eEthereumNetwork.hardhat]: undefined, - [eEthereumNetwork.kovan]: undefined, - [eEthereumNetwork.ropsten]: undefined, - [eEthereumNetwork.main]: undefined, - [eEthereumNetwork.tenderlyMain]: undefined, - [eEthereumNetwork.mumbai]: undefined, - [eEthereumNetwork.matic]: undefined, + [ePolygonNetwork.mumbai]: undefined, + [ePolygonNetwork.matic]: undefined, }, PoolAdminIndex: 0, EmergencyAdmin: { - [eEthereumNetwork.hardhat]: undefined, - [eEthereumNetwork.coverage]: undefined, - [eEthereumNetwork.buidlerevm]: undefined, - [eEthereumNetwork.kovan]: undefined, - [eEthereumNetwork.ropsten]: undefined, - [eEthereumNetwork.main]: undefined, - [eEthereumNetwork.tenderlyMain]: undefined, - [eEthereumNetwork.mumbai]: undefined, - [eEthereumNetwork.matic]: undefined, + [ePolygonNetwork.mumbai]: undefined, + [ePolygonNetwork.matic]: undefined, }, EmergencyAdminIndex: 1, ProviderRegistry: { - [eEthereumNetwork.kovan]: '0x1E40B561EC587036f9789aF83236f057D1ed2A90', - [eEthereumNetwork.ropsten]: '', - [eEthereumNetwork.main]: '0x52D306e36E3B6B02c153d0266ff0f85d18BCD413', - [eEthereumNetwork.coverage]: '', - [eEthereumNetwork.hardhat]: '', - [eEthereumNetwork.buidlerevm]: '', - [eEthereumNetwork.tenderlyMain]: '0x52D306e36E3B6B02c153d0266ff0f85d18BCD413', - [eEthereumNetwork.mumbai]: '0x569859d41499B4dDC28bfaA43915051FF0A38a6F', // TEMP - [eEthereumNetwork.matic]: '0x28334e4791860a0c1eCF89a62B973ba04a5d643F', // TEMP + [ePolygonNetwork.mumbai]: '0x569859d41499B4dDC28bfaA43915051FF0A38a6F', // TEMP + [ePolygonNetwork.matic]: '0x28334e4791860a0c1eCF89a62B973ba04a5d643F', // TEMP }, ProviderRegistryOwner: { - [eEthereumNetwork.kovan]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F', - [eEthereumNetwork.ropsten]: '', - [eEthereumNetwork.main]: '0xbd723fc4f1d737dcfc48a07fe7336766d34cad5f', - [eEthereumNetwork.coverage]: '', - [eEthereumNetwork.hardhat]: '', - [eEthereumNetwork.buidlerevm]: '', - [eEthereumNetwork.tenderlyMain]: '0xbd723fc4f1d737dcfc48a07fe7336766d34cad5f', - [eEthereumNetwork.mumbai]: '0x18d9bA2baEfBdE0FF137C4ad031427EF205f1Fd9', // TEMP - [eEthereumNetwork.matic]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F', // TEMP + [ePolygonNetwork.mumbai]: '0x18d9bA2baEfBdE0FF137C4ad031427EF205f1Fd9', // TEMP + [ePolygonNetwork.matic]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F', // TEMP }, LendingRateOracle: { - [eEthereumNetwork.coverage]: '', - [eEthereumNetwork.hardhat]: '', - [eEthereumNetwork.buidlerevm]: '', - [eEthereumNetwork.kovan]: '',//'0xdCde9Bb6a49e37fA433990832AB541AE2d4FEB4a', - [eEthereumNetwork.ropsten]: '0x05dcca805a6562c1bdd0423768754acb6993241b', - [eEthereumNetwork.main]: '',//'0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D', - [eEthereumNetwork.tenderlyMain]: '0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', + [ePolygonNetwork.mumbai]: '', + [ePolygonNetwork.matic]: '', }, LendingPoolCollateralManager: { - [eEthereumNetwork.coverage]: '', - [eEthereumNetwork.hardhat]: '', - [eEthereumNetwork.buidlerevm]: '', - [eEthereumNetwork.kovan]: '0x9269b6453d0d75370c4c85e5a42977a53efdb72a', - [eEthereumNetwork.ropsten]: '', - [eEthereumNetwork.main]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C', - [eEthereumNetwork.tenderlyMain]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', + [ePolygonNetwork.mumbai]: '', + [ePolygonNetwork.matic]: '', }, TokenDistributor: { - [eEthereumNetwork.coverage]: '', - [eEthereumNetwork.buidlerevm]: '', - [eEthereumNetwork.hardhat]: '', - [EthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708', - [EthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c', - [EthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', - [EthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', + [ePolygonNetwork.mumbai]: '', + [ePolygonNetwork.matic]: '', }, AaveOracle: { - [eEthereumNetwork.coverage]: '', - [eEthereumNetwork.hardhat]: '', - [eEthereumNetwork.buidlerevm]: '', - [EthereumNetwork.kovan]: '',//'0xB8bE51E6563BB312Cbb2aa26e352516c25c26ac1', - [EthereumNetwork.ropsten]: ZERO_ADDRESS, - [EthereumNetwork.main]: '',//'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9', - [EthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', + [ePolygonNetwork.mumbai]: '', + [ePolygonNetwork.matic]: '', }, FallbackOracle: { - [eEthereumNetwork.coverage]: '', - [eEthereumNetwork.hardhat]: '', - [eEthereumNetwork.buidlerevm]: '', - [EthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe', - [EthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d', - [EthereumNetwork.main]: ZERO_ADDRESS, - [EthereumNetwork.tenderlyMain]: ZERO_ADDRESS, - [eEthereumNetwork.mumbai]: ZERO_ADDRESS, - [eEthereumNetwork.matic]: ZERO_ADDRESS, + [ePolygonNetwork.mumbai]: ZERO_ADDRESS, + [ePolygonNetwork.matic]: ZERO_ADDRESS, }, ChainlinkAggregator: { - [eEthereumNetwork.coverage]: {}, - [eEthereumNetwork.hardhat]: {}, - [eEthereumNetwork.buidlerevm]: {}, - [eEthereumNetwork.matic]: { + [ePolygonNetwork.matic]: { DAI: '0x4746DeC9e833A82EC7C2C1356372CcF2cfcD2F3D', USDC: '0xfE4A8cc5b5B2366C1B58Bea3858e81843581b2F7', USDT: '0x0A6513e40db6EB1b165753AD52E80663aeA50545', @@ -171,76 +104,29 @@ export const CommonsConfig: ICommonConfiguration = { WETH: '0xF9680D99D6C9589e2a93a78A04A279e509205945', WMATIC: '0xAB594600376Ec9fD91F8e885dADF0CE036862dE0', }, - [eEthereumNetwork.mumbai]: { + [ePolygonNetwork.mumbai]: { DAI: ZERO_ADDRESS, USDC: ZERO_ADDRESS, USDT: ZERO_ADDRESS, WBTC: ZERO_ADDRESS, WMATIC: ZERO_ADDRESS, }, - [EthereumNetwork.kovan]: {}, - [EthereumNetwork.ropsten]: {}, - [EthereumNetwork.main]: { - DAI: '0x773616E4d11A78F511299002da57A0a94577F1f4', - USDC: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4', - USDT: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46', - WBTC: '0xdeb288F737066589598e9214E782fa5A8eD689e8', - WMATIC: ZERO_ADDRESS, - }, - [EthereumNetwork.tenderlyMain]: { - DAI: '0x773616E4d11A78F511299002da57A0a94577F1f4', - USDC: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4', - USDT: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46', - WBTC: '0xdeb288F737066589598e9214E782fa5A8eD689e8', - WMATIC: ZERO_ADDRESS, - }, }, ReserveAssets: { - [eEthereumNetwork.coverage]: {}, - [eEthereumNetwork.hardhat]: {}, - [eEthereumNetwork.buidlerevm]: {}, - [EthereumNetwork.main]: {}, - [EthereumNetwork.kovan]: {}, - [EthereumNetwork.ropsten]: {}, - [EthereumNetwork.tenderlyMain]: {}, - [eEthereumNetwork.matic]: {}, - [eEthereumNetwork.mumbai]: {}, + [ePolygonNetwork.matic]: {}, + [ePolygonNetwork.mumbai]: {}, }, ReservesConfig: {}, ATokenDomainSeparator: { - [eEthereumNetwork.coverage]: - '0x95b73a72c6ecf4ccbbba5178800023260bad8e75cdccdb8e4827a2977a37c820', - [eEthereumNetwork.hardhat]: - '0xbae024d959c6a022dc5ed37294cd39c141034b2ae5f02a955cce75c930a81bf5', - [eEthereumNetwork.buidlerevm]: - '0xbae024d959c6a022dc5ed37294cd39c141034b2ae5f02a955cce75c930a81bf5', - [eEthereumNetwork.kovan]: '', - [eEthereumNetwork.ropsten]: '', - [eEthereumNetwork.main]: '', - [eEthereumNetwork.tenderlyMain]: '', - [EthereumNetwork.mumbai]: '', - [EthereumNetwork.matic]: '', + [ePolygonNetwork.mumbai]: '', + [ePolygonNetwork.matic]: '', }, 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', - [eEthereumNetwork.main]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - [eEthereumNetwork.tenderlyMain]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - [EthereumNetwork.mumbai]: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', // WMATIC address (untested) - [EthereumNetwork.matic]: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC address + [ePolygonNetwork.mumbai]: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', // WMATIC address (untested) + [ePolygonNetwork.matic]: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', // WMATIC address }, ReserveFactorTreasuryAddress: { - [eEthereumNetwork.coverage]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', - [eEthereumNetwork.hardhat]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', - [eEthereumNetwork.buidlerevm]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', - [eEthereumNetwork.kovan]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', - [eEthereumNetwork.ropsten]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', - [eEthereumNetwork.main]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', - [eEthereumNetwork.tenderlyMain]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', - [EthereumNetwork.mumbai]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', // TEMP - [EthereumNetwork.matic]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', // TEMP + [ePolygonNetwork.mumbai]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', // TEMP + [ePolygonNetwork.matic]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', // TEMP }, }; diff --git a/markets/matic/index.ts b/markets/matic/index.ts index ae935313..cc1484ae 100644 --- a/markets/matic/index.ts +++ b/markets/matic/index.ts @@ -1,5 +1,5 @@ import { oneRay, ZERO_ADDRESS } from '../../helpers/constants'; -import { IMaticConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types'; +import { IMaticConfiguration, ePolygonNetwork } from '../../helpers/types'; import { CommonsConfig } from './commons'; import { @@ -28,10 +28,7 @@ export const MaticConfig: IMaticConfiguration = { WMATIC: strategyMATIC, }, ReserveAssets: { - [eEthereumNetwork.buidlerevm]: {}, - [eEthereumNetwork.hardhat]: {}, - [eEthereumNetwork.coverage]: {}, - [eEthereumNetwork.matic]: { + [ePolygonNetwork.matic]: { DAI: '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', USDC: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', USDT: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', @@ -39,7 +36,7 @@ export const MaticConfig: IMaticConfiguration = { WETH: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', WMATIC: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', }, - [eEthereumNetwork.mumbai]: { // Mock tokens with a simple "mint" external function, except wmatic + [ePolygonNetwork.mumbai]: { // Mock tokens with a simple "mint" external function, except wmatic DAI: '0x13b3fda609C1eeb23b4F4b69257840760dCa6C4a', USDC: '0x52b63223994433FdE2F1350Ba69Dfd2779f06ABA', USDT: '0xB3abd1912F586fDFFa13606882c28E27913853d2', @@ -47,26 +44,6 @@ export const MaticConfig: IMaticConfiguration = { WETH: '0x53CDb16B8C031B779e996406546614E5F05BC4Bf', WMATIC: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', }, - [EthereumNetwork.kovan]: {}, - [EthereumNetwork.ropsten]: {}, - [EthereumNetwork.main]: { - // WMATIC DOES NOT EXIST ON MAIN - DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F', - USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7', - WBTC: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', - WETH: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', - WMATIC: '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', - }, - [EthereumNetwork.tenderlyMain]: { - // WMATIC DOES NOT EXIST ON MAIN - DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F', - USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', - USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7', - WBTC: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', - WETH: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', - WMATIC: '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', - }, }, }; From 42499c527fd69e775eae5cb81acfd3da2281bb71 Mon Sep 17 00:00:00 2001 From: Hadrien Charlanes Date: Mon, 22 Feb 2021 10:55:36 +0100 Subject: [PATCH 03/17] updated hardhat config with new chains --- hardhat.config.ts | 9 +++++---- helper-hardhat-config.ts | 14 +++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index d518905a..3db6b821 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -3,7 +3,7 @@ import fs from 'fs'; import { HardhatUserConfig } from 'hardhat/types'; // @ts-ignore import { accounts } from './test-wallets.js'; -import { eEthereumNetwork, iParamsPerNetwork } from './helpers/types'; +import { eEthereumNetwork, ePolygonNetwork, eXDaiNetwork } from './helpers/types'; import { BUIDLEREVM_CHAINID, COVERAGE_CHAINID } from './helpers/buidler-constants'; import { NETWORKS_RPC_URL, NETWORKS_DEFAULT_GAS } from './helper-hardhat-config'; @@ -41,7 +41,7 @@ if (!SKIP_LOAD) { require(`${path.join(__dirname, 'tasks/misc')}/set-bre.ts`); -const getCommonNetworkConfig = (networkName: eEthereumNetwork, networkId: number) => ({ +const getCommonNetworkConfig = (networkName: eEthereumNetwork | ePolygonNetwork | eXDaiNetwork, networkId: number) => ({ url: NETWORKS_RPC_URL[networkName], hardfork: HARDFORK, blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT, @@ -95,8 +95,9 @@ const buidlerConfig: HardhatUserConfig = { ropsten: getCommonNetworkConfig(eEthereumNetwork.ropsten, 3), main: getCommonNetworkConfig(eEthereumNetwork.main, 1), tenderlyMain: getCommonNetworkConfig(eEthereumNetwork.main, 1), - matic: getCommonNetworkConfig(eEthereumNetwork.matic, 137), - mumbai: getCommonNetworkConfig(eEthereumNetwork.mumbai, 80001), + matic: getCommonNetworkConfig(ePolygonNetwork.matic, 137), + mumbai: getCommonNetworkConfig(ePolygonNetwork.mumbai, 80001), + xdai: getCommonNetworkConfig(eXDaiNetwork.xdai, 100), hardhat: { hardfork: 'istanbul', blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT, diff --git a/helper-hardhat-config.ts b/helper-hardhat-config.ts index 159418e9..c25f7b9f 100644 --- a/helper-hardhat-config.ts +++ b/helper-hardhat-config.ts @@ -1,5 +1,5 @@ // @ts-ignore -import { eEthereumNetwork, iParamsPerNetwork } from './helpers/types'; +import { eEthereumNetwork, ePolygonNetwork, eXDaiNetwork, iParamsPerNetwork } from './helpers/types'; require('dotenv').config(); @@ -24,9 +24,9 @@ export const NETWORKS_RPC_URL: iParamsPerNetwork = { [eEthereumNetwork.tenderlyMain]: ALCHEMY_KEY ? `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}` : `https://mainnet.infura.io/v3/${INFURA_KEY}`, - [eEthereumNetwork.mumbai]: 'https://rpc-mumbai.maticvigil.com', - [eEthereumNetwork.matic]: 'https://rpc-mainnet.matic.network', - [eEthereumNetwork.xdai]: 'https://rpc.xdaichain.com/', + [ePolygonNetwork.mumbai]: 'https://rpc-mumbai.maticvigil.com', + [ePolygonNetwork.matic]: 'https://rpc-mainnet.matic.network', + [eXDaiNetwork.xdai]: 'https://rpc.xdaichain.com/', } export const NETWORKS_DEFAULT_GAS: iParamsPerNetwork = { @@ -37,7 +37,7 @@ export const NETWORKS_DEFAULT_GAS: iParamsPerNetwork = { [eEthereumNetwork.hardhat]: 65 * GWEI , [eEthereumNetwork.buidlerevm]: 65 * GWEI , [eEthereumNetwork.tenderlyMain]: 65 * GWEI , - [eEthereumNetwork.mumbai]: 1 * GWEI , - [eEthereumNetwork.matic]: 2 * GWEI , - [eEthereumNetwork.xdai]: 1 * GWEI, + [ePolygonNetwork.mumbai]: 1 * GWEI , + [ePolygonNetwork.matic]: 2 * GWEI , + [eXDaiNetwork.xdai]: 1 * GWEI, } \ No newline at end of file From c072f3c8e04c958a351b587d7839d3875ef60c77 Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Mon, 22 Feb 2021 11:05:36 -0500 Subject: [PATCH 04/17] Updated LP config --- markets/lp/commons.ts | 70 +++++++++++++------------------------------ markets/lp/index.ts | 12 ++++---- 2 files changed, 26 insertions(+), 56 deletions(-) diff --git a/markets/lp/commons.ts b/markets/lp/commons.ts index 1b7f403a..9c7ca2ee 100644 --- a/markets/lp/commons.ts +++ b/markets/lp/commons.ts @@ -1,6 +1,6 @@ import BigNumber from 'bignumber.js'; import { oneEther, oneRay, RAY, ZERO_ADDRESS, MOCK_CHAINLINK_AGGREGATORS_PRICES } from '../../helpers/constants'; -import { ICommonConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types'; +import { ICommonConfiguration, eEthereumNetwork } from '../../helpers/types'; // ---------------- // PROTOCOL GLOBAL PARAMS @@ -108,8 +108,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: undefined, [eEthereumNetwork.main]: undefined, [eEthereumNetwork.tenderlyMain]: undefined, - [eEthereumNetwork.mumbai]: undefined, - [eEthereumNetwork.matic]: undefined, }, PoolAdminIndex: 0, EmergencyAdmin: { @@ -120,8 +118,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: undefined, [eEthereumNetwork.main]: undefined, [eEthereumNetwork.tenderlyMain]: undefined, - [eEthereumNetwork.mumbai]: undefined, - [eEthereumNetwork.matic]: undefined, }, EmergencyAdminIndex: 1, ProviderRegistry: { @@ -132,8 +128,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', [eEthereumNetwork.tenderlyMain]: '0x52D306e36E3B6B02c153d0266ff0f85d18BCD413', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, ProviderRegistryOwner: { // DEPLOYED WITH CORRECT ADDRESS [eEthereumNetwork.kovan]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F', @@ -143,8 +137,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', [eEthereumNetwork.tenderlyMain]: '0xbd723fc4f1d737dcfc48a07fe7336766d34cad5f', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, LendingRateOracle: { [eEthereumNetwork.coverage]: '', @@ -154,8 +146,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '0x05dcca805a6562c1bdd0423768754acb6993241b', [eEthereumNetwork.main]: '', //'0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D', // Need to re-deploy because of onlyOwner [eEthereumNetwork.tenderlyMain]: '0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, LendingPoolCollateralManager: { [eEthereumNetwork.coverage]: '', @@ -165,8 +155,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '', [eEthereumNetwork.main]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C', [eEthereumNetwork.tenderlyMain]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, WethGateway: { [eEthereumNetwork.coverage]: '', @@ -181,40 +169,34 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.buidlerevm]: '', [eEthereumNetwork.hardhat]: '', - [EthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708', - [EthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c', - [EthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', - [EthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', + [eEthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708', + [eEthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c', + [eEthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', + [eEthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae', }, AaveOracle: { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', - [EthereumNetwork.kovan]: '0x8fb777d67e9945e2c01936e319057f9d41d559e6', // Need to re-deploy because of onlyOwner - [EthereumNetwork.ropsten]: ZERO_ADDRESS, - [EthereumNetwork.main]: '',//'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9', // Need to re-deploy because of onlyOwner - [EthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', + [eEthereumNetwork.kovan]: '0x8fb777d67e9945e2c01936e319057f9d41d559e6', // Need to re-deploy because of onlyOwner + [eEthereumNetwork.ropsten]: ZERO_ADDRESS, + [eEthereumNetwork.main]: '',//'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9', // Need to re-deploy because of onlyOwner + [eEthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9', }, FallbackOracle: { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', - [EthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe', - [EthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d', - [EthereumNetwork.main]: ZERO_ADDRESS, - [EthereumNetwork.tenderlyMain]: ZERO_ADDRESS, - [eEthereumNetwork.mumbai]: ZERO_ADDRESS, - [eEthereumNetwork.matic]: ZERO_ADDRESS, + [eEthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe', + [eEthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d', + [eEthereumNetwork.main]: ZERO_ADDRESS, + [eEthereumNetwork.tenderlyMain]: ZERO_ADDRESS, }, ChainlinkAggregator: { [eEthereumNetwork.coverage]: {}, [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.buidlerevm]: {}, - [EthereumNetwork.kovan]: { + [eEthereumNetwork.kovan]: { USDT: '0x0bF499444525a23E7Bb61997539725cA2e928138', WBTC: '0xF7904a295A029a3aBDFFB6F12755974a958C7C25', USDC: '0x64EaC61A2DFda2c3Fa04eED49AA33D021AeC8838', @@ -236,9 +218,9 @@ export const CommonsConfig: ICommonConfiguration = { BptWBTCWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F', USD: '0x9326BFA02ADD2366b30bacB125260Af641031331', }, - [EthereumNetwork.ropsten]: { + [eEthereumNetwork.ropsten]: { }, - [EthereumNetwork.main]: { + [eEthereumNetwork.main]: { USDT: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46', WBTC: '0xdeb288F737066589598e9214E782fa5A8eD689e8', USDC: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4', @@ -260,7 +242,7 @@ export const CommonsConfig: ICommonConfiguration = { BptWBTCWETH: ZERO_ADDRESS, USD: '0x9326BFA02ADD2366b30bacB125260Af641031331', }, - [EthereumNetwork.tenderlyMain]: { + [eEthereumNetwork.tenderlyMain]: { USDT: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46', WBTC: '0xdeb288F737066589598e9214E782fa5A8eD689e8', USDC: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4', @@ -282,19 +264,15 @@ export const CommonsConfig: ICommonConfiguration = { BptWBTCWETH: ZERO_ADDRESS, USD: '0x9326BFA02ADD2366b30bacB125260Af641031331', }, - [eEthereumNetwork.mumbai]: {}, - [eEthereumNetwork.matic]: {}, }, ReserveAssets: { [eEthereumNetwork.coverage]: {}, [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.buidlerevm]: {}, - [EthereumNetwork.main]: {}, - [EthereumNetwork.kovan]: {}, - [EthereumNetwork.ropsten]: {}, - [EthereumNetwork.tenderlyMain]: {}, - [eEthereumNetwork.mumbai]: {}, - [eEthereumNetwork.matic]: {}, + [eEthereumNetwork.main]: {}, + [eEthereumNetwork.kovan]: {}, + [eEthereumNetwork.ropsten]: {}, + [eEthereumNetwork.tenderlyMain]: {}, }, ReservesConfig: {}, ATokenDomainSeparator: { @@ -308,8 +286,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '', [eEthereumNetwork.main]: '', [eEthereumNetwork.tenderlyMain]: '', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, WETH: { [eEthereumNetwork.coverage]: '', // deployed in local evm @@ -319,8 +295,6 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '0xc778417e063141139fce010982780140aa0cd5ab', [eEthereumNetwork.main]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', [eEthereumNetwork.tenderlyMain]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, ReserveFactorTreasuryAddress: { [eEthereumNetwork.coverage]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', @@ -330,7 +304,5 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.ropsten]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', [eEthereumNetwork.main]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', [eEthereumNetwork.tenderlyMain]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c', - [eEthereumNetwork.mumbai]: '', - [eEthereumNetwork.matic]: '', }, }; diff --git a/markets/lp/index.ts b/markets/lp/index.ts index d802f372..aeb3bbc7 100644 --- a/markets/lp/index.ts +++ b/markets/lp/index.ts @@ -1,5 +1,5 @@ import { oneRay, ZERO_ADDRESS } from '../../helpers/constants'; -import { ILpConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types'; +import { ILpConfiguration, eEthereumNetwork } from '../../helpers/types'; import { CommonsConfig } from './commons'; import { @@ -58,9 +58,7 @@ export const lpConfig: ILpConfiguration = { [eEthereumNetwork.buidlerevm]: {}, [eEthereumNetwork.hardhat]: {}, [eEthereumNetwork.coverage]: {}, - [eEthereumNetwork.matic]: {}, - [eEthereumNetwork.mumbai]: {}, - [EthereumNetwork.kovan]: { + [eEthereumNetwork.kovan]: { DAI: '0xFf795577d9AC8bD7D90Ee22b6C1703490b6512FD', USDC: '0xe22da380ee6B445bb8273C81944ADEB6E8450422', USDT: '0x13512979ADE267AB5100878E2e0f485B568328a4', @@ -82,9 +80,9 @@ export const lpConfig: ILpConfiguration = { UniYFIWETH: '0x5af95ddFACC150a1695A3Fc606459fd0dE57b91f', BptWBTCWETH: '0x110569E3261bC0934dA637b019f6f1b6F50ec574', }, - [EthereumNetwork.ropsten]: { + [eEthereumNetwork.ropsten]: { }, - [EthereumNetwork.main]: { + [eEthereumNetwork.main]: { DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F', USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7', @@ -106,7 +104,7 @@ export const lpConfig: ILpConfiguration = { UniYFIWETH: '0x2fDbAdf3C4D5A8666Bc06645B8358ab803996E28', BptWBTCWETH: '0x1efF8aF5D577060BA4ac8A29A13525bb0Ee2A3D5', }, - [EthereumNetwork.tenderlyMain]: { + [eEthereumNetwork.tenderlyMain]: { DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F', USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7', From 32a0aef1a95fe108a158d1832139d5ef9839ea8b Mon Sep 17 00:00:00 2001 From: Hadrien Charlanes Date: Mon, 22 Feb 2021 17:51:57 +0100 Subject: [PATCH 05/17] Added wethgateway config to matic --- markets/matic/commons.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/markets/matic/commons.ts b/markets/matic/commons.ts index 7dfed41f..b92a1eb6 100644 --- a/markets/matic/commons.ts +++ b/markets/matic/commons.ts @@ -87,6 +87,10 @@ export const CommonsConfig: ICommonConfiguration = { [ePolygonNetwork.mumbai]: '', [ePolygonNetwork.matic]: '', }, + WethGateway: { + [ePolygonNetwork.mumbai]: '', + [ePolygonNetwork.matic]: '', + }, AaveOracle: { [ePolygonNetwork.mumbai]: '', [ePolygonNetwork.matic]: '', From 50e2828008afc48716d18749affd73ea016dfda9 Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Mon, 22 Feb 2021 22:25:48 -0500 Subject: [PATCH 06/17] Updated to reuse LendingPool & Configurator if possible --- helpers/types.ts | 2 ++ markets/aave/commons.ts | 18 +++++++++++++ markets/lp/commons.ts | 18 +++++++++++++ tasks/full/2_lending_pool.ts | 43 +++++++++++++++++++++----------- tasks/full/6-initialize.ts | 7 +++--- tasks/migrations/aave.mainnet.ts | 2 +- tasks/migrations/lp.mainnet.ts | 2 +- 7 files changed, 73 insertions(+), 19 deletions(-) diff --git a/helpers/types.ts b/helpers/types.ts index 8b6b442d..d2d33b51 100644 --- a/helpers/types.ts +++ b/helpers/types.ts @@ -464,6 +464,8 @@ export interface ICommonConfiguration { ProviderRegistry: iParamsPerNetwork; ProviderRegistryOwner: iParamsPerNetwork; LendingPoolCollateralManager: iParamsPerNetwork; + LendingPoolConfigurator: iParamsPerNetwork; + LendingPool: iParamsPerNetwork; LendingRateOracleRatesCommon: iMultiPoolsAssets; LendingRateOracle: iParamsPerNetwork; TokenDistributor: iParamsPerNetwork; diff --git a/markets/aave/commons.ts b/markets/aave/commons.ts index da91442d..f16c9227 100644 --- a/markets/aave/commons.ts +++ b/markets/aave/commons.ts @@ -153,6 +153,24 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.main]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C', [eEthereumNetwork.tenderlyMain]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C', }, + LendingPoolConfigurator: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderlyMain]: '', + }, + LendingPool: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderlyMain]: '', + }, WethGateway: { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.hardhat]: '', diff --git a/markets/lp/commons.ts b/markets/lp/commons.ts index 9c7ca2ee..bce33b98 100644 --- a/markets/lp/commons.ts +++ b/markets/lp/commons.ts @@ -156,6 +156,24 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.main]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C', [eEthereumNetwork.tenderlyMain]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C', }, + LendingPoolConfigurator: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: '0x36eB31800aa67a9c50df1d56EE01981A6E14Cce5', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderlyMain]: '', + }, + LendingPool: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: '0x78142De7a1930412E9e50dEB3b80dB284c2dFa3A', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderlyMain]: '', + }, WethGateway: { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.hardhat]: '', diff --git a/tasks/full/2_lending_pool.ts b/tasks/full/2_lending_pool.ts index db0daabb..fd6e1352 100644 --- a/tasks/full/2_lending_pool.ts +++ b/tasks/full/2_lending_pool.ts @@ -1,45 +1,60 @@ import { task } from 'hardhat/config'; -import { insertContractAddressInDb } from '../../helpers/contracts-helpers'; +import { getParamPerNetwork, insertContractAddressInDb } from '../../helpers/contracts-helpers'; import { deployATokensAndRatesHelper, deployLendingPool, deployLendingPoolConfigurator, deployStableAndVariableTokensHelper, } from '../../helpers/contracts-deployments'; -import { eContractid } from '../../helpers/types'; -import { waitForTx } from '../../helpers/misc-utils'; +import { eContractid, eEthereumNetwork } from '../../helpers/types'; +import { notFalsyOrZeroAddress, waitForTx } from '../../helpers/misc-utils'; import { getLendingPoolAddressesProvider, getLendingPool, getLendingPoolConfiguratorProxy, } from '../../helpers/contracts-getters'; import { HardhatRuntimeEnvironment } from 'hardhat/types'; +import { loadPoolConfig, ConfigNames } from '../../helpers/configuration'; task('full:deploy-lending-pool', 'Deploy lending pool for dev enviroment') .addFlag('verify', 'Verify contracts at Etherscan') - .setAction(async ({ verify }, DRE: HardhatRuntimeEnvironment) => { + .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) + .setAction(async ({ verify, pool }, DRE: HardhatRuntimeEnvironment) => { try { await DRE.run('set-DRE'); - + const network = DRE.network.name; + const poolConfig = loadPoolConfig(pool) const addressesProvider = await getLendingPoolAddressesProvider(); + + const { LendingPool, LendingPoolConfigurator } = poolConfig; - // Deploy lending pool - const lendingPoolImpl = await deployLendingPool(verify); - - // Set lending pool impl to address provider - await waitForTx(await addressesProvider.setLendingPoolImpl(lendingPoolImpl.address)); + // Reuse/deploy lending pool implementation + let lendingPoolImplAddress = getParamPerNetwork(LendingPool, network) + if (!notFalsyOrZeroAddress(lendingPoolImplAddress)) { + console.log("\tDeploying new lending pool implementation & libraries..."); + const lendingPoolImpl = await deployLendingPool(verify); + lendingPoolImplAddress = lendingPoolImpl.address; + } + console.log("\tSetting lending pool implementation with address:" , lendingPoolImplAddress); + // Set lending pool impl to Address provider + await waitForTx(await addressesProvider.setLendingPoolImpl(lendingPoolImplAddress)); const address = await addressesProvider.getLendingPool(); const lendingPoolProxy = await getLendingPool(address); await insertContractAddressInDb(eContractid.LendingPool, lendingPoolProxy.address); - // Deploy lending pool configurator - const lendingPoolConfiguratorImpl = await deployLendingPoolConfigurator(verify); - + // Reuse/deploy lending pool configurator + let lendingPoolConfiguratorImplAddress = getParamPerNetwork(LendingPoolConfigurator, network); //await deployLendingPoolConfigurator(verify); + if (!notFalsyOrZeroAddress(lendingPoolConfiguratorImplAddress)) { + console.log("\tDeploying new configurator implementation..."); + const lendingPoolConfiguratorImpl = await deployLendingPoolConfigurator(verify); + lendingPoolConfiguratorImplAddress = lendingPoolConfiguratorImpl.address; + } + console.log("\tSetting lending pool configurator implementation with address:" , lendingPoolConfiguratorImplAddress); // Set lending pool conf impl to Address Provider await waitForTx( - await addressesProvider.setLendingPoolConfiguratorImpl(lendingPoolConfiguratorImpl.address) + await addressesProvider.setLendingPoolConfiguratorImpl(lendingPoolConfiguratorImplAddress) ); const lendingPoolConfiguratorProxy = await getLendingPoolConfiguratorProxy( diff --git a/tasks/full/6-initialize.ts b/tasks/full/6-initialize.ts index 1b949241..b5ee3aea 100644 --- a/tasks/full/6-initialize.ts +++ b/tasks/full/6-initialize.ts @@ -14,7 +14,7 @@ import { } from '../../helpers/configuration'; import { getWETHGateway } from '../../helpers/contracts-getters'; import { eEthereumNetwork, ICommonConfiguration } from '../../helpers/types'; -import { waitForTx } from '../../helpers/misc-utils'; +import { notFalsyOrZeroAddress, waitForTx } from '../../helpers/misc-utils'; import { initReservesByHelper, configureReservesByHelper } from '../../helpers/init-helpers'; import { exit } from 'process'; import { @@ -73,12 +73,13 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.') LendingPoolCollateralManager, network ); - if (!collateralManagerAddress) { + if (!notFalsyOrZeroAddress(collateralManagerAddress)) { const collateralManager = await deployLendingPoolCollateralManager(verify); collateralManagerAddress = collateralManager.address; } // Seems unnecessary to register the collateral manager in the JSON db + console.log("\tSetting lending pool collateral manager implementation with address", collateralManagerAddress); await waitForTx( await addressesProvider.setLendingPoolCollateralManager(collateralManagerAddress) ); @@ -88,7 +89,7 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.') const lendingPoolAddress = await addressesProvider.getLendingPool(); let gateWay = getParamPerNetwork(WethGateway, network); - if (gateWay == '') { + if (!notFalsyOrZeroAddress(gateWay)) { gateWay = (await getWETHGateway()).address; } await authorizeWETHGateway(gateWay, lendingPoolAddress); diff --git a/tasks/migrations/aave.mainnet.ts b/tasks/migrations/aave.mainnet.ts index fe05938d..19649262 100644 --- a/tasks/migrations/aave.mainnet.ts +++ b/tasks/migrations/aave.mainnet.ts @@ -21,7 +21,7 @@ task('aave:mainnet', 'Deploy development enviroment') await DRE.run('full:deploy-address-provider', { pool: POOL_NAME }); console.log('2. Deploy lending pool'); - await DRE.run('full:deploy-lending-pool'); + await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME }); console.log('3. Deploy oracles'); await DRE.run('full:deploy-oracles', { pool: POOL_NAME }); diff --git a/tasks/migrations/lp.mainnet.ts b/tasks/migrations/lp.mainnet.ts index 4faea738..97a47ffa 100644 --- a/tasks/migrations/lp.mainnet.ts +++ b/tasks/migrations/lp.mainnet.ts @@ -21,7 +21,7 @@ task('lp:mainnet', 'Deploy development enviroment') await DRE.run('full:deploy-address-provider', { pool: POOL_NAME }); console.log('2. Deploy lending pool'); - await DRE.run('full:deploy-lending-pool'); + await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME }); console.log('3. Deploy oracles'); await DRE.run('full:deploy-oracles', { pool: POOL_NAME }); From 599c2759f16d09e480be69c889b543cbf998b763 Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Mon, 22 Feb 2021 22:25:58 -0500 Subject: [PATCH 07/17] Fixed & tested etherscan verification (on Kovan) --- tasks/verifications/1_general.ts | 44 +++++++++++++++++++++++--------- tasks/verifications/2_tokens.ts | 13 ++++++++-- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/tasks/verifications/1_general.ts b/tasks/verifications/1_general.ts index 89a54d0d..80a76162 100644 --- a/tasks/verifications/1_general.ts +++ b/tasks/verifications/1_general.ts @@ -27,7 +27,7 @@ import { verifyContract } from '../../helpers/etherscan-verification'; import { notFalsyOrZeroAddress } from '../../helpers/misc-utils'; import { eEthereumNetwork, ICommonConfiguration } from '../../helpers/types'; -task('verify:general', 'Deploy oracles for dev enviroment') +task('verify:general', 'Verify contracts at Etherscan') .addFlag('all', 'Verify all contracts at Etherscan') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .setAction(async ({ all, pool }, localDRE) => { @@ -39,6 +39,10 @@ task('verify:general', 'Deploy oracles for dev enviroment') ReservesConfig, ProviderRegistry, MarketId, + LendingPoolCollateralManager, + LendingPoolConfigurator, + LendingPool, + WethGateway, } = poolConfig as ICommonConfiguration; const treasuryAddress = await getTreasuryAddress(poolConfig); @@ -47,17 +51,33 @@ task('verify:general', 'Deploy oracles for dev enviroment') const addressesProviderRegistry = notFalsyOrZeroAddress(registryAddress) ? await getLendingPoolAddressesProviderRegistry(registryAddress) : await getLendingPoolAddressesProviderRegistry(); - const lendingPoolProxy = await getLendingPool(); - const lendingPoolConfigurator = await getLendingPoolConfiguratorProxy(); - const lendingPoolCollateralManager = await getLendingPoolCollateralManager(); + const lendingPoolAddress = await addressesProvider.getLendingPool(); + const lendingPoolConfiguratorAddress = await addressesProvider.getLendingPoolConfigurator();//getLendingPoolConfiguratorProxy(); + const lendingPoolCollateralManagerAddress = await addressesProvider.getLendingPoolCollateralManager(); if (all) { - const lendingPoolImpl = await getLendingPoolImpl(); - const lendingPoolConfiguratorImpl = await getLendingPoolConfiguratorImpl(); - const lendingPoolCollateralManagerImpl = await getLendingPoolCollateralManagerImpl(); + const lendingPoolImplAddress = getParamPerNetwork(LendingPool, network); + const lendingPoolImpl = notFalsyOrZeroAddress(lendingPoolImplAddress) + ? await getLendingPoolImpl(lendingPoolImplAddress) + : await getLendingPoolImpl(); + + const lendingPoolConfiguratorImplAddress = getParamPerNetwork(LendingPoolConfigurator, network); + const lendingPoolConfiguratorImpl = notFalsyOrZeroAddress(lendingPoolConfiguratorImplAddress) + ? await getLendingPoolConfiguratorImpl(lendingPoolConfiguratorImplAddress) + : await getLendingPoolConfiguratorImpl(); + + const lendingPoolCollateralManagerImplAddress = getParamPerNetwork(LendingPoolCollateralManager, network); + const lendingPoolCollateralManagerImpl = notFalsyOrZeroAddress(lendingPoolCollateralManagerImplAddress) + ? await getLendingPoolCollateralManagerImpl(lendingPoolCollateralManagerImplAddress) + : await getLendingPoolCollateralManagerImpl(); + const dataProvider = await getAaveProtocolDataProvider(); const walletProvider = await getWalletProvider(); - const wethGateway = await getWETHGateway(); + + const wethGatewayAddress = getParamPerNetwork(WethGateway, network); + const wethGateway = notFalsyOrZeroAddress(wethGatewayAddress) + ? await getWETHGateway(wethGatewayAddress) + : await getWETHGateway(); // Address Provider console.log('\n- Verifying address provider...\n'); @@ -93,15 +113,15 @@ task('verify:general', 'Deploy oracles for dev enviroment') } // Lending Pool proxy console.log('\n- Verifying Lending Pool Proxy...\n'); - await verifyContract(lendingPoolProxy.address, [addressesProvider.address]); + await verifyContract(lendingPoolAddress, [addressesProvider.address]); // LendingPool Conf proxy console.log('\n- Verifying Lending Pool Configurator Proxy...\n'); - await verifyContract(lendingPoolConfigurator.address, [addressesProvider.address]); + await verifyContract(lendingPoolConfiguratorAddress, [addressesProvider.address]); // Proxy collateral manager console.log('\n- Verifying Lending Pool Collateral Manager Proxy...\n'); - await verifyContract(lendingPoolCollateralManager.address, []); + await verifyContract(lendingPoolCollateralManagerAddress, []); // DelegatedAwareAToken console.log('\n- Verifying DelegatedAwareAToken...\n'); @@ -110,7 +130,7 @@ task('verify:general', 'Deploy oracles for dev enviroment') if (aUNI) { console.log('Verifying aUNI'); await verifyContract(aUNI, [ - lendingPoolProxy.address, + lendingPoolAddress, UNI, treasuryAddress, 'Aave interest bearing UNI', diff --git a/tasks/verifications/2_tokens.ts b/tasks/verifications/2_tokens.ts index 4ea86cc5..a611c275 100644 --- a/tasks/verifications/2_tokens.ts +++ b/tasks/verifications/2_tokens.ts @@ -8,6 +8,7 @@ import { import { ZERO_ADDRESS } from '../../helpers/constants'; import { getAddressById, + getFirstSigner, getLendingPool, getLendingPoolAddressesProvider, getLendingPoolConfiguratorProxy, @@ -15,6 +16,7 @@ import { import { getParamPerNetwork } from '../../helpers/contracts-helpers'; import { verifyContract } from '../../helpers/etherscan-verification'; import { eEthereumNetwork, ICommonConfiguration, IReserveParams } from '../../helpers/types'; +import { LendingPoolConfiguratorFactory, LendingPoolFactory } from '../../types'; task('verify:tokens', 'Deploy oracles for dev enviroment') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) @@ -26,8 +28,15 @@ task('verify:tokens', 'Deploy oracles for dev enviroment') const treasuryAddress = await getTreasuryAddress(poolConfig); const addressesProvider = await getLendingPoolAddressesProvider(); - const lendingPoolProxy = await getLendingPool(); - const lendingPoolConfigurator = await getLendingPoolConfiguratorProxy(); + const lendingPoolProxy = LendingPoolFactory.connect( + await addressesProvider.getLendingPool(), + await getFirstSigner() + ); + + const lendingPoolConfigurator = LendingPoolConfiguratorFactory.connect( + await addressesProvider.getLendingPoolConfigurator(), + await getFirstSigner() + ); const configs = Object.entries(ReservesConfig) as [string, IReserveParams][]; for (const entry of Object.entries(getParamPerNetwork(ReserveAssets, network))) { From 029a349d903e6068f13ad9c86e247f7f7239cd62 Mon Sep 17 00:00:00 2001 From: Hadrien Charlanes Date: Tue, 23 Feb 2021 09:26:48 +0100 Subject: [PATCH 08/17] Prepared XDAI configs, updated matic with new LendingPool and LendingPoolConfigurator --- helpers/constants.ts | 1 + helpers/types.ts | 11 +++ markets/matic/commons.ts | 8 ++ markets/xdai/commons.ts | 120 ++++++++++++++++++++++++++ markets/xdai/index.ts | 41 +++++++++ markets/xdai/rateStrategies.ts | 91 +++++++++++++++++++ markets/xdai/reservesConfigs.ts | 85 ++++++++++++++++++ test-suites/test-aave/__setup.spec.ts | 1 + test-suites/test-lp/__setup.spec.ts | 1 + 9 files changed, 359 insertions(+) diff --git a/helpers/constants.ts b/helpers/constants.ts index cb66e8a1..9a223bd6 100644 --- a/helpers/constants.ts +++ b/helpers/constants.ts @@ -66,5 +66,6 @@ export const MOCK_CHAINLINK_AGGREGATORS_PRICES = { UniYFIWETH: oneEther.multipliedBy('22.407436').toFixed(), BptWBTCWETH: oneEther.multipliedBy('22.407436').toFixed(), WMATIC: oneEther.multipliedBy('0.003620948469').toFixed(), + STAKE: oneEther.multipliedBy('0.003620948469').toFixed(), USD: '5848466240000000', }; diff --git a/helpers/types.ts b/helpers/types.ts index d2d33b51..526b2f98 100644 --- a/helpers/types.ts +++ b/helpers/types.ts @@ -239,6 +239,7 @@ export interface iAssetBase { UniYFIWETH: T; BptWBTCWETH: T; WMATIC: T; + STAKE: T; } export type iAssetsWithoutETH = Omit, 'ETH'>; @@ -298,6 +299,11 @@ export type iMaticPoolAssets = Pick< 'DAI' | 'USDC' | 'USDT' | 'WBTC' | 'WETH' | 'WMATIC' >; +export type iXDAIPoolAssets = Pick< + iAssetsWithoutUSD, + 'DAI' | 'USDC' | 'USDT' | 'WBTC' | 'WETH' | 'STAKE' +>; + export type iMultiPoolsAssets = iAssetCommon | iAavePoolAssets; export type iAavePoolTokens = Omit, 'ETH'>; @@ -347,6 +353,7 @@ export enum TokenContractId { UniYFIWETH = 'UniYFIWETH', BptWBTCWETH = 'BptWBTCWETH', WMATIC = 'WMATIC', + STAKE = 'STAKE', } export interface IReserveParams extends IReserveBorrowParams, IReserveCollateralParams { @@ -496,6 +503,10 @@ export interface IMaticConfiguration extends ICommonConfiguration { ReservesConfig: iMaticPoolAssets; } +export interface IXDAIConfiguration extends ICommonConfiguration { + ReservesConfig: iXDAIPoolAssets; +} + export interface ITokenAddress { [token: string]: tEthereumAddress; } diff --git a/markets/matic/commons.ts b/markets/matic/commons.ts index b92a1eb6..784f156d 100644 --- a/markets/matic/commons.ts +++ b/markets/matic/commons.ts @@ -66,6 +66,14 @@ export const CommonsConfig: ICommonConfiguration = { [ePolygonNetwork.mumbai]: undefined, [ePolygonNetwork.matic]: undefined, }, + LendingPool: { + [ePolygonNetwork.mumbai]: '', + [ePolygonNetwork.matic]: '0x15Ec48a46d2D26cf4ADf5A39123E4c75e6887fE0', + }, + LendingPoolConfigurator: { + [ePolygonNetwork.mumbai]: '', + [ePolygonNetwork.matic]: '0x268F48E09c72f6008DA50D6465a174C10167918e', + }, EmergencyAdminIndex: 1, ProviderRegistry: { [ePolygonNetwork.mumbai]: '0x569859d41499B4dDC28bfaA43915051FF0A38a6F', // TEMP diff --git a/markets/xdai/commons.ts b/markets/xdai/commons.ts index e69de29b..433d54ea 100644 --- a/markets/xdai/commons.ts +++ b/markets/xdai/commons.ts @@ -0,0 +1,120 @@ +import BigNumber from 'bignumber.js'; +import { oneEther, oneRay, RAY, ZERO_ADDRESS, MOCK_CHAINLINK_AGGREGATORS_PRICES } from '../../helpers/constants'; +import { ICommonConfiguration, eXDaiNetwork } from '../../helpers/types'; + +// ---------------- +// PROTOCOL GLOBAL PARAMS +// ---------------- + +export const CommonsConfig: ICommonConfiguration = { + MarketId: 'Commons', + ATokenNamePrefix: 'Aave XDAI Market', + StableDebtTokenNamePrefix: 'Aave XDAI Market stable debt', + VariableDebtTokenNamePrefix: 'Aave XDAI Market variable debt', + SymbolPrefix: 'm', + ProviderId: 0, // Overriden in index.ts + ProtocolGlobalParams: { + TokenDistributorPercentageBase: '10000', + MockUsdPriceInWei: '5848466240000000', + UsdAddress: '0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96', + NilAddress: '0x0000000000000000000000000000000000000000', + OneAddress: '0x0000000000000000000000000000000000000001', + AaveReferral: '0', + }, + + // ---------------- + // COMMON PROTOCOL PARAMS ACROSS POOLS AND NETWORKS + // ---------------- + + Mocks: { + AllAssetsInitialPrices: { + ...MOCK_CHAINLINK_AGGREGATORS_PRICES, + }, + }, + // TODO: reorg alphabetically, checking the reason of tests failing + LendingRateOracleRatesCommon: { + WETH: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + DAI: { + borrowRate: oneRay.multipliedBy(0.039).toFixed(), + }, + USDC: { + borrowRate: oneRay.multipliedBy(0.039).toFixed(), + }, + USDT: { + borrowRate: oneRay.multipliedBy(0.035).toFixed(), + }, + WBTC: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + STAKE: { + borrowRate: oneRay.multipliedBy(0.05).toFixed(), // TEMP + }, + }, + // ---------------- + // COMMON PROTOCOL ADDRESSES ACROSS POOLS + // ---------------- + + // If PoolAdmin/emergencyAdmin is set, will take priority over PoolAdminIndex/emergencyAdminIndex + PoolAdmin: { + [eXDaiNetwork.xdai]: undefined, + }, + PoolAdminIndex: 0, + EmergencyAdmin: { + [eXDaiNetwork.xdai]: undefined, + }, + EmergencyAdminIndex: 1, + ProviderRegistry: { + [eXDaiNetwork.xdai]: '', + }, + ProviderRegistryOwner: { + [eXDaiNetwork.xdai]: '', + }, + LendingPoolConfigurator: { + [eXDaiNetwork.xdai]: '0', + }, + LendingPool: { + [eXDaiNetwork.xdai]: '0', + }, + LendingRateOracle: { + [eXDaiNetwork.xdai]: '', + }, + LendingPoolCollateralManager: { + [eXDaiNetwork.xdai]: '', + }, + TokenDistributor: { + [eXDaiNetwork.xdai]: '', + }, + WethGateway: { + [eXDaiNetwork.xdai]: '', + }, + AaveOracle: { + [eXDaiNetwork.xdai]: '', + }, + FallbackOracle: { + [eXDaiNetwork.xdai]: ZERO_ADDRESS, + }, + ChainlinkAggregator: { + [eXDaiNetwork.xdai]: { + DAI: ZERO_ADDRESS, + USDC: ZERO_ADDRESS, + USDT: ZERO_ADDRESS, + WBTC: ZERO_ADDRESS, + STAKE: ZERO_ADDRESS, + }, + }, + ReserveAssets: { + [eXDaiNetwork.xdai]: {}, + }, + ReservesConfig: {}, + ATokenDomainSeparator: { + [eXDaiNetwork.xdai]: '', + }, + WETH: { + [eXDaiNetwork.xdai]: '', // DAI: xDAI is the base token, DAI is also there, We need WXDAI + }, + ReserveFactorTreasuryAddress: { + [eXDaiNetwork.xdai]: '', // TEMP + }, +}; diff --git a/markets/xdai/index.ts b/markets/xdai/index.ts index 8b137891..fadf52c8 100644 --- a/markets/xdai/index.ts +++ b/markets/xdai/index.ts @@ -1 +1,42 @@ +import { oneRay, ZERO_ADDRESS } from '../../helpers/constants'; +import { IXDAIConfiguration, eXDaiNetwork } from '../../helpers/types'; +import { CommonsConfig } from './commons'; +import { + strategyDAI, + strategyUSDC, + strategyUSDT, + strategyWBTC, + strategyWETH, + strategySTAKE, +} from './reservesConfigs'; + +// ---------------- +// POOL--SPECIFIC PARAMS +// ---------------- + +export const XDAIConfig: IXDAIConfiguration = { + ...CommonsConfig, + MarketId: 'XDAI Market', + ProviderId: 4, // Unknown? + ReservesConfig: { + DAI: strategyDAI, + USDC: strategyUSDC, + USDT: strategyUSDT, + WBTC: strategyWBTC, + WETH: strategyWETH, + STAKE: strategySTAKE, + }, + ReserveAssets: { + [eXDaiNetwork.xdai]: { + DAI: '0x44fA8E6f47987339850636F88629646662444217', + USDC: '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83', + USDT: '0x4ECaBa5870353805a9F068101A40E0f32ed605C6', + WBTC: '0x8e5bBbb09Ed1ebdE8674Cda39A0c169401db4252', + WETH: '0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1', + STAKE: '0xb7D311E2Eb55F2f68a9440da38e7989210b9A05e' + }, + }, +}; + +export default XDAIConfig; diff --git a/markets/xdai/rateStrategies.ts b/markets/xdai/rateStrategies.ts index e69de29b..afe19b63 100644 --- a/markets/xdai/rateStrategies.ts +++ b/markets/xdai/rateStrategies.ts @@ -0,0 +1,91 @@ +import BigNumber from 'bignumber.js'; +import { oneRay } from '../../helpers/constants'; +import { IInterestRateStrategyParams } from '../../helpers/types'; + +// BUSD SUSD +export const rateStrategyStableOne: IInterestRateStrategyParams = { + name: "rateStrategyStableOne", + optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(), + stableRateSlope1: '0', + stableRateSlope2: '0', +}; + +// DAI TUSD +export const rateStrategyStableTwo: IInterestRateStrategyParams = { + name: "rateStrategyStableTwo", + optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(0.75).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.02).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.75).multipliedBy(oneRay).toFixed(), +} + +// USDC USDT +export const rateStrategyStableThree: IInterestRateStrategyParams = { + name: "rateStrategyStableThree", + optimalUtilizationRate: new BigNumber(0.9).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(0.60).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.02).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.60).multipliedBy(oneRay).toFixed(), +} + +// WETH +export const rateStrategyWETH: IInterestRateStrategyParams = { + name: "rateStrategyWETH", + optimalUtilizationRate: new BigNumber(0.65).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.08).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(), +} + +// AAVE +export const rateStrategyAAVE: IInterestRateStrategyParams = { + name: "rateStrategyAAVE", + optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: '0', + variableRateSlope1: '0', + variableRateSlope2: '0', + stableRateSlope1: '0', + stableRateSlope2: '0', +} + +// BAT ENJ LINK MANA MKR REN YFI ZRX +export const rateStrategyVolatileOne: IInterestRateStrategyParams = { + name: "rateStrategyVolatileOne", + optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.07).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(), +} + +// KNC WBTC +export const rateStrategyVolatileTwo: IInterestRateStrategyParams = { + name: "rateStrategyVolatileTwo", + optimalUtilizationRate: new BigNumber(0.65).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.08).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(), +} + +// SNX +export const rateStrategyVolatileThree: IInterestRateStrategyParams = { + name: "rateStrategyVolatileThree", + optimalUtilizationRate: new BigNumber(0.65).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.08).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(), +} diff --git a/markets/xdai/reservesConfigs.ts b/markets/xdai/reservesConfigs.ts index e69de29b..6c90afc5 100644 --- a/markets/xdai/reservesConfigs.ts +++ b/markets/xdai/reservesConfigs.ts @@ -0,0 +1,85 @@ +// import BigNumber from 'bignumber.js'; +// import { oneRay } from '../../helpers/constants'; +import { eContractid, IReserveParams } from '../../helpers/types'; +import { + rateStrategyStableOne, + rateStrategyStableTwo, + rateStrategyStableThree, + rateStrategyWETH, + rateStrategyAAVE, + rateStrategyVolatileOne, + rateStrategyVolatileTwo, + rateStrategyVolatileThree, +} from './rateStrategies'; + +export const strategyDAI: IReserveParams = { + strategy: rateStrategyStableTwo, + baseLTVAsCollateral: '7500', + liquidationThreshold: '8000', + liquidationBonus: '10500', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000' +}; + +export const strategyUSDC: IReserveParams = { + strategy: rateStrategyStableThree, + baseLTVAsCollateral: '8000', + liquidationThreshold: '8500', + liquidationBonus: '10500', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '6', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000' +}; + +export const strategyUSDT: IReserveParams = { + strategy: rateStrategyStableThree, + baseLTVAsCollateral: '8000', + liquidationThreshold: '8500', + liquidationBonus: '10500', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '6', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000' +}; + +export const strategyWETH: IReserveParams = { + strategy: rateStrategyWETH, + baseLTVAsCollateral: '8000', + liquidationThreshold: '8250', + liquidationBonus: '10500', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000' +}; + +export const strategyWBTC: IReserveParams = { + strategy: rateStrategyVolatileTwo, + baseLTVAsCollateral: '7000', + liquidationThreshold: '7500', + liquidationBonus: '11000', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '8', + aTokenImpl: eContractid.AToken, + reserveFactor: '2000' +}; + +export const strategySTAKE: IReserveParams = { + strategy: rateStrategyVolatileOne, //Temp? + baseLTVAsCollateral: '5000', + liquidationThreshold: '6500', + liquidationBonus: '11000', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '2000' +}; \ No newline at end of file diff --git a/test-suites/test-aave/__setup.spec.ts b/test-suites/test-aave/__setup.spec.ts index 00935f53..c9a54f7f 100644 --- a/test-suites/test-aave/__setup.spec.ts +++ b/test-suites/test-aave/__setup.spec.ts @@ -189,6 +189,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { BptWBTCWETH: mockTokens.BptWBTCWETH.address, WMATIC: mockTokens.WMATIC.address, USD: USD_ADDRESS, + STAKE: mockTokens.STAKE.address, }, fallbackOracle ); diff --git a/test-suites/test-lp/__setup.spec.ts b/test-suites/test-lp/__setup.spec.ts index e7515f25..d359b51e 100644 --- a/test-suites/test-lp/__setup.spec.ts +++ b/test-suites/test-lp/__setup.spec.ts @@ -188,6 +188,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { BptWBTCWETH: mockTokens.BptWBTCWETH.address, WMATIC: mockTokens.WMATIC.address, USD: USD_ADDRESS, + STAKE: mockTokens.STAKE.address, }, fallbackOracle ); From e3846332db03bd85f42034cbe4319cf14ebd424e Mon Sep 17 00:00:00 2001 From: Hadrien Charlanes Date: Tue, 23 Feb 2021 15:42:47 +0100 Subject: [PATCH 09/17] Cleaned up more conf, getParanetwork working now. Added weth Gateway Matic --- hardhat.config.ts | 4 +- helpers/configuration.ts | 20 +-- helpers/contracts-helpers.ts | 36 ++-- helpers/init-helpers.ts | 156 +++++++++--------- helpers/types.ts | 9 +- markets/matic/commons.ts | 2 +- tasks/dev/5_initialize.ts | 4 +- tasks/full/1_address_provider.ts | 8 +- tasks/full/2_lending_pool.ts | 21 ++- tasks/full/3_oracles.ts | 8 +- tasks/full/5-deploy-wethGateWay.ts | 4 +- tasks/full/6-initialize.ts | 9 +- tasks/helpers/deploy-new-asset.ts | 6 +- tasks/misc/initialize-tokens.ts | 6 +- tasks/misc/print-config.ts | 4 +- tasks/verifications/1_general.ts | 20 ++- tasks/verifications/2_tokens.ts | 8 +- test-suites/test-aave/__setup.spec.ts | 1 - .../test-aave/delegation-aware-atoken.spec.ts | 13 +- 19 files changed, 187 insertions(+), 152 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index 3db6b821..47c26680 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -3,7 +3,7 @@ import fs from 'fs'; import { HardhatUserConfig } from 'hardhat/types'; // @ts-ignore import { accounts } from './test-wallets.js'; -import { eEthereumNetwork, ePolygonNetwork, eXDaiNetwork } from './helpers/types'; +import { eEthereumNetwork, eNetwork, ePolygonNetwork, eXDaiNetwork } from './helpers/types'; import { BUIDLEREVM_CHAINID, COVERAGE_CHAINID } from './helpers/buidler-constants'; import { NETWORKS_RPC_URL, NETWORKS_DEFAULT_GAS } from './helper-hardhat-config'; @@ -41,7 +41,7 @@ if (!SKIP_LOAD) { require(`${path.join(__dirname, 'tasks/misc')}/set-bre.ts`); -const getCommonNetworkConfig = (networkName: eEthereumNetwork | ePolygonNetwork | eXDaiNetwork, networkId: number) => ({ +const getCommonNetworkConfig = (networkName: eNetwork, networkId: number) => ({ url: NETWORKS_RPC_URL[networkName], hardfork: HARDFORK, blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT, diff --git a/helpers/configuration.ts b/helpers/configuration.ts index 894dc11f..39a404c0 100644 --- a/helpers/configuration.ts +++ b/helpers/configuration.ts @@ -4,12 +4,12 @@ import { IReserveParams, PoolConfiguration, ICommonConfiguration, - eEthereumNetwork, + eNetwork, } from './types'; import { getParamPerPool } from './contracts-helpers'; import AaveConfig from '../markets/aave'; import LpConfig from '../markets/lp'; -import MaticConfig from '../markets/matic' +import MaticConfig from '../markets/matic'; import { CommonsConfig } from '../markets/aave/commons'; import { DRE, filterMapBy } from './misc-utils'; import { tEthereumAddress } from './types'; @@ -28,9 +28,9 @@ export const loadPoolConfig = (configName: ConfigNames): PoolConfiguration => { case ConfigNames.Aave: return AaveConfig; case ConfigNames.Lp: - return LpConfig; + return LpConfig; case ConfigNames.Matic: - return MaticConfig; + return MaticConfig; case ConfigNames.Commons: return CommonsConfig; default: @@ -51,7 +51,7 @@ export const getReservesConfigByPool = (pool: AavePools): iMultiPoolsAssets => { const currentNetwork = process.env.MAINNET_FORK === 'true' ? 'main' : DRE.network.name; - const targetAddress = getParamPerNetwork(config.PoolAdmin, currentNetwork); + const targetAddress = getParamPerNetwork(config.PoolAdmin, currentNetwork); if (targetAddress) { return targetAddress; } @@ -77,7 +77,7 @@ export const getEmergencyAdmin = async ( config: ICommonConfiguration ): Promise => { const currentNetwork = process.env.MAINNET_FORK === 'true' ? 'main' : DRE.network.name; - const targetAddress = getParamPerNetwork(config.EmergencyAdmin, currentNetwork); + const targetAddress = getParamPerNetwork(config.EmergencyAdmin, currentNetwork); if (targetAddress) { return targetAddress; } @@ -92,17 +92,17 @@ export const getTreasuryAddress = async ( config: ICommonConfiguration ): Promise => { const currentNetwork = process.env.MAINNET_FORK === 'true' ? 'main' : DRE.network.name; - return getParamPerNetwork(config.ReserveFactorTreasuryAddress, currentNetwork); + return getParamPerNetwork(config.ReserveFactorTreasuryAddress, currentNetwork); }; export const getATokenDomainSeparatorPerNetwork = ( - network: eEthereumNetwork, + network: eNetwork, config: ICommonConfiguration ): tEthereumAddress => getParamPerNetwork(config.ATokenDomainSeparator, network); export const getWethAddress = async (config: ICommonConfiguration) => { const currentNetwork = process.env.MAINNET_FORK === 'true' ? 'main' : DRE.network.name; - const wethAddress = getParamPerNetwork(config.WETH, currentNetwork); + const wethAddress = getParamPerNetwork(config.WETH, currentNetwork); if (wethAddress) { return wethAddress; } diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts index 2cd26f57..c9c64aec 100644 --- a/helpers/contracts-helpers.ts +++ b/helpers/contracts-helpers.ts @@ -11,6 +11,13 @@ import { AavePools, iParamsPerNetwork, iParamsPerPool, + ePolygonNetwork, + eXDaiNetwork, + eNetwork, + iParamsPerNetworkAll, + iEthereumParamsPerNetwork, + iPolygonParamsPerNetwork, + iXDaiParamsPerNetwork, } from './types'; import { MintableERC20 } from '../types/MintableERC20'; import { Artifact } from 'hardhat/types'; @@ -132,10 +139,17 @@ export const linkBytecode = (artifact: BuidlerArtifact | Artifact, libraries: an return bytecode; }; -export const getParamPerNetwork = ( - { kovan, ropsten, main, buidlerevm, coverage, tenderlyMain, matic, mumbai }: iParamsPerNetwork, - network: eEthereumNetwork -) => { +export const getParamPerNetwork = (param: iParamsPerNetwork, network: eNetwork) => { + const { + main, + ropsten, + kovan, + coverage, + buidlerevm, + tenderlyMain, + } = param as iEthereumParamsPerNetwork; + const { matic, mumbai } = param as iPolygonParamsPerNetwork; + const { xdai } = param as iXDaiParamsPerNetwork; const MAINNET_FORK = process.env.MAINNET_FORK === 'true'; if (MAINNET_FORK) { return main; @@ -153,13 +167,15 @@ export const getParamPerNetwork = ( case eEthereumNetwork.ropsten: return ropsten; case eEthereumNetwork.main: - return main; - case eEthereumNetwork.matic: - return matic; - case eEthereumNetwork.mumbai: return mumbai; case eEthereumNetwork.tenderlyMain: return tenderlyMain; + case ePolygonNetwork.matic: + return matic; + case ePolygonNetwork.mumbai: + return mumbai; + case eXDaiNetwork.xdai: + return xdai; } }; @@ -167,8 +183,8 @@ export const getParamPerPool = ({ proto, lp }: iParamsPerPool, pool: AaveP switch (pool) { case AavePools.proto: return proto; - case AavePools.lp: - return lp; + case AavePools.lp: + return lp; default: return proto; } diff --git a/helpers/init-helpers.ts b/helpers/init-helpers.ts index 308a3087..08cc7b55 100644 --- a/helpers/init-helpers.ts +++ b/helpers/init-helpers.ts @@ -1,6 +1,7 @@ import { eContractid, eEthereumNetwork, + eNetwork, iMultiPoolsAssets, IReserveParams, tEthereumAddress, @@ -69,21 +70,21 @@ export const initReservesByHelper = async ( let reserveSymbols: string[] = []; let initInputParams: { - aTokenImpl: string, - stableDebtTokenImpl: string, - variableDebtTokenImpl: string, - underlyingAssetDecimals: BigNumberish, - interestRateStrategyAddress: string, - underlyingAsset: string, - treasury: string, - incentivesController: string, - underlyingAssetName: string, - aTokenName: string, - aTokenSymbol: string, - variableDebtTokenName: string, - variableDebtTokenSymbol: string, - stableDebtTokenName: string, - stableDebtTokenSymbol: string, + aTokenImpl: string; + stableDebtTokenImpl: string; + variableDebtTokenImpl: string; + underlyingAssetDecimals: BigNumberish; + interestRateStrategyAddress: string; + underlyingAsset: string; + treasury: string; + incentivesController: string; + underlyingAssetName: string; + aTokenName: string; + aTokenSymbol: string; + variableDebtTokenName: string; + variableDebtTokenSymbol: string; + stableDebtTokenName: string; + stableDebtTokenSymbol: string; }[] = []; let strategyRates: [ @@ -99,10 +100,10 @@ export const initReservesByHelper = async ( let strategyAddresses: Record = {}; let strategyAddressPerAsset: Record = {}; let aTokenType: Record = {}; - let delegationAwareATokenImplementationAddress = ""; - let aTokenImplementationAddress = ""; - let stableDebtTokenImplementationAddress = ""; - let variableDebtTokenImplementationAddress = ""; + let delegationAwareATokenImplementationAddress = ''; + let aTokenImplementationAddress = ''; + let stableDebtTokenImplementationAddress = ''; + let variableDebtTokenImplementationAddress = ''; // NOT WORKING ON MATIC // const tx1 = await waitForTx( @@ -130,21 +131,20 @@ export const initReservesByHelper = async ( if (delegatedAwareReserves.length > 0) { const delegationAwareATokenImplementation = await deployDelegationAwareATokenImpl(verify); delegationAwareATokenImplementationAddress = delegationAwareATokenImplementation.address; - rawInsertContractAddressInDb(`delegationAwareATokenImpl`, delegationAwareATokenImplementationAddress); + rawInsertContractAddressInDb( + `delegationAwareATokenImpl`, + delegationAwareATokenImplementationAddress + ); } const reserves = Object.entries(reservesParams).filter( - ([_, { aTokenImpl }]) => aTokenImpl === eContractid.DelegationAwareAToken || - aTokenImpl === eContractid.AToken + ([_, { aTokenImpl }]) => + aTokenImpl === eContractid.DelegationAwareAToken || aTokenImpl === eContractid.AToken ) as [string, IReserveParams][]; for (let [symbol, params] of reserves) { + const { strategy, aTokenImpl, reserveDecimals } = params; const { - strategy, - aTokenImpl, - reserveDecimals, - } = params; - const { optimalUtilizationRate, baseVariableBorrowRate, variableRateSlope1, @@ -152,7 +152,7 @@ export const initReservesByHelper = async ( stableRateSlope1, stableRateSlope2, } = strategy; - if (!strategyAddresses[strategy.name]) { + if (!strategyAddresses[strategy.name]) { // Strategy does not exist, create a new one rateStrategies[strategy.name] = [ addressProvider.address, @@ -163,21 +163,20 @@ export const initReservesByHelper = async ( stableRateSlope1, stableRateSlope2, ]; - strategyAddresses[strategy.name] = (await deployDefaultReserveInterestRateStrategy( - rateStrategies[strategy.name], - verify - )).address; + strategyAddresses[strategy.name] = ( + await deployDefaultReserveInterestRateStrategy(rateStrategies[strategy.name], verify) + ).address; // This causes the last strategy to be printed twice, once under "DefaultReserveInterestRateStrategy" // and once under the actual `strategyASSET` key. rawInsertContractAddressInDb(strategy.name, strategyAddresses[strategy.name]); } strategyAddressPerAsset[symbol] = strategyAddresses[strategy.name]; - console.log("Strategy address for asset %s: %s", symbol, strategyAddressPerAsset[symbol]) + console.log('Strategy address for asset %s: %s', symbol, strategyAddressPerAsset[symbol]); if (aTokenImpl === eContractid.AToken) { - aTokenType[symbol] = "generic"; + aTokenType[symbol] = 'generic'; } else if (aTokenImpl === eContractid.DelegationAwareAToken) { - aTokenType[symbol] = "delegation aware"; + aTokenType[symbol] = 'delegation aware'; } reserveInitDecimals.push(reserveDecimals); @@ -185,7 +184,7 @@ export const initReservesByHelper = async ( reserveSymbols.push(symbol); } - for (let i = 0; i < reserveSymbols.length; i ++) { + for (let i = 0; i < reserveSymbols.length; i++) { let aTokenToUse: string; if (aTokenType[reserveSymbols[i]] === 'generic') { aTokenToUse = aTokenImplementationAddress; @@ -195,7 +194,7 @@ export const initReservesByHelper = async ( initInputParams.push({ aTokenImpl: aTokenToUse, - stableDebtTokenImpl: stableDebtTokenImplementationAddress, + stableDebtTokenImpl: stableDebtTokenImplementationAddress, variableDebtTokenImpl: variableDebtTokenImplementationAddress, underlyingAssetDecimals: reserveInitDecimals[i], interestRateStrategyAddress: strategyAddressPerAsset[reserveSymbols[i]], @@ -208,7 +207,7 @@ export const initReservesByHelper = async ( variableDebtTokenName: `${variableDebtTokenNamePrefix} ${symbolPrefix}${reserveSymbols[i]}`, variableDebtTokenSymbol: `variableDebt${symbolPrefix}${reserveSymbols[i]}`, stableDebtTokenName: `${stableDebtTokenNamePrefix} ${reserveSymbols[i]}`, - stableDebtTokenSymbol: `stableDebt${symbolPrefix}${reserveSymbols[i]}` + stableDebtTokenSymbol: `stableDebt${symbolPrefix}${reserveSymbols[i]}`, }); } @@ -230,7 +229,7 @@ export const initReservesByHelper = async ( //gasUsage = gasUsage.add(tx3.gasUsed); } - return gasUsage; // Deprecated + return gasUsage; // Deprecated }; export const getPairsTokenAggregator = ( @@ -276,7 +275,7 @@ export const configureReservesByHelper = async ( const reserveFactors: string[] = []; const stableRatesEnabled: boolean[] = []; - const inputParams : { + const inputParams: { asset: string; baseLTV: BigNumberish; liquidationThreshold: BigNumberish; @@ -319,7 +318,7 @@ export const configureReservesByHelper = async ( liquidationThreshold: liquidationThreshold, liquidationBonus: liquidationBonus, reserveFactor: reserveFactor, - stableBorrowingEnabled: stableBorrowRateEnabled + stableBorrowingEnabled: stableBorrowRateEnabled, }); tokens.push(tokenAddress); @@ -342,10 +341,9 @@ export const configureReservesByHelper = async ( console.log(`- Configure reserves in ${chunkedInputParams.length} txs`); for (let chunkIndex = 0; chunkIndex < chunkedInputParams.length; chunkIndex++) { await waitForTx( - await atokenAndRatesDeployer.configureReserves( - chunkedInputParams[chunkIndex], - { gasLimit: 12000000 } - ) + await atokenAndRatesDeployer.configureReserves(chunkedInputParams[chunkIndex], { + gasLimit: 12000000, + }) ); console.log(` - Init for: ${chunkedSymbols[chunkIndex].join(', ')}`); } @@ -356,7 +354,7 @@ export const configureReservesByHelper = async ( const getAddressById = async ( id: string, - network: eEthereumNetwork + network: eNetwork ): Promise => (await getDb().get(`${id}.${network}`).value())?.address || undefined; @@ -403,27 +401,25 @@ export const initTokenReservesByHelper = async ( let reserveSymbols: string[] = []; let initInputParams: { - aTokenImpl: string, - stableDebtTokenImpl: string, - variableDebtTokenImpl: string, - underlyingAssetDecimals: BigNumberish, - interestRateStrategyAddress: string, - underlyingAsset: string, - treasury: string, - incentivesController: string, - underlyingAssetName: string, - aTokenName: string, - aTokenSymbol: string, - variableDebtTokenName: string, - variableDebtTokenSymbol: string, - stableDebtTokenName: string, - stableDebtTokenSymbol: string, + aTokenImpl: string; + stableDebtTokenImpl: string; + variableDebtTokenImpl: string; + underlyingAssetDecimals: BigNumberish; + interestRateStrategyAddress: string; + underlyingAsset: string; + treasury: string; + incentivesController: string; + underlyingAssetName: string; + aTokenName: string; + aTokenSymbol: string; + variableDebtTokenName: string; + variableDebtTokenSymbol: string; + stableDebtTokenName: string; + stableDebtTokenSymbol: string; }[] = []; const network = - process.env.MAINNET_FORK === 'true' - ? eEthereumNetwork.main - : (DRE.network.name as eEthereumNetwork); + process.env.MAINNET_FORK === 'true' ? eEthereumNetwork.main : (DRE.network.name as eNetwork); // Grab config from DB for (const [symbol, address] of Object.entries(tokenAddresses)) { const { aTokenAddress } = await protocolDataProvider.getReserveTokensAddresses(address); @@ -439,10 +435,11 @@ export const initTokenReservesByHelper = async ( } let stableTokenImpl = await getAddressById(`stableDebtTokenImpl`, network); let variableTokenImpl = await getAddressById(`variableDebtTokenImpl`, network); - let aTokenImplementation: string | undefined = ""; - const [, { aTokenImpl, strategy }] = (Object.entries(reservesParams) as [string, IReserveParams][])[ - reserveParamIndex - ]; + let aTokenImplementation: string | undefined = ''; + const [, { aTokenImpl, strategy }] = (Object.entries(reservesParams) as [ + string, + IReserveParams + ][])[reserveParamIndex]; if (aTokenImpl === eContractid.AToken) { aTokenImplementation = await getAddressById(`aTokenImpl`, network); } else if (aTokenImpl === eContractid.DelegationAwareAToken) { @@ -458,7 +455,7 @@ export const initTokenReservesByHelper = async ( tokenAddresses[symbol], ZERO_ADDRESS, // Incentives controller `Aave stable debt bearing ${symbol}`, - `stableDebt${symbol}` + `stableDebt${symbol}`, ], verify ); @@ -471,7 +468,7 @@ export const initTokenReservesByHelper = async ( tokenAddresses[symbol], ZERO_ADDRESS, // Incentives Controller `Aave variable debt bearing ${symbol}`, - `variableDebt${symbol}` + `variableDebt${symbol}`, ], verify ); @@ -489,19 +486,16 @@ export const initTokenReservesByHelper = async ( treasuryAddress, ZERO_ADDRESS, `Aave interest bearing ${symbol}`, - `a${symbol}` + `a${symbol}`, ], verify ); aTokenImplementation = aToken.address; } if (!strategyImpl) { - const [ - , - { - strategy - }, - ] = (Object.entries(reservesParams) as [string, IReserveParams][])[reserveParamIndex]; + const [, { strategy }] = (Object.entries(reservesParams) as [string, IReserveParams][])[ + reserveParamIndex + ]; const { optimalUtilizationRate, baseVariableBorrowRate, @@ -543,10 +537,10 @@ export const initTokenReservesByHelper = async ( reserveSymbols.push(symbol); } - for (let i = 0; i < deployedATokens.length; i ++) { + for (let i = 0; i < deployedATokens.length; i++) { initInputParams.push({ aTokenImpl: deployedATokens[i], - stableDebtTokenImpl: deployedStableTokens[i], + stableDebtTokenImpl: deployedStableTokens[i], variableDebtTokenImpl: deployedVariableTokens[i], underlyingAssetDecimals: reserveInitDecimals[i], interestRateStrategyAddress: deployedRates[i], @@ -559,7 +553,7 @@ export const initTokenReservesByHelper = async ( variableDebtTokenName: `Aave variable debt bearing ${reserveSymbols[i]}`, variableDebtTokenSymbol: `variableDebt${reserveSymbols[i]}`, stableDebtTokenName: `Aave stable debt bearing ${reserveSymbols[i]}`, - stableDebtTokenSymbol: `stableDebt${reserveSymbols[i]}` + stableDebtTokenSymbol: `stableDebt${reserveSymbols[i]}`, }); } @@ -582,7 +576,7 @@ export const initTokenReservesByHelper = async ( // Set deployer back as admin await waitForTx(await addressProvider.setPoolAdmin(admin)); - return gasUsage; // No longer relevant + return gasUsage; // No longer relevant }; // Function deprecated diff --git a/helpers/types.ts b/helpers/types.ts index 526b2f98..39237440 100644 --- a/helpers/types.ts +++ b/helpers/types.ts @@ -4,6 +4,8 @@ export interface SymbolMap { [symbol: string]: T; } +export type eNetwork = eEthereumNetwork | ePolygonNetwork | eXDaiNetwork; + export enum eEthereumNetwork { buidlerevm = 'buidlerevm', kovan = 'kovan', @@ -16,7 +18,7 @@ export enum eEthereumNetwork { export enum ePolygonNetwork { matic = 'matic', - mumbai = 'mumbail', + mumbai = 'mumbai', } export enum eXDaiNetwork { @@ -398,6 +400,11 @@ export type iParamsPerNetwork = | iPolygonParamsPerNetwork | iXDaiParamsPerNetwork; +export interface iParamsPerNetworkAll + extends iEthereumParamsPerNetwork, + iPolygonParamsPerNetwork, + iXDaiParamsPerNetwork {} + export interface iEthereumParamsPerNetwork { [eEthereumNetwork.coverage]: T; [eEthereumNetwork.buidlerevm]: T; diff --git a/markets/matic/commons.ts b/markets/matic/commons.ts index 784f156d..109bda77 100644 --- a/markets/matic/commons.ts +++ b/markets/matic/commons.ts @@ -97,7 +97,7 @@ export const CommonsConfig: ICommonConfiguration = { }, WethGateway: { [ePolygonNetwork.mumbai]: '', - [ePolygonNetwork.matic]: '', + [ePolygonNetwork.matic]: '0x4fAfE6704a78e21Fc43C01bEb153607604F6768a', }, AaveOracle: { [ePolygonNetwork.mumbai]: '', diff --git a/tasks/dev/5_initialize.ts b/tasks/dev/5_initialize.ts index 6c11ad6d..a1ad9970 100644 --- a/tasks/dev/5_initialize.ts +++ b/tasks/dev/5_initialize.ts @@ -8,7 +8,7 @@ import { authorizeWETHGateway, } from '../../helpers/contracts-deployments'; import { getParamPerNetwork } from '../../helpers/contracts-helpers'; -import { eEthereumNetwork } from '../../helpers/types'; +import { eNetwork } from '../../helpers/types'; import { ConfigNames, getReservesConfigByPool, @@ -33,7 +33,7 @@ task('dev:initialize-lending-pool', 'Initialize lending pool configuration.') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .setAction(async ({ verify, pool }, localBRE) => { await localBRE.run('set-DRE'); - const network = localBRE.network.name; + const network = localBRE.network.name; const poolConfig = loadPoolConfig(pool); const { ATokenNamePrefix, diff --git a/tasks/full/1_address_provider.ts b/tasks/full/1_address_provider.ts index 87e3e23d..88852c0c 100644 --- a/tasks/full/1_address_provider.ts +++ b/tasks/full/1_address_provider.ts @@ -11,7 +11,7 @@ import { getGenesisPoolAdmin, getEmergencyAdmin, } from '../../helpers/configuration'; -import { eEthereumNetwork } from '../../helpers/types'; +import { eNetwork } from '../../helpers/types'; import { getFirstSigner, getLendingPoolAddressesProviderRegistry, @@ -31,7 +31,7 @@ task( .setAction(async ({ verify, pool }, DRE) => { await DRE.run('set-DRE'); let signer: Signer; - const network = DRE.network.name; + const network = DRE.network.name; const poolConfig = loadPoolConfig(pool); const { ProviderId, MarketId } = poolConfig; @@ -81,7 +81,7 @@ task( // 2. Deploy address provider and set genesis manager const addressesProvider = await deployLendingPoolAddressesProvider(MarketId, verify); - + // DISABLE SEC. 3 FOR GOVERNANCE USE! // 3. Set the provider at the Registry await waitForTx( @@ -92,7 +92,7 @@ task( ); // 4. Set pool admins - + await waitForTx(await addressesProvider.setPoolAdmin(await getGenesisPoolAdmin(poolConfig))); await waitForTx(await addressesProvider.setEmergencyAdmin(await getEmergencyAdmin(poolConfig))); diff --git a/tasks/full/2_lending_pool.ts b/tasks/full/2_lending_pool.ts index fd6e1352..5f92b8eb 100644 --- a/tasks/full/2_lending_pool.ts +++ b/tasks/full/2_lending_pool.ts @@ -6,7 +6,7 @@ import { deployLendingPoolConfigurator, deployStableAndVariableTokensHelper, } from '../../helpers/contracts-deployments'; -import { eContractid, eEthereumNetwork } from '../../helpers/types'; +import { eContractid, eNetwork } from '../../helpers/types'; import { notFalsyOrZeroAddress, waitForTx } from '../../helpers/misc-utils'; import { getLendingPoolAddressesProvider, @@ -22,20 +22,20 @@ task('full:deploy-lending-pool', 'Deploy lending pool for dev enviroment') .setAction(async ({ verify, pool }, DRE: HardhatRuntimeEnvironment) => { try { await DRE.run('set-DRE'); - const network = DRE.network.name; - const poolConfig = loadPoolConfig(pool) + const network = DRE.network.name; + const poolConfig = loadPoolConfig(pool); const addressesProvider = await getLendingPoolAddressesProvider(); - + const { LendingPool, LendingPoolConfigurator } = poolConfig; // Reuse/deploy lending pool implementation - let lendingPoolImplAddress = getParamPerNetwork(LendingPool, network) + let lendingPoolImplAddress = getParamPerNetwork(LendingPool, network); if (!notFalsyOrZeroAddress(lendingPoolImplAddress)) { - console.log("\tDeploying new lending pool implementation & libraries..."); + console.log('\tDeploying new lending pool implementation & libraries...'); const lendingPoolImpl = await deployLendingPool(verify); lendingPoolImplAddress = lendingPoolImpl.address; } - console.log("\tSetting lending pool implementation with address:" , lendingPoolImplAddress); + console.log('\tSetting lending pool implementation with address:', lendingPoolImplAddress); // Set lending pool impl to Address provider await waitForTx(await addressesProvider.setLendingPoolImpl(lendingPoolImplAddress)); @@ -47,11 +47,14 @@ task('full:deploy-lending-pool', 'Deploy lending pool for dev enviroment') // Reuse/deploy lending pool configurator let lendingPoolConfiguratorImplAddress = getParamPerNetwork(LendingPoolConfigurator, network); //await deployLendingPoolConfigurator(verify); if (!notFalsyOrZeroAddress(lendingPoolConfiguratorImplAddress)) { - console.log("\tDeploying new configurator implementation..."); + console.log('\tDeploying new configurator implementation...'); const lendingPoolConfiguratorImpl = await deployLendingPoolConfigurator(verify); lendingPoolConfiguratorImplAddress = lendingPoolConfiguratorImpl.address; } - console.log("\tSetting lending pool configurator implementation with address:" , lendingPoolConfiguratorImplAddress); + console.log( + '\tSetting lending pool configurator implementation with address:', + lendingPoolConfiguratorImplAddress + ); // Set lending pool conf impl to Address Provider await waitForTx( await addressesProvider.setLendingPoolConfiguratorImpl(lendingPoolConfiguratorImplAddress) diff --git a/tasks/full/3_oracles.ts b/tasks/full/3_oracles.ts index 67a8fbd7..e479b6b1 100644 --- a/tasks/full/3_oracles.ts +++ b/tasks/full/3_oracles.ts @@ -2,7 +2,7 @@ import { task } from 'hardhat/config'; import { getParamPerNetwork } from '../../helpers/contracts-helpers'; import { deployAaveOracle, deployLendingRateOracle } from '../../helpers/contracts-deployments'; import { setInitialMarketRatesInRatesOracleByHelper } from '../../helpers/oracles-helpers'; -import { ICommonConfiguration, eEthereumNetwork, SymbolMap } from '../../helpers/types'; +import { ICommonConfiguration, eNetwork, SymbolMap } from '../../helpers/types'; import { waitForTx, notFalsyOrZeroAddress } from '../../helpers/misc-utils'; import { ConfigNames, @@ -25,7 +25,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment') .setAction(async ({ verify, pool }, DRE) => { try { await DRE.run('set-DRE'); - const network = DRE.network.name; + const network = DRE.network.name; const poolConfig = loadPoolConfig(pool); const { ProtocolGlobalParams: { UsdAddress }, @@ -56,7 +56,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment') aaveOracle = await deployAaveOracle( [tokens, aggregators, fallbackOracleAddress, await getWethAddress(poolConfig)], verify - ); + ); } const lendingRateOracle = notFalsyOrZeroAddress(lendingRateOracleAddress) @@ -73,7 +73,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment') admin ); //} - console.log("ORACLES: %s and %s", aaveOracle.address, lendingRateOracle.address); + console.log('ORACLES: %s and %s', aaveOracle.address, lendingRateOracle.address); // Register the proxy price provider on the addressesProvider await waitForTx(await addressesProvider.setPriceOracle(aaveOracle.address)); await waitForTx(await addressesProvider.setLendingRateOracle(lendingRateOracle.address)); diff --git a/tasks/full/5-deploy-wethGateWay.ts b/tasks/full/5-deploy-wethGateWay.ts index 12c97a15..2774f107 100644 --- a/tasks/full/5-deploy-wethGateWay.ts +++ b/tasks/full/5-deploy-wethGateWay.ts @@ -4,7 +4,7 @@ import { getParamPerNetwork } from '../../helpers/contracts-helpers'; import { loadPoolConfig, ConfigNames, getWethAddress } from '../../helpers/configuration'; import { deployWETHGateway } from '../../helpers/contracts-deployments'; import { DRE } from '../../helpers/misc-utils'; -import { eEthereumNetwork } from '../../helpers/types'; +import { eNetwork } from '../../helpers/types'; const CONTRACT_NAME = 'WETHGateway'; @@ -13,7 +13,7 @@ task(`full-deploy-weth-gateway`, `Deploys the ${CONTRACT_NAME} contract`) .addFlag('verify', `Verify ${CONTRACT_NAME} contract via Etherscan API.`) .setAction(async ({ verify, pool }, localBRE) => { await localBRE.run('set-DRE'); - const network = localBRE.network.name; + const network = localBRE.network.name; const poolConfig = loadPoolConfig(pool); const Weth = await getWethAddress(poolConfig); const { WethGateway } = poolConfig; diff --git a/tasks/full/6-initialize.ts b/tasks/full/6-initialize.ts index b5ee3aea..f4384e09 100644 --- a/tasks/full/6-initialize.ts +++ b/tasks/full/6-initialize.ts @@ -13,7 +13,7 @@ import { getTreasuryAddress, } from '../../helpers/configuration'; import { getWETHGateway } from '../../helpers/contracts-getters'; -import { eEthereumNetwork, ICommonConfiguration } from '../../helpers/types'; +import { eNetwork, ICommonConfiguration } from '../../helpers/types'; import { notFalsyOrZeroAddress, waitForTx } from '../../helpers/misc-utils'; import { initReservesByHelper, configureReservesByHelper } from '../../helpers/init-helpers'; import { exit } from 'process'; @@ -29,7 +29,7 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.') .setAction(async ({ verify, pool }, localBRE) => { try { await localBRE.run('set-DRE'); - const network = localBRE.network.name; + const network = localBRE.network.name; const poolConfig = loadPoolConfig(pool); const { ATokenNamePrefix, @@ -79,7 +79,10 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.') } // Seems unnecessary to register the collateral manager in the JSON db - console.log("\tSetting lending pool collateral manager implementation with address", collateralManagerAddress); + console.log( + '\tSetting lending pool collateral manager implementation with address', + collateralManagerAddress + ); await waitForTx( await addressesProvider.setLendingPoolCollateralManager(collateralManagerAddress) ); diff --git a/tasks/helpers/deploy-new-asset.ts b/tasks/helpers/deploy-new-asset.ts index 50cde45b..03d102c4 100644 --- a/tasks/helpers/deploy-new-asset.ts +++ b/tasks/helpers/deploy-new-asset.ts @@ -1,5 +1,5 @@ import { task } from 'hardhat/config'; -import { EthereumNetwork } from '../../helpers/types'; +import { eEthereumNetwork } from '../../helpers/types'; import { getTreasuryAddress } from '../../helpers/configuration'; import * as marketConfigs from '../../markets/aave'; import * as reserveConfigs from '../../markets/aave/reservesConfigs'; @@ -18,7 +18,7 @@ const LENDING_POOL_ADDRESS_PROVIDER = { kovan: '0x652B2937Efd0B5beA1c8d54293FC1289672AFC6b', }; -const isSymbolValid = (symbol: string, network: EthereumNetwork) => +const isSymbolValid = (symbol: string, network: eEthereumNetwork) => Object.keys(reserveConfigs).includes('strategy' + symbol) && marketConfigs.AaveConfig.ReserveAssets[network][symbol] && marketConfigs.AaveConfig.ReservesConfig[symbol] === reserveConfigs['strategy' + symbol]; @@ -28,7 +28,7 @@ task('external:deploy-new-asset', 'Deploy A token, Debt Tokens, Risk Parameters' .addFlag('verify', 'Verify contracts at Etherscan') .setAction(async ({ verify, symbol }, localBRE) => { const network = localBRE.network.name; - if (!isSymbolValid(symbol, network as EthereumNetwork)) { + if (!isSymbolValid(symbol, network as eEthereumNetwork)) { throw new Error( ` WRONG RESERVE ASSET SETUP: diff --git a/tasks/misc/initialize-tokens.ts b/tasks/misc/initialize-tokens.ts index 91822f84..680e1337 100644 --- a/tasks/misc/initialize-tokens.ts +++ b/tasks/misc/initialize-tokens.ts @@ -1,7 +1,7 @@ import { task } from 'hardhat/config'; import { getParamPerNetwork } from '../../helpers/contracts-helpers'; import { loadPoolConfig, ConfigNames, getTreasuryAddress } from '../../helpers/configuration'; -import { eEthereumNetwork, ICommonConfiguration } from '../../helpers/types'; +import { eEthereumNetwork, eNetwork, ICommonConfiguration } from '../../helpers/types'; import { waitForTx } from '../../helpers/misc-utils'; import { initTokenReservesByHelper } from '../../helpers/init-helpers'; import { exit } from 'process'; @@ -23,9 +23,7 @@ task('full:initialize-tokens', 'Initialize lending pool configuration.') await DRE.run('set-DRE'); let signer: Signer; const network = - process.env.MAINNET_FORK === 'true' - ? eEthereumNetwork.main - : DRE.network.name; + process.env.MAINNET_FORK === 'true' ? eEthereumNetwork.main : DRE.network.name; const poolConfig = loadPoolConfig(pool); const { ReserveAssets, ReservesConfig } = poolConfig as ICommonConfiguration; diff --git a/tasks/misc/print-config.ts b/tasks/misc/print-config.ts index 6a7db42a..722d308c 100644 --- a/tasks/misc/print-config.ts +++ b/tasks/misc/print-config.ts @@ -7,7 +7,7 @@ import { } from '../../helpers/contracts-getters'; import { getParamPerNetwork } from '../../helpers/contracts-helpers'; import { DRE } from '../../helpers/misc-utils'; -import { eEthereumNetwork } from '../../helpers/types'; +import { eEthereumNetwork, eNetwork, ePolygonNetwork, eXDaiNetwork } from '../../helpers/types'; task('print-config', 'Inits the DRE, to have access to all the plugins') .addParam('dataProvider', 'Address of AaveProtocolDataProvider') @@ -17,7 +17,7 @@ task('print-config', 'Inits the DRE, to have access to all the plugins') const network = process.env.MAINNET_FORK === 'true' ? eEthereumNetwork.main - : (localBRE.network.name as eEthereumNetwork); + : (localBRE.network.name as eNetwork); const poolConfig = loadPoolConfig(pool); const providerRegistryAddress = getParamPerNetwork(poolConfig.ProviderRegistry, network); diff --git a/tasks/verifications/1_general.ts b/tasks/verifications/1_general.ts index 80a76162..fef0e510 100644 --- a/tasks/verifications/1_general.ts +++ b/tasks/verifications/1_general.ts @@ -25,14 +25,14 @@ import { import { getParamPerNetwork } from '../../helpers/contracts-helpers'; import { verifyContract } from '../../helpers/etherscan-verification'; import { notFalsyOrZeroAddress } from '../../helpers/misc-utils'; -import { eEthereumNetwork, ICommonConfiguration } from '../../helpers/types'; +import { eNetwork, ICommonConfiguration } from '../../helpers/types'; task('verify:general', 'Verify contracts at Etherscan') .addFlag('all', 'Verify all contracts at Etherscan') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .setAction(async ({ all, pool }, localDRE) => { await localDRE.run('set-DRE'); - const network = localDRE.network.name as eEthereumNetwork; + const network = localDRE.network.name as eNetwork; const poolConfig = loadPoolConfig(pool); const { ReserveAssets, @@ -52,7 +52,7 @@ task('verify:general', 'Verify contracts at Etherscan') ? await getLendingPoolAddressesProviderRegistry(registryAddress) : await getLendingPoolAddressesProviderRegistry(); const lendingPoolAddress = await addressesProvider.getLendingPool(); - const lendingPoolConfiguratorAddress = await addressesProvider.getLendingPoolConfigurator();//getLendingPoolConfiguratorProxy(); + const lendingPoolConfiguratorAddress = await addressesProvider.getLendingPoolConfigurator(); //getLendingPoolConfiguratorProxy(); const lendingPoolCollateralManagerAddress = await addressesProvider.getLendingPoolCollateralManager(); if (all) { @@ -61,13 +61,21 @@ task('verify:general', 'Verify contracts at Etherscan') ? await getLendingPoolImpl(lendingPoolImplAddress) : await getLendingPoolImpl(); - const lendingPoolConfiguratorImplAddress = getParamPerNetwork(LendingPoolConfigurator, network); + const lendingPoolConfiguratorImplAddress = getParamPerNetwork( + LendingPoolConfigurator, + network + ); const lendingPoolConfiguratorImpl = notFalsyOrZeroAddress(lendingPoolConfiguratorImplAddress) ? await getLendingPoolConfiguratorImpl(lendingPoolConfiguratorImplAddress) : await getLendingPoolConfiguratorImpl(); - const lendingPoolCollateralManagerImplAddress = getParamPerNetwork(LendingPoolCollateralManager, network); - const lendingPoolCollateralManagerImpl = notFalsyOrZeroAddress(lendingPoolCollateralManagerImplAddress) + const lendingPoolCollateralManagerImplAddress = getParamPerNetwork( + LendingPoolCollateralManager, + network + ); + const lendingPoolCollateralManagerImpl = notFalsyOrZeroAddress( + lendingPoolCollateralManagerImplAddress + ) ? await getLendingPoolCollateralManagerImpl(lendingPoolCollateralManagerImplAddress) : await getLendingPoolCollateralManagerImpl(); diff --git a/tasks/verifications/2_tokens.ts b/tasks/verifications/2_tokens.ts index a611c275..52d77ffd 100644 --- a/tasks/verifications/2_tokens.ts +++ b/tasks/verifications/2_tokens.ts @@ -15,24 +15,24 @@ import { } from '../../helpers/contracts-getters'; import { getParamPerNetwork } from '../../helpers/contracts-helpers'; import { verifyContract } from '../../helpers/etherscan-verification'; -import { eEthereumNetwork, ICommonConfiguration, IReserveParams } from '../../helpers/types'; +import { eNetwork, ICommonConfiguration, IReserveParams } from '../../helpers/types'; import { LendingPoolConfiguratorFactory, LendingPoolFactory } from '../../types'; task('verify:tokens', 'Deploy oracles for dev enviroment') .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`) .setAction(async ({ verify, all, pool }, localDRE) => { await localDRE.run('set-DRE'); - const network = localDRE.network.name as eEthereumNetwork; + const network = localDRE.network.name as eNetwork; const poolConfig = loadPoolConfig(pool); const { ReserveAssets, ReservesConfig } = poolConfig as ICommonConfiguration; const treasuryAddress = await getTreasuryAddress(poolConfig); const addressesProvider = await getLendingPoolAddressesProvider(); const lendingPoolProxy = LendingPoolFactory.connect( - await addressesProvider.getLendingPool(), + await addressesProvider.getLendingPool(), await getFirstSigner() ); - + const lendingPoolConfigurator = LendingPoolConfiguratorFactory.connect( await addressesProvider.getLendingPoolConfigurator(), await getFirstSigner() diff --git a/test-suites/test-aave/__setup.spec.ts b/test-suites/test-aave/__setup.spec.ts index c9a54f7f..79be455b 100644 --- a/test-suites/test-aave/__setup.spec.ts +++ b/test-suites/test-aave/__setup.spec.ts @@ -28,7 +28,6 @@ import { deployFlashLiquidationAdapter, authorizeWETHGateway, } from '../../helpers/contracts-deployments'; -import { eEthereumNetwork } from '../../helpers/types'; import { Signer } from 'ethers'; import { TokenContractId, eContractid, tEthereumAddress, AavePools } from '../../helpers/types'; import { MintableERC20 } from '../../types/MintableERC20'; diff --git a/test-suites/test-aave/delegation-aware-atoken.spec.ts b/test-suites/test-aave/delegation-aware-atoken.spec.ts index 656f7422..7e938172 100644 --- a/test-suites/test-aave/delegation-aware-atoken.spec.ts +++ b/test-suites/test-aave/delegation-aware-atoken.spec.ts @@ -3,7 +3,7 @@ import { BUIDLEREVM_CHAINID } from '../../helpers/buidler-constants'; import { buildPermitParams, getSignatureFromTypedData } from '../../helpers/contracts-helpers'; import { expect } from 'chai'; import { ethers } from 'ethers'; -import { eEthereumNetwork, ProtocolErrors } from '../../helpers/types'; +import { ProtocolErrors } from '../../helpers/types'; import { makeSuite, TestEnv } from './helpers/make-suite'; import { DRE } from '../../helpers/misc-utils'; import { @@ -35,10 +35,17 @@ makeSuite('AToken: underlying delegation', (testEnv: TestEnv) => { delegationERC20 = await deployMintableDelegationERC20(['DEL', 'DEL', '18']); delegationAToken = await deployDelegationAwareAToken( - [pool.address, delegationERC20.address, await getTreasuryAddress(AaveConfig), ZERO_ADDRESS, 'aDEL', 'aDEL'], + [ + pool.address, + delegationERC20.address, + await getTreasuryAddress(AaveConfig), + ZERO_ADDRESS, + 'aDEL', + 'aDEL', + ], false ); - + //await delegationAToken.initialize(pool.address, ZERO_ADDRESS, delegationERC20.address, ZERO_ADDRESS, '18', 'aDEL', 'aDEL'); console.log((await delegationAToken.decimals()).toString()); From d41edec1ab6b248653f6b12d78c15e38a74fafa2 Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Tue, 23 Feb 2021 10:59:02 -0500 Subject: [PATCH 10/17] Merged feat/lp-market-updated-deployment --- helpers/configuration.ts | 12 ++++---- helpers/contracts-getters.ts | 2 +- helpers/contracts-helpers.ts | 6 ++-- helpers/init-helpers.ts | 10 +++---- helpers/types.ts | 16 ++-------- markets/{lp => amm}/commons.ts | 0 markets/{lp => amm}/index.ts | 8 ++--- markets/{lp => amm}/rateStrategies.ts | 4 +-- markets/{lp => amm}/reservesConfigs.ts | 30 +++++++++---------- package-lock.json | 8 ++--- package.json | 10 +++---- tasks/full/2_lending_pool.ts | 2 +- .../{lp.mainnet.ts => amm.mainnet.ts} | 4 +-- test-suites/test-aave/__setup.spec.ts | 1 + .../{test-lp => test-amm}/__setup.spec.ts | 24 +++++++-------- .../addresses-provider-registry.spec.ts | 0 .../atoken-modifiers.spec.ts | 0 .../atoken-permit.spec.ts | 0 .../atoken-transfer.spec.ts | 2 +- .../configurator.spec.ts | 2 +- .../delegation-aware-atoken.spec.ts | 4 +-- .../{test-lp => test-amm}/flashloan.spec.ts | 0 .../{test-lp => test-amm}/helpers/actions.ts | 0 .../helpers/almost-equal.ts | 0 .../helpers/make-suite.ts | 4 +-- .../helpers/scenario-engine.ts | 0 .../helpers/scenarios/borrow-negatives.json | 0 .../scenarios/borrow-repay-stable.json | 0 .../scenarios/borrow-repay-variable.json | 0 .../helpers/scenarios/credit-delegation.json | 0 .../helpers/scenarios/deposit.json | 0 .../scenarios/rebalance-stable-rate.json | 0 .../scenarios/set-use-as-collateral.json | 0 .../helpers/scenarios/swap-rate-mode.json | 0 .../helpers/scenarios/withdraw-negatives.json | 0 .../helpers/scenarios/withdraw.json | 0 .../helpers/utils/calculations.ts | 0 .../helpers/utils/helpers.ts | 0 .../helpers/utils/interfaces/index.ts | 0 .../helpers/utils/math.ts | 0 .../lending-pool-addresses-provider.spec.ts | 0 .../liquidation-atoken.spec.ts | 0 .../liquidation-underlying.spec.ts | 2 +- .../mainnet/check-list.spec.ts | 0 .../pausable-functions.spec.ts | 0 .../pool-modifiers.spec.ts | 0 .../rate-strategy.spec.ts | 0 .../{test-lp => test-amm}/scenario.spec.ts | 4 +-- .../stable-rate-economy.spec.ts | 0 .../stable-token.spec.ts | 0 .../subgraph-scenarios.spec.ts | 2 +- .../uniswapAdapters.base.spec.ts | 0 .../uniswapAdapters.flashLiquidation.spec.ts | 0 .../uniswapAdapters.liquiditySwap.spec.ts | 0 .../uniswapAdapters.repay.spec.ts | 0 .../upgradeability.spec.ts | 0 .../variable-debt-token.spec.ts | 0 .../weth-gateway.spec.ts | 0 58 files changed, 74 insertions(+), 83 deletions(-) rename markets/{lp => amm}/commons.ts (100%) rename markets/{lp => amm}/index.ts (96%) rename markets/{lp => amm}/rateStrategies.ts (94%) rename markets/{lp => amm}/reservesConfigs.ts (92%) rename tasks/migrations/{lp.mainnet.ts => amm.mainnet.ts} (95%) rename test-suites/{test-lp => test-amm}/__setup.spec.ts (93%) rename test-suites/{test-lp => test-amm}/addresses-provider-registry.spec.ts (100%) rename test-suites/{test-lp => test-amm}/atoken-modifiers.spec.ts (100%) rename test-suites/{test-lp => test-amm}/atoken-permit.spec.ts (100%) rename test-suites/{test-lp => test-amm}/atoken-transfer.spec.ts (98%) rename test-suites/{test-lp => test-amm}/configurator.spec.ts (99%) rename test-suites/{test-lp => test-amm}/delegation-aware-atoken.spec.ts (96%) rename test-suites/{test-lp => test-amm}/flashloan.spec.ts (100%) rename test-suites/{test-lp => test-amm}/helpers/actions.ts (100%) rename test-suites/{test-lp => test-amm}/helpers/almost-equal.ts (100%) rename test-suites/{test-lp => test-amm}/helpers/make-suite.ts (98%) rename test-suites/{test-lp => test-amm}/helpers/scenario-engine.ts (100%) rename test-suites/{test-lp => test-amm}/helpers/scenarios/borrow-negatives.json (100%) rename test-suites/{test-lp => test-amm}/helpers/scenarios/borrow-repay-stable.json (100%) rename test-suites/{test-lp => test-amm}/helpers/scenarios/borrow-repay-variable.json (100%) rename test-suites/{test-lp => test-amm}/helpers/scenarios/credit-delegation.json (100%) rename test-suites/{test-lp => test-amm}/helpers/scenarios/deposit.json (100%) rename test-suites/{test-lp => test-amm}/helpers/scenarios/rebalance-stable-rate.json (100%) rename test-suites/{test-lp => test-amm}/helpers/scenarios/set-use-as-collateral.json (100%) rename test-suites/{test-lp => test-amm}/helpers/scenarios/swap-rate-mode.json (100%) rename test-suites/{test-lp => test-amm}/helpers/scenarios/withdraw-negatives.json (100%) rename test-suites/{test-lp => test-amm}/helpers/scenarios/withdraw.json (100%) rename test-suites/{test-lp => test-amm}/helpers/utils/calculations.ts (100%) rename test-suites/{test-lp => test-amm}/helpers/utils/helpers.ts (100%) rename test-suites/{test-lp => test-amm}/helpers/utils/interfaces/index.ts (100%) rename test-suites/{test-lp => test-amm}/helpers/utils/math.ts (100%) rename test-suites/{test-lp => test-amm}/lending-pool-addresses-provider.spec.ts (100%) rename test-suites/{test-lp => test-amm}/liquidation-atoken.spec.ts (100%) rename test-suites/{test-lp => test-amm}/liquidation-underlying.spec.ts (99%) rename test-suites/{test-lp => test-amm}/mainnet/check-list.spec.ts (100%) rename test-suites/{test-lp => test-amm}/pausable-functions.spec.ts (100%) rename test-suites/{test-lp => test-amm}/pool-modifiers.spec.ts (100%) rename test-suites/{test-lp => test-amm}/rate-strategy.spec.ts (100%) rename test-suites/{test-lp => test-amm}/scenario.spec.ts (93%) rename test-suites/{test-lp => test-amm}/stable-rate-economy.spec.ts (100%) rename test-suites/{test-lp => test-amm}/stable-token.spec.ts (100%) rename test-suites/{test-lp => test-amm}/subgraph-scenarios.spec.ts (96%) rename test-suites/{test-lp => test-amm}/uniswapAdapters.base.spec.ts (100%) rename test-suites/{test-lp => test-amm}/uniswapAdapters.flashLiquidation.spec.ts (100%) rename test-suites/{test-lp => test-amm}/uniswapAdapters.liquiditySwap.spec.ts (100%) rename test-suites/{test-lp => test-amm}/uniswapAdapters.repay.spec.ts (100%) rename test-suites/{test-lp => test-amm}/upgradeability.spec.ts (100%) rename test-suites/{test-lp => test-amm}/variable-debt-token.spec.ts (100%) rename test-suites/{test-lp => test-amm}/weth-gateway.spec.ts (100%) diff --git a/helpers/configuration.ts b/helpers/configuration.ts index 39a404c0..618eec82 100644 --- a/helpers/configuration.ts +++ b/helpers/configuration.ts @@ -8,8 +8,8 @@ import { } from './types'; import { getParamPerPool } from './contracts-helpers'; import AaveConfig from '../markets/aave'; -import LpConfig from '../markets/lp'; import MaticConfig from '../markets/matic'; +import AmmConfig from '../markets/amm'; import { CommonsConfig } from '../markets/aave/commons'; import { DRE, filterMapBy } from './misc-utils'; import { tEthereumAddress } from './types'; @@ -19,18 +19,18 @@ import { deployWETHMocked } from './contracts-deployments'; export enum ConfigNames { Commons = 'Commons', Aave = 'Aave', - Lp = 'Lp', Matic = 'Matic', + Amm = 'Amm', } export const loadPoolConfig = (configName: ConfigNames): PoolConfiguration => { switch (configName) { case ConfigNames.Aave: return AaveConfig; - case ConfigNames.Lp: - return LpConfig; case ConfigNames.Matic: return MaticConfig; + case ConfigNames.Amm: + return AmmConfig; case ConfigNames.Commons: return CommonsConfig; default: @@ -48,8 +48,8 @@ export const getReservesConfigByPool = (pool: AavePools): iMultiPoolsAssets { - const { ETH, USD, WETH, LpWETH, ...assetsAddressesWithoutEth } = allAssetsAddresses; + const { ETH, USD, WETH, ...assetsAddressesWithoutEth } = allAssetsAddresses; const pairs = Object.entries(assetsAddressesWithoutEth).map(([tokenSymbol, tokenAddress]) => { //if (true/*tokenSymbol !== 'WETH' && tokenSymbol !== 'ETH' && tokenSymbol !== 'LpWETH'*/) { diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts index c9c64aec..d025b694 100644 --- a/helpers/contracts-helpers.ts +++ b/helpers/contracts-helpers.ts @@ -179,12 +179,12 @@ export const getParamPerNetwork = (param: iParamsPerNetwork, network: eNet } }; -export const getParamPerPool = ({ proto, lp }: iParamsPerPool, pool: AavePools) => { +export const getParamPerPool = ({ proto, amm }: iParamsPerPool, pool: AavePools) => { switch (pool) { case AavePools.proto: return proto; - case AavePools.lp: - return lp; + case AavePools.amm: + return amm; default: return proto; } diff --git a/helpers/init-helpers.ts b/helpers/init-helpers.ts index 08cc7b55..f0014347 100644 --- a/helpers/init-helpers.ts +++ b/helpers/init-helpers.ts @@ -216,7 +216,7 @@ export const initReservesByHelper = async ( const chunkedInitInputParams = chunk(initInputParams, initChunks); const configurator = await getLendingPoolConfiguratorProxy(); - await waitForTx(await addressProvider.setPoolAdmin(admin)); + //await waitForTx(await addressProvider.setPoolAdmin(admin)); console.log(`- Reserves initialization in ${chunkedInitInputParams.length} txs`); for (let chunkIndex = 0; chunkIndex < chunkedInitInputParams.length; chunkIndex++) { @@ -386,7 +386,7 @@ export const initTokenReservesByHelper = async ( const poolAddress = await addressProvider.getLendingPool(); // Set aTokenAndRatesDeployer as temporal admin - await waitForTx(await addressProvider.setPoolAdmin(atokenAndRatesDeployer.address)); + //await waitForTx(await addressProvider.setPoolAdmin(atokenAndRatesDeployer.address)); // CHUNK CONFIGURATION const initChunks = 4; @@ -562,7 +562,7 @@ export const initTokenReservesByHelper = async ( const chunkedInitInputParams = chunk(initInputParams, initChunks); const configurator = await getLendingPoolConfiguratorProxy(); - await waitForTx(await addressProvider.setPoolAdmin(admin)); + //await waitForTx(await addressProvider.setPoolAdmin(admin)); console.log(`- Reserves initialization in ${chunkedInitInputParams.length} txs`); for (let chunkIndex = 0; chunkIndex < chunkedInitInputParams.length; chunkIndex++) { @@ -575,8 +575,8 @@ export const initTokenReservesByHelper = async ( } // Set deployer back as admin - await waitForTx(await addressProvider.setPoolAdmin(admin)); - return gasUsage; // No longer relevant + //await waitForTx(await addressProvider.setPoolAdmin(admin)); + return gasUsage; // No longer relevant }; // Function deprecated diff --git a/helpers/types.ts b/helpers/types.ts index 39237440..a56e054b 100644 --- a/helpers/types.ts +++ b/helpers/types.ts @@ -36,8 +36,8 @@ export enum EthereumNetworkNames { export enum AavePools { proto = 'proto', - lp = 'lp', matic = 'matic', + amm = 'amm', } export enum eContractid { @@ -220,11 +220,6 @@ export interface iAssetBase { USD: T; REN: T; ENJ: T; - // LpWETH: T; - // LpWBTC: T; - // LpDAI: T; - // LpUSDC: T; - // LpUSDT: T; UniDAIWETH: T; UniWBTCWETH: T; UniAAVEWETH: T; @@ -334,11 +329,6 @@ export enum TokenContractId { YFI = 'YFI', UNI = 'UNI', ENJ = 'ENJ', - // LpWETH = 'LpWETH', - // LpWBTC = 'LpWBTC', - // LpDAI = 'LpDAI', - // LpUSDC = 'LpUSDC', - // LpUSDT = 'LpUSDT', UniDAIWETH = 'UniDAIWETH', UniWBTCWETH = 'UniWBTCWETH', UniAAVEWETH = 'UniAAVEWETH', @@ -426,8 +416,8 @@ export interface iXDaiParamsPerNetwork { export interface iParamsPerPool { [AavePools.proto]: T; - [AavePools.lp]: T; [AavePools.matic]: T; + [AavePools.amm]: T; } export interface iBasicDistributionParams { @@ -502,7 +492,7 @@ export interface IAaveConfiguration extends ICommonConfiguration { ReservesConfig: iAavePoolAssets; } -export interface ILpConfiguration extends ICommonConfiguration { +export interface IAmmConfiguration extends ICommonConfiguration { ReservesConfig: iLpPoolAssets; } diff --git a/markets/lp/commons.ts b/markets/amm/commons.ts similarity index 100% rename from markets/lp/commons.ts rename to markets/amm/commons.ts diff --git a/markets/lp/index.ts b/markets/amm/index.ts similarity index 96% rename from markets/lp/index.ts rename to markets/amm/index.ts index aeb3bbc7..3cf69834 100644 --- a/markets/lp/index.ts +++ b/markets/amm/index.ts @@ -1,5 +1,5 @@ import { oneRay, ZERO_ADDRESS } from '../../helpers/constants'; -import { ILpConfiguration, eEthereumNetwork } from '../../helpers/types'; +import { IAmmConfiguration, eEthereumNetwork } from '../../helpers/types'; import { CommonsConfig } from './commons'; import { @@ -28,9 +28,9 @@ import { // POOL--SPECIFIC PARAMS // ---------------- -export const lpConfig: ILpConfiguration = { +export const AmmConfig: IAmmConfiguration = { ...CommonsConfig, - MarketId: 'Aave LP market', + MarketId: 'Aave AMM market', ProviderId: 2, ReservesConfig: { WETH: strategyWETH, @@ -129,4 +129,4 @@ export const lpConfig: ILpConfiguration = { }, }; -export default lpConfig; +export default AmmConfig; diff --git a/markets/lp/rateStrategies.ts b/markets/amm/rateStrategies.ts similarity index 94% rename from markets/lp/rateStrategies.ts rename to markets/amm/rateStrategies.ts index a91af2ea..26a68309 100644 --- a/markets/lp/rateStrategies.ts +++ b/markets/amm/rateStrategies.ts @@ -3,8 +3,8 @@ import { oneRay } from '../../helpers/constants'; import { IInterestRateStrategyParams } from '../../helpers/types'; // DAIWETH WBTCWETH AAVEWETH BATWETH USDCDAI CRVWETH LINKWETH MKRWETH RENWETH SNXWETH UNIWETH USDCWETH WBTCUSDC YFIWETH -export const rateStrategyLpBase: IInterestRateStrategyParams = { - name: "rateStrategyLpBase", +export const rateStrategyAmmBase: IInterestRateStrategyParams = { + name: "rateStrategyAmmBase", optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(), baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(), variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(), diff --git a/markets/lp/reservesConfigs.ts b/markets/amm/reservesConfigs.ts similarity index 92% rename from markets/lp/reservesConfigs.ts rename to markets/amm/reservesConfigs.ts index 21db2a1e..31b1a13c 100644 --- a/markets/lp/reservesConfigs.ts +++ b/markets/amm/reservesConfigs.ts @@ -1,6 +1,6 @@ import { eContractid, IReserveParams} from '../../helpers/types'; import { - rateStrategyLpBase, + rateStrategyAmmBase, rateStrategyStable, rateStrategyBaseOne, } from './rateStrategies'; @@ -67,7 +67,7 @@ export const strategyUSDT: IReserveParams = { }; export const strategyDAIWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -79,7 +79,7 @@ export const strategyDAIWETH: IReserveParams = { }; export const strategyWBTCWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -91,7 +91,7 @@ export const strategyWBTCWETH: IReserveParams = { }; export const strategyAAVEWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -103,7 +103,7 @@ export const strategyAAVEWETH: IReserveParams = { }; export const strategyBATWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -115,7 +115,7 @@ export const strategyBATWETH: IReserveParams = { }; export const strategyUSDCDAI: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -127,7 +127,7 @@ export const strategyUSDCDAI: IReserveParams = { }; export const strategyCRVWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '5000', liquidationThreshold: '6000', liquidationBonus: '11500', @@ -139,7 +139,7 @@ export const strategyCRVWETH: IReserveParams = { }; export const strategyLINKWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -151,7 +151,7 @@ export const strategyLINKWETH: IReserveParams = { }; export const strategyMKRWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -163,7 +163,7 @@ export const strategyMKRWETH: IReserveParams = { }; export const strategyRENWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -175,7 +175,7 @@ export const strategyRENWETH: IReserveParams = { }; export const strategySNXWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '4000', liquidationThreshold: '6000', liquidationBonus: '11500', @@ -187,7 +187,7 @@ export const strategySNXWETH: IReserveParams = { }; export const strategyUNIWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -199,7 +199,7 @@ export const strategyUNIWETH: IReserveParams = { }; export const strategyUSDCWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -211,7 +211,7 @@ export const strategyUSDCWETH: IReserveParams = { }; export const strategyWBTCUSDC: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', liquidationBonus: '11500', @@ -223,7 +223,7 @@ export const strategyWBTCUSDC: IReserveParams = { }; export const strategyYFIWETH: IReserveParams = { - strategy: rateStrategyLpBase, + strategy: rateStrategyAmmBase, baseLTVAsCollateral: '5000', liquidationThreshold: '6000', liquidationBonus: '11500', diff --git a/package-lock.json b/package-lock.json index 129f12e4..e0a68833 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27128,7 +27128,7 @@ "requires": { "underscore": "1.9.1", "web3-core-helpers": "1.2.1", - "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis" + "websocket": "websocket@github:web3-js/WebSocket-Node#polyfill/globalThis" } }, "web3-shh": { @@ -39846,7 +39846,7 @@ "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", "dev": true, "requires": { - "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-abi": "ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git", "ethereumjs-util": "^5.1.1" } }, @@ -46846,7 +46846,7 @@ "eth-lib": "0.2.7", "ethereumjs-common": "^1.3.2", "ethereumjs-tx": "^2.1.1", - "scrypt-shim": "github:web3-js/scrypt-shim", + "scrypt-shim": "scrypt-shim@github:web3-js/scrypt-shim", "underscore": "1.9.1", "uuid": "3.3.2", "web3-core": "1.2.2", @@ -47176,7 +47176,7 @@ "requires": { "underscore": "1.9.1", "web3-core-helpers": "1.2.2", - "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis" + "websocket": "websocket@github:web3-js/WebSocket-Node#polyfill/globalThis" } }, "web3-shh": { diff --git a/package.json b/package.json index cd067de1..5fd959fa 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "compile": "SKIP_LOAD=true hardhat compile", "console:fork": "MAINNET_FORK=true hardhat console", "test": "TS_NODE_TRANSPILE_ONLY=1 hardhat test ./test-suites/test-aave/*.spec.ts", - "test-lp": "TS_NODE_TRANSPILE_ONLY=1 hardhat test ./test-suites/test-lp/*.spec.ts", - "test-lp-scenarios": "TS_NODE_TRANSPILE_ONLY=1 hardhat test ./test-suites/test-lp/__setup.spec.ts test-suites/test-lp/scenario.spec.ts", + "test-amm": "TS_NODE_TRANSPILE_ONLY=1 hardhat test ./test-suites/test-amm/*.spec.ts", + "test-amm-scenarios": "TS_NODE_TRANSPILE_ONLY=1 hardhat test ./test-suites/test-amm/__setup.spec.ts test-suites/test-amm/scenario.spec.ts", "test-scenarios": "npx hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/scenario.spec.ts", "test-repay-with-collateral": "hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/repay-with-collateral.spec.ts", "test-liquidate-with-collateral": "hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/flash-liquidation-with-collateral.spec.ts", @@ -35,21 +35,21 @@ "test-stable-and-atokens": "hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/atoken-transfer.spec.ts test-suites/test-aave/stable-token.spec.ts", "test-subgraph:scenarios": "hardhat --network hardhatevm_docker test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/subgraph-scenarios.spec.ts", "test-weth:main": "hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/weth-gateway.spec.ts", - "test-weth:lp": "hardhat test test-suites/test-lp/__setup.spec.ts test-suites/test-lp/weth-gateway.spec.ts", + "test-weth:amm": "hardhat test test-suites/test-amm/__setup.spec.ts test-suites/test-amm/weth-gateway.spec.ts", "test-uniswap": "hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/uniswapAdapters*.spec.ts", "test:main:check-list": "MAINNET_FORK=true TS_NODE_TRANSPILE_ONLY=1 hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/mainnet/check-list.spec.ts", "dev:coverage": "buidler compile --force && buidler coverage --network coverage", "aave:evm:dev:migration": "npm run compile && hardhat aave:dev", "aave:docker:full:migration": "npm run compile && npm run hardhat:docker -- aave:mainnet", "aave:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- aave:mainnet --verify", - "lp:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- lp:mainnet --verify", "matic:mumbai:full:migration": "npm run compile && npm run hardhat:mumbai matic:mainnet", "matic:matic:full:migration": "npm run compile && npm run hardhat:matic matic:mainnet", + "amm:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- amm:mainnet --verify", "aave:kovan:full:initialize": "npm run hardhat:kovan -- full:initialize-lending-pool --verify --pool Aave", "aave:ropsten:full:migration": "npm run compile && npm run hardhat:ropsten -- aave:mainnet --verify", "aave:fork:main:tenderly": "npm run compile && npm run hardhat:tenderly-main -- aave:mainnet", "aave:fork:main": "npm run compile && MAINNET_FORK=true hardhat aave:mainnet", - "lp:fork:main": "npm run compile && MAINNET_FORK=true hardhat lp:mainnet", + "amm:fork:main": "npm run compile && MAINNET_FORK=true hardhat amm:mainnet", "aave:main:full:migration": "npm run compile && npm run hardhat:main -- aave:mainnet --verify", "aave:main:full:initialize": "npm run compile && MAINNET_FORK=true full:initialize-tokens --pool Aave", "prettier:check": "npx prettier -c 'tasks/**/*.ts' 'contracts/**/*.sol' 'helpers/**/*.ts' 'test-suites/test-aave/**/*.ts'", diff --git a/tasks/full/2_lending_pool.ts b/tasks/full/2_lending_pool.ts index 5f92b8eb..7e1ba2cb 100644 --- a/tasks/full/2_lending_pool.ts +++ b/tasks/full/2_lending_pool.ts @@ -25,7 +25,7 @@ task('full:deploy-lending-pool', 'Deploy lending pool for dev enviroment') const network = DRE.network.name; const poolConfig = loadPoolConfig(pool); const addressesProvider = await getLendingPoolAddressesProvider(); - + const { LendingPool, LendingPoolConfigurator } = poolConfig; // Reuse/deploy lending pool implementation diff --git a/tasks/migrations/lp.mainnet.ts b/tasks/migrations/amm.mainnet.ts similarity index 95% rename from tasks/migrations/lp.mainnet.ts rename to tasks/migrations/amm.mainnet.ts index 97a47ffa..3d0e6c8b 100644 --- a/tasks/migrations/lp.mainnet.ts +++ b/tasks/migrations/amm.mainnet.ts @@ -4,10 +4,10 @@ import { ConfigNames } from '../../helpers/configuration'; import { printContracts } from '../../helpers/misc-utils'; import { usingTenderly } from '../../helpers/tenderly-utils'; -task('lp:mainnet', 'Deploy development enviroment') +task('amm:mainnet', 'Deploy development enviroment') .addFlag('verify', 'Verify contracts at Etherscan') .setAction(async ({ verify }, DRE) => { - const POOL_NAME = ConfigNames.Lp; + const POOL_NAME = ConfigNames.Amm; await DRE.run('set-DRE'); // Prevent loss of gas verifying all the needed ENVs for Etherscan verification diff --git a/test-suites/test-aave/__setup.spec.ts b/test-suites/test-aave/__setup.spec.ts index 79be455b..c9a54f7f 100644 --- a/test-suites/test-aave/__setup.spec.ts +++ b/test-suites/test-aave/__setup.spec.ts @@ -28,6 +28,7 @@ import { deployFlashLiquidationAdapter, authorizeWETHGateway, } from '../../helpers/contracts-deployments'; +import { eEthereumNetwork } from '../../helpers/types'; import { Signer } from 'ethers'; import { TokenContractId, eContractid, tEthereumAddress, AavePools } from '../../helpers/types'; import { MintableERC20 } from '../../types/MintableERC20'; diff --git a/test-suites/test-lp/__setup.spec.ts b/test-suites/test-amm/__setup.spec.ts similarity index 93% rename from test-suites/test-lp/__setup.spec.ts rename to test-suites/test-amm/__setup.spec.ts index d359b51e..2ce5ce85 100644 --- a/test-suites/test-lp/__setup.spec.ts +++ b/test-suites/test-amm/__setup.spec.ts @@ -46,7 +46,7 @@ import { } from '../../helpers/oracles-helpers'; import { DRE, waitForTx } from '../../helpers/misc-utils'; import { initReservesByHelper, configureReservesByHelper } from '../../helpers/init-helpers'; -import LpConfig from '../../markets/lp'; +import AmmConfig from '../../markets/amm'; import { ZERO_ADDRESS } from '../../helpers/constants'; import { getLendingPool, @@ -55,16 +55,16 @@ import { } from '../../helpers/contracts-getters'; import { WETH9Mocked } from '../../types/WETH9Mocked'; -const MOCK_USD_PRICE_IN_WEI = LpConfig.ProtocolGlobalParams.MockUsdPriceInWei; -const ALL_ASSETS_INITIAL_PRICES = LpConfig.Mocks.AllAssetsInitialPrices; -const USD_ADDRESS = LpConfig.ProtocolGlobalParams.UsdAddress; -const MOCK_CHAINLINK_AGGREGATORS_PRICES = LpConfig.Mocks.AllAssetsInitialPrices; -const LENDING_RATE_ORACLE_RATES_COMMON = LpConfig.LendingRateOracleRatesCommon; +const MOCK_USD_PRICE_IN_WEI = AmmConfig.ProtocolGlobalParams.MockUsdPriceInWei; +const ALL_ASSETS_INITIAL_PRICES = AmmConfig.Mocks.AllAssetsInitialPrices; +const USD_ADDRESS = AmmConfig.ProtocolGlobalParams.UsdAddress; +const MOCK_CHAINLINK_AGGREGATORS_PRICES = AmmConfig.Mocks.AllAssetsInitialPrices; +const LENDING_RATE_ORACLE_RATES_COMMON = AmmConfig.LendingRateOracleRatesCommon; const deployAllMockTokens = async (deployer: Signer) => { const tokens: { [symbol: string]: MockContract | MintableERC20 | WETH9Mocked } = {}; - const lpConfigData = getReservesConfigByPool(AavePools.lp); + const ammConfigData = getReservesConfigByPool(AavePools.amm); for (const tokenSymbol of Object.keys(TokenContractId)) { if (tokenSymbol === 'WETH') { @@ -74,7 +74,7 @@ const deployAllMockTokens = async (deployer: Signer) => { } let decimals = 18; - let configData = (lpConfigData)[tokenSymbol]; + let configData = (ammConfigData)[tokenSymbol]; if (!configData) { decimals = 18; @@ -97,7 +97,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { const mockTokens = await deployAllMockTokens(deployer); - const addressesProvider = await deployLendingPoolAddressesProvider(LpConfig.MarketId); + const addressesProvider = await deployLendingPoolAddressesProvider(AmmConfig.MarketId); await waitForTx(await addressesProvider.setPoolAdmin(aaveAdmin)); //setting users[1] as emergency admin, which is in position 2 in the DRE addresses list @@ -229,7 +229,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { aaveAdmin ); - const reservesParams = getReservesConfigByPool(AavePools.lp); + const reservesParams = getReservesConfigByPool(AavePools.amm); const testHelpers = await deployAaveProtocolDataProvider(addressesProvider.address); @@ -238,7 +238,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { console.log('Initialize configuration'); - const config = loadPoolConfig(ConfigNames.Lp); + const config = loadPoolConfig(ConfigNames.Amm); const { ATokenNamePrefix, @@ -294,7 +294,7 @@ before(async () => { const MAINNET_FORK = process.env.MAINNET_FORK === 'true'; if (MAINNET_FORK) { - await rawBRE.run('lp:mainnet'); + await rawBRE.run('amm:mainnet'); } else { console.log('-> Deploying test environment...'); await buildTestEnv(deployer, secondaryWallet); diff --git a/test-suites/test-lp/addresses-provider-registry.spec.ts b/test-suites/test-amm/addresses-provider-registry.spec.ts similarity index 100% rename from test-suites/test-lp/addresses-provider-registry.spec.ts rename to test-suites/test-amm/addresses-provider-registry.spec.ts diff --git a/test-suites/test-lp/atoken-modifiers.spec.ts b/test-suites/test-amm/atoken-modifiers.spec.ts similarity index 100% rename from test-suites/test-lp/atoken-modifiers.spec.ts rename to test-suites/test-amm/atoken-modifiers.spec.ts diff --git a/test-suites/test-lp/atoken-permit.spec.ts b/test-suites/test-amm/atoken-permit.spec.ts similarity index 100% rename from test-suites/test-lp/atoken-permit.spec.ts rename to test-suites/test-amm/atoken-permit.spec.ts diff --git a/test-suites/test-lp/atoken-transfer.spec.ts b/test-suites/test-amm/atoken-transfer.spec.ts similarity index 98% rename from test-suites/test-lp/atoken-transfer.spec.ts rename to test-suites/test-amm/atoken-transfer.spec.ts index 9d1b8359..0290f941 100644 --- a/test-suites/test-lp/atoken-transfer.spec.ts +++ b/test-suites/test-amm/atoken-transfer.spec.ts @@ -4,7 +4,7 @@ import { expect } from 'chai'; import { ethers } from 'ethers'; import { RateMode, ProtocolErrors } from '../../helpers/types'; import { makeSuite, TestEnv } from './helpers/make-suite'; -import { CommonsConfig } from '../../markets/lp/commons'; +import { CommonsConfig } from '../../markets/amm/commons'; const AAVE_REFERRAL = CommonsConfig.ProtocolGlobalParams.AaveReferral; diff --git a/test-suites/test-lp/configurator.spec.ts b/test-suites/test-amm/configurator.spec.ts similarity index 99% rename from test-suites/test-lp/configurator.spec.ts rename to test-suites/test-amm/configurator.spec.ts index f4557791..e4e3f4fa 100644 --- a/test-suites/test-lp/configurator.spec.ts +++ b/test-suites/test-amm/configurator.spec.ts @@ -2,7 +2,7 @@ import { TestEnv, makeSuite } from './helpers/make-suite'; import { APPROVAL_AMOUNT_LENDING_POOL, RAY } from '../../helpers/constants'; import { convertToCurrencyDecimals } from '../../helpers/contracts-helpers'; import { ProtocolErrors } from '../../helpers/types'; -import { strategyWETH } from '../../markets/lp/reservesConfigs'; +import { strategyWETH } from '../../markets/amm/reservesConfigs'; const { expect } = require('chai'); diff --git a/test-suites/test-lp/delegation-aware-atoken.spec.ts b/test-suites/test-amm/delegation-aware-atoken.spec.ts similarity index 96% rename from test-suites/test-lp/delegation-aware-atoken.spec.ts rename to test-suites/test-amm/delegation-aware-atoken.spec.ts index aeaf4499..73ca6883 100644 --- a/test-suites/test-lp/delegation-aware-atoken.spec.ts +++ b/test-suites/test-amm/delegation-aware-atoken.spec.ts @@ -20,7 +20,7 @@ import { import { DelegationAwareATokenFactory } from '../../types'; import { DelegationAwareAToken } from '../../types/DelegationAwareAToken'; import { MintableDelegationERC20 } from '../../types/MintableDelegationERC20'; -import LpConfig from '../../markets/lp'; +import AmmConfig from '../../markets/amm'; const { parseEther } = ethers.utils; @@ -35,7 +35,7 @@ makeSuite('AToken: underlying delegation', (testEnv: TestEnv) => { delegationERC20 = await deployMintableDelegationERC20(['DEL', 'DEL', '18']); delegationAToken = await deployDelegationAwareAToken( - [pool.address, delegationERC20.address, await getTreasuryAddress(LpConfig), ZERO_ADDRESS, 'aDEL', 'aDEL'], + [pool.address, delegationERC20.address, await getTreasuryAddress(AmmConfig), ZERO_ADDRESS, 'aDEL', 'aDEL'], false ); diff --git a/test-suites/test-lp/flashloan.spec.ts b/test-suites/test-amm/flashloan.spec.ts similarity index 100% rename from test-suites/test-lp/flashloan.spec.ts rename to test-suites/test-amm/flashloan.spec.ts diff --git a/test-suites/test-lp/helpers/actions.ts b/test-suites/test-amm/helpers/actions.ts similarity index 100% rename from test-suites/test-lp/helpers/actions.ts rename to test-suites/test-amm/helpers/actions.ts diff --git a/test-suites/test-lp/helpers/almost-equal.ts b/test-suites/test-amm/helpers/almost-equal.ts similarity index 100% rename from test-suites/test-lp/helpers/almost-equal.ts rename to test-suites/test-amm/helpers/almost-equal.ts diff --git a/test-suites/test-lp/helpers/make-suite.ts b/test-suites/test-amm/helpers/make-suite.ts similarity index 98% rename from test-suites/test-lp/helpers/make-suite.ts rename to test-suites/test-amm/helpers/make-suite.ts index c65f0df0..71d96bf5 100644 --- a/test-suites/test-lp/helpers/make-suite.ts +++ b/test-suites/test-amm/helpers/make-suite.ts @@ -36,7 +36,7 @@ import { getParamPerNetwork } from '../../../helpers/contracts-helpers'; import { WETH9Mocked } from '../../../types/WETH9Mocked'; import { WETHGateway } from '../../../types/WETHGateway'; import { solidity } from 'ethereum-waffle'; -import { lpConfig } from '../../../markets/lp'; +import { AmmConfig } from '../../../markets/amm'; import { FlashLiquidationAdapter } from '../../../types'; import { HardhatRuntimeEnvironment } from 'hardhat/types'; import { usingTenderly } from '../../../helpers/tenderly-utils'; @@ -118,7 +118,7 @@ export async function initializeMakeSuite() { if (process.env.MAINNET_FORK === 'true') { testEnv.registry = await getLendingPoolAddressesProviderRegistry( - getParamPerNetwork(lpConfig.ProviderRegistry, eEthereumNetwork.main) + getParamPerNetwork(AmmConfig.ProviderRegistry, eEthereumNetwork.main) ); } else { testEnv.registry = await getLendingPoolAddressesProviderRegistry(); diff --git a/test-suites/test-lp/helpers/scenario-engine.ts b/test-suites/test-amm/helpers/scenario-engine.ts similarity index 100% rename from test-suites/test-lp/helpers/scenario-engine.ts rename to test-suites/test-amm/helpers/scenario-engine.ts diff --git a/test-suites/test-lp/helpers/scenarios/borrow-negatives.json b/test-suites/test-amm/helpers/scenarios/borrow-negatives.json similarity index 100% rename from test-suites/test-lp/helpers/scenarios/borrow-negatives.json rename to test-suites/test-amm/helpers/scenarios/borrow-negatives.json diff --git a/test-suites/test-lp/helpers/scenarios/borrow-repay-stable.json b/test-suites/test-amm/helpers/scenarios/borrow-repay-stable.json similarity index 100% rename from test-suites/test-lp/helpers/scenarios/borrow-repay-stable.json rename to test-suites/test-amm/helpers/scenarios/borrow-repay-stable.json diff --git a/test-suites/test-lp/helpers/scenarios/borrow-repay-variable.json b/test-suites/test-amm/helpers/scenarios/borrow-repay-variable.json similarity index 100% rename from test-suites/test-lp/helpers/scenarios/borrow-repay-variable.json rename to test-suites/test-amm/helpers/scenarios/borrow-repay-variable.json diff --git a/test-suites/test-lp/helpers/scenarios/credit-delegation.json b/test-suites/test-amm/helpers/scenarios/credit-delegation.json similarity index 100% rename from test-suites/test-lp/helpers/scenarios/credit-delegation.json rename to test-suites/test-amm/helpers/scenarios/credit-delegation.json diff --git a/test-suites/test-lp/helpers/scenarios/deposit.json b/test-suites/test-amm/helpers/scenarios/deposit.json similarity index 100% rename from test-suites/test-lp/helpers/scenarios/deposit.json rename to test-suites/test-amm/helpers/scenarios/deposit.json diff --git a/test-suites/test-lp/helpers/scenarios/rebalance-stable-rate.json b/test-suites/test-amm/helpers/scenarios/rebalance-stable-rate.json similarity index 100% rename from test-suites/test-lp/helpers/scenarios/rebalance-stable-rate.json rename to test-suites/test-amm/helpers/scenarios/rebalance-stable-rate.json diff --git a/test-suites/test-lp/helpers/scenarios/set-use-as-collateral.json b/test-suites/test-amm/helpers/scenarios/set-use-as-collateral.json similarity index 100% rename from test-suites/test-lp/helpers/scenarios/set-use-as-collateral.json rename to test-suites/test-amm/helpers/scenarios/set-use-as-collateral.json diff --git a/test-suites/test-lp/helpers/scenarios/swap-rate-mode.json b/test-suites/test-amm/helpers/scenarios/swap-rate-mode.json similarity index 100% rename from test-suites/test-lp/helpers/scenarios/swap-rate-mode.json rename to test-suites/test-amm/helpers/scenarios/swap-rate-mode.json diff --git a/test-suites/test-lp/helpers/scenarios/withdraw-negatives.json b/test-suites/test-amm/helpers/scenarios/withdraw-negatives.json similarity index 100% rename from test-suites/test-lp/helpers/scenarios/withdraw-negatives.json rename to test-suites/test-amm/helpers/scenarios/withdraw-negatives.json diff --git a/test-suites/test-lp/helpers/scenarios/withdraw.json b/test-suites/test-amm/helpers/scenarios/withdraw.json similarity index 100% rename from test-suites/test-lp/helpers/scenarios/withdraw.json rename to test-suites/test-amm/helpers/scenarios/withdraw.json diff --git a/test-suites/test-lp/helpers/utils/calculations.ts b/test-suites/test-amm/helpers/utils/calculations.ts similarity index 100% rename from test-suites/test-lp/helpers/utils/calculations.ts rename to test-suites/test-amm/helpers/utils/calculations.ts diff --git a/test-suites/test-lp/helpers/utils/helpers.ts b/test-suites/test-amm/helpers/utils/helpers.ts similarity index 100% rename from test-suites/test-lp/helpers/utils/helpers.ts rename to test-suites/test-amm/helpers/utils/helpers.ts diff --git a/test-suites/test-lp/helpers/utils/interfaces/index.ts b/test-suites/test-amm/helpers/utils/interfaces/index.ts similarity index 100% rename from test-suites/test-lp/helpers/utils/interfaces/index.ts rename to test-suites/test-amm/helpers/utils/interfaces/index.ts diff --git a/test-suites/test-lp/helpers/utils/math.ts b/test-suites/test-amm/helpers/utils/math.ts similarity index 100% rename from test-suites/test-lp/helpers/utils/math.ts rename to test-suites/test-amm/helpers/utils/math.ts diff --git a/test-suites/test-lp/lending-pool-addresses-provider.spec.ts b/test-suites/test-amm/lending-pool-addresses-provider.spec.ts similarity index 100% rename from test-suites/test-lp/lending-pool-addresses-provider.spec.ts rename to test-suites/test-amm/lending-pool-addresses-provider.spec.ts diff --git a/test-suites/test-lp/liquidation-atoken.spec.ts b/test-suites/test-amm/liquidation-atoken.spec.ts similarity index 100% rename from test-suites/test-lp/liquidation-atoken.spec.ts rename to test-suites/test-amm/liquidation-atoken.spec.ts diff --git a/test-suites/test-lp/liquidation-underlying.spec.ts b/test-suites/test-amm/liquidation-underlying.spec.ts similarity index 99% rename from test-suites/test-lp/liquidation-underlying.spec.ts rename to test-suites/test-amm/liquidation-underlying.spec.ts index 7bc78dad..e44a2d80 100644 --- a/test-suites/test-lp/liquidation-underlying.spec.ts +++ b/test-suites/test-amm/liquidation-underlying.spec.ts @@ -7,7 +7,7 @@ import { makeSuite } from './helpers/make-suite'; import { ProtocolErrors, RateMode } from '../../helpers/types'; import { calcExpectedVariableDebtTokenBalance } from './helpers/utils/calculations'; import { getReserveData, getUserData } from './helpers/utils/helpers'; -import { CommonsConfig } from '../../markets/lp/commons'; +import { CommonsConfig } from '../../markets/amm/commons'; import { parseEther } from 'ethers/lib/utils'; diff --git a/test-suites/test-lp/mainnet/check-list.spec.ts b/test-suites/test-amm/mainnet/check-list.spec.ts similarity index 100% rename from test-suites/test-lp/mainnet/check-list.spec.ts rename to test-suites/test-amm/mainnet/check-list.spec.ts diff --git a/test-suites/test-lp/pausable-functions.spec.ts b/test-suites/test-amm/pausable-functions.spec.ts similarity index 100% rename from test-suites/test-lp/pausable-functions.spec.ts rename to test-suites/test-amm/pausable-functions.spec.ts diff --git a/test-suites/test-lp/pool-modifiers.spec.ts b/test-suites/test-amm/pool-modifiers.spec.ts similarity index 100% rename from test-suites/test-lp/pool-modifiers.spec.ts rename to test-suites/test-amm/pool-modifiers.spec.ts diff --git a/test-suites/test-lp/rate-strategy.spec.ts b/test-suites/test-amm/rate-strategy.spec.ts similarity index 100% rename from test-suites/test-lp/rate-strategy.spec.ts rename to test-suites/test-amm/rate-strategy.spec.ts diff --git a/test-suites/test-lp/scenario.spec.ts b/test-suites/test-amm/scenario.spec.ts similarity index 93% rename from test-suites/test-lp/scenario.spec.ts rename to test-suites/test-amm/scenario.spec.ts index 99bed044..f9c4d78b 100644 --- a/test-suites/test-lp/scenario.spec.ts +++ b/test-suites/test-amm/scenario.spec.ts @@ -8,7 +8,7 @@ import { getReservesConfigByPool } from '../../helpers/configuration'; import { AavePools, iLpPoolAssets, IReserveParams } from '../../helpers/types'; import { executeStory } from './helpers/scenario-engine'; -const scenarioFolder = './test-suites/test-lp/helpers/scenarios/'; +const scenarioFolder = './test-suites/test-amm/helpers/scenarios/'; const selectedScenarios: string[] = []; @@ -25,7 +25,7 @@ fs.readdirSync(scenarioFolder).forEach((file) => { actionsConfiguration.skipIntegrityCheck = false; //set this to true to execute solidity-coverage calculationsConfiguration.reservesParams = >( - getReservesConfigByPool(AavePools.lp) + getReservesConfigByPool(AavePools.amm) ); }); after('Reset', () => { diff --git a/test-suites/test-lp/stable-rate-economy.spec.ts b/test-suites/test-amm/stable-rate-economy.spec.ts similarity index 100% rename from test-suites/test-lp/stable-rate-economy.spec.ts rename to test-suites/test-amm/stable-rate-economy.spec.ts diff --git a/test-suites/test-lp/stable-token.spec.ts b/test-suites/test-amm/stable-token.spec.ts similarity index 100% rename from test-suites/test-lp/stable-token.spec.ts rename to test-suites/test-amm/stable-token.spec.ts diff --git a/test-suites/test-lp/subgraph-scenarios.spec.ts b/test-suites/test-amm/subgraph-scenarios.spec.ts similarity index 96% rename from test-suites/test-lp/subgraph-scenarios.spec.ts rename to test-suites/test-amm/subgraph-scenarios.spec.ts index 24e119f1..a622eb34 100644 --- a/test-suites/test-lp/subgraph-scenarios.spec.ts +++ b/test-suites/test-amm/subgraph-scenarios.spec.ts @@ -19,7 +19,7 @@ makeSuite('Subgraph scenario tests', async (testEnv) => { actionsConfiguration.skipIntegrityCheck = false; //set this to true to execute solidity-coverage calculationsConfiguration.reservesParams = >( - getReservesConfigByPool(AavePools.lp) + getReservesConfigByPool(AavePools.amm) ); }); after('Reset', () => { diff --git a/test-suites/test-lp/uniswapAdapters.base.spec.ts b/test-suites/test-amm/uniswapAdapters.base.spec.ts similarity index 100% rename from test-suites/test-lp/uniswapAdapters.base.spec.ts rename to test-suites/test-amm/uniswapAdapters.base.spec.ts diff --git a/test-suites/test-lp/uniswapAdapters.flashLiquidation.spec.ts b/test-suites/test-amm/uniswapAdapters.flashLiquidation.spec.ts similarity index 100% rename from test-suites/test-lp/uniswapAdapters.flashLiquidation.spec.ts rename to test-suites/test-amm/uniswapAdapters.flashLiquidation.spec.ts diff --git a/test-suites/test-lp/uniswapAdapters.liquiditySwap.spec.ts b/test-suites/test-amm/uniswapAdapters.liquiditySwap.spec.ts similarity index 100% rename from test-suites/test-lp/uniswapAdapters.liquiditySwap.spec.ts rename to test-suites/test-amm/uniswapAdapters.liquiditySwap.spec.ts diff --git a/test-suites/test-lp/uniswapAdapters.repay.spec.ts b/test-suites/test-amm/uniswapAdapters.repay.spec.ts similarity index 100% rename from test-suites/test-lp/uniswapAdapters.repay.spec.ts rename to test-suites/test-amm/uniswapAdapters.repay.spec.ts diff --git a/test-suites/test-lp/upgradeability.spec.ts b/test-suites/test-amm/upgradeability.spec.ts similarity index 100% rename from test-suites/test-lp/upgradeability.spec.ts rename to test-suites/test-amm/upgradeability.spec.ts diff --git a/test-suites/test-lp/variable-debt-token.spec.ts b/test-suites/test-amm/variable-debt-token.spec.ts similarity index 100% rename from test-suites/test-lp/variable-debt-token.spec.ts rename to test-suites/test-amm/variable-debt-token.spec.ts diff --git a/test-suites/test-lp/weth-gateway.spec.ts b/test-suites/test-amm/weth-gateway.spec.ts similarity index 100% rename from test-suites/test-lp/weth-gateway.spec.ts rename to test-suites/test-amm/weth-gateway.spec.ts From b4936499a74c1d0ef58cde0a127ad40dac08b207 Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Tue, 23 Feb 2021 10:59:20 -0500 Subject: [PATCH 11/17] Fixed resuable addresses to match implementations --- markets/amm/commons.ts | 6 +++--- markets/matic/commons.ts | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/markets/amm/commons.ts b/markets/amm/commons.ts index bce33b98..f8608416 100644 --- a/markets/amm/commons.ts +++ b/markets/amm/commons.ts @@ -141,8 +141,8 @@ export const CommonsConfig: ICommonConfiguration = { LendingRateOracle: { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.hardhat]: '', - [eEthereumNetwork.buidlerevm]: '', - [eEthereumNetwork.kovan]: '',//'0xdCde9Bb6a49e37fA433990832AB541AE2d4FEB4a', // Need to re-deploy because of onlyOwner + [eEthereumNetwork.buidlerevm]: '',// Updated to match Kovan deployment + [eEthereumNetwork.kovan]: '0xd00Bd28FAdDa9d5658D1D4e0c151973146C7A533',//'0xE48F95873855bfd97BF89572DDf5cBC44D9c545b' [eEthereumNetwork.ropsten]: '0x05dcca805a6562c1bdd0423768754acb6993241b', [eEthereumNetwork.main]: '', //'0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D', // Need to re-deploy because of onlyOwner [eEthereumNetwork.tenderlyMain]: '0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D', @@ -178,7 +178,7 @@ export const CommonsConfig: ICommonConfiguration = { [eEthereumNetwork.coverage]: '', [eEthereumNetwork.hardhat]: '', [eEthereumNetwork.buidlerevm]: '', - [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.kovan]: '0x1c4A1cC35A477aa1cF35DF671d93ACc04d8131E0', [eEthereumNetwork.ropsten]: '', [eEthereumNetwork.main]: '', [eEthereumNetwork.tenderlyMain]: '', diff --git a/markets/matic/commons.ts b/markets/matic/commons.ts index 109bda77..42b269b0 100644 --- a/markets/matic/commons.ts +++ b/markets/matic/commons.ts @@ -68,11 +68,11 @@ export const CommonsConfig: ICommonConfiguration = { }, LendingPool: { [ePolygonNetwork.mumbai]: '', - [ePolygonNetwork.matic]: '0x15Ec48a46d2D26cf4ADf5A39123E4c75e6887fE0', + [ePolygonNetwork.matic]: '0xABdC61Cd16e5111f335f4135B7A0e65Cc7F86327', }, LendingPoolConfigurator: { [ePolygonNetwork.mumbai]: '', - [ePolygonNetwork.matic]: '0x268F48E09c72f6008DA50D6465a174C10167918e', + [ePolygonNetwork.matic]: '0x17c4A170FFF882862F656597889016D3a6073534', }, EmergencyAdminIndex: 1, ProviderRegistry: { @@ -89,7 +89,7 @@ export const CommonsConfig: ICommonConfiguration = { }, LendingPoolCollateralManager: { [ePolygonNetwork.mumbai]: '', - [ePolygonNetwork.matic]: '', + [ePolygonNetwork.matic]: '0x9Af76e0575D139570D3B4c821567Fe935E8c25C5', }, TokenDistributor: { [ePolygonNetwork.mumbai]: '', @@ -97,11 +97,11 @@ export const CommonsConfig: ICommonConfiguration = { }, WethGateway: { [ePolygonNetwork.mumbai]: '', - [ePolygonNetwork.matic]: '0x4fAfE6704a78e21Fc43C01bEb153607604F6768a', + [ePolygonNetwork.matic]: '0x15A46f5073789b7D16F6F46632aE50Bae838d938', }, AaveOracle: { [ePolygonNetwork.mumbai]: '', - [ePolygonNetwork.matic]: '', + [ePolygonNetwork.matic]: '0x1B38fa90596F2C25bCf1B193A6c6a718349AFDfC', }, FallbackOracle: { [ePolygonNetwork.mumbai]: ZERO_ADDRESS, From 735fc5c6c76975ee58917e42c9a4956348ea271a Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Tue, 23 Feb 2021 11:05:46 -0500 Subject: [PATCH 12/17] Removed useless space --- tasks/full/2_lending_pool.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/full/2_lending_pool.ts b/tasks/full/2_lending_pool.ts index 7e1ba2cb..5f92b8eb 100644 --- a/tasks/full/2_lending_pool.ts +++ b/tasks/full/2_lending_pool.ts @@ -25,7 +25,7 @@ task('full:deploy-lending-pool', 'Deploy lending pool for dev enviroment') const network = DRE.network.name; const poolConfig = loadPoolConfig(pool); const addressesProvider = await getLendingPoolAddressesProvider(); - + const { LendingPool, LendingPoolConfigurator } = poolConfig; // Reuse/deploy lending pool implementation From b2d344e18933b48a3421ae4efa6ec8cec3de75c1 Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Wed, 24 Feb 2021 10:55:52 -0500 Subject: [PATCH 13/17] Changed USDCDAI to DAIUSDC to fit pair order --- helpers/constants.ts | 2 +- helpers/types.ts | 6 +++--- markets/amm/commons.ts | 8 ++++---- markets/amm/index.ts | 10 +++++----- markets/amm/rateStrategies.ts | 2 +- markets/amm/reservesConfigs.ts | 2 +- test-suites/test-aave/__setup.spec.ts | 2 +- test-suites/test-amm/__setup.spec.ts | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/helpers/constants.ts b/helpers/constants.ts index 9a223bd6..31b255a1 100644 --- a/helpers/constants.ts +++ b/helpers/constants.ts @@ -54,7 +54,7 @@ export const MOCK_CHAINLINK_AGGREGATORS_PRICES = { UniWBTCWETH: oneEther.multipliedBy('22.407436').toFixed(), UniAAVEWETH: oneEther.multipliedBy('0.003620948469').toFixed(), UniBATWETH: oneEther.multipliedBy('22.407436').toFixed(), - UniUSDCDAI: oneEther.multipliedBy('22.407436').toFixed(), + UniDAIUSDC: oneEther.multipliedBy('22.407436').toFixed(), UniCRVWETH: oneEther.multipliedBy('22.407436').toFixed(), UniLINKWETH: oneEther.multipliedBy('0.009955').toFixed(), UniMKRWETH: oneEther.multipliedBy('22.407436').toFixed(), diff --git a/helpers/types.ts b/helpers/types.ts index a56e054b..d0a5fb43 100644 --- a/helpers/types.ts +++ b/helpers/types.ts @@ -224,7 +224,7 @@ export interface iAssetBase { UniWBTCWETH: T; UniAAVEWETH: T; UniBATWETH: T; - UniUSDCDAI: T; + UniDAIUSDC: T; UniCRVWETH: T; UniLINKWETH: T; UniMKRWETH: T; @@ -278,7 +278,7 @@ export type iLpPoolAssets = Pick< | 'UniWBTCWETH' | 'UniAAVEWETH' | 'UniBATWETH' - | 'UniUSDCDAI' + | 'UniDAIUSDC' | 'UniCRVWETH' | 'UniLINKWETH' | 'UniMKRWETH' @@ -333,7 +333,7 @@ export enum TokenContractId { UniWBTCWETH = 'UniWBTCWETH', UniAAVEWETH = 'UniAAVEWETH', UniBATWETH = 'UniBATWETH', - UniUSDCDAI = 'UniUSDCDAI', + UniDAIUSDC = 'UniDAIUSDC', UniCRVWETH = 'UniCRVWETH', UniLINKWETH = 'UniLINKWETH', UniMKRWETH = 'UniMKRWETH', diff --git a/markets/amm/commons.ts b/markets/amm/commons.ts index f8608416..f0dadf97 100644 --- a/markets/amm/commons.ts +++ b/markets/amm/commons.ts @@ -60,7 +60,7 @@ export const CommonsConfig: ICommonConfiguration = { UniBATWETH: { borrowRate: oneRay.multipliedBy(0.05).toFixed(), }, - UniUSDCDAI: { + UniDAIUSDC: { borrowRate: oneRay.multipliedBy(0.05).toFixed(), }, UniCRVWETH: { @@ -223,7 +223,7 @@ export const CommonsConfig: ICommonConfiguration = { UniWBTCWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F', UniAAVEWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F', UniBATWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F', - UniUSDCDAI: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F', + UniDAIUSDC: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F', UniCRVWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F', UniLINKWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F', UniMKRWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F', @@ -247,7 +247,7 @@ export const CommonsConfig: ICommonConfiguration = { UniWBTCWETH: ZERO_ADDRESS, UniAAVEWETH: ZERO_ADDRESS, UniBATWETH: ZERO_ADDRESS, - UniUSDCDAI: ZERO_ADDRESS, + UniDAIUSDC: ZERO_ADDRESS, UniCRVWETH: ZERO_ADDRESS, UniLINKWETH: ZERO_ADDRESS, UniMKRWETH: ZERO_ADDRESS, @@ -269,7 +269,7 @@ export const CommonsConfig: ICommonConfiguration = { UniWBTCWETH: ZERO_ADDRESS, UniAAVEWETH: ZERO_ADDRESS, UniBATWETH: ZERO_ADDRESS, - UniUSDCDAI: ZERO_ADDRESS, + UniDAIUSDC: ZERO_ADDRESS, UniCRVWETH: ZERO_ADDRESS, UniLINKWETH: ZERO_ADDRESS, UniMKRWETH: ZERO_ADDRESS, diff --git a/markets/amm/index.ts b/markets/amm/index.ts index 3cf69834..705e4be3 100644 --- a/markets/amm/index.ts +++ b/markets/amm/index.ts @@ -12,7 +12,7 @@ import { strategyDAIWETH, strategyAAVEWETH, strategyBATWETH, - strategyUSDCDAI, + strategyDAIUSDC, strategyCRVWETH, strategyLINKWETH, strategyMKRWETH, @@ -42,7 +42,7 @@ export const AmmConfig: IAmmConfiguration = { UniWBTCWETH: strategyWBTCWETH, UniAAVEWETH: strategyAAVEWETH, UniBATWETH: strategyBATWETH, - UniUSDCDAI: strategyUSDCDAI, + UniDAIUSDC: strategyDAIUSDC, UniCRVWETH: strategyCRVWETH, UniLINKWETH: strategyLINKWETH, UniMKRWETH: strategyMKRWETH, @@ -68,7 +68,7 @@ export const AmmConfig: IAmmConfiguration = { UniWBTCWETH: '0x796d562B1dF5b9dc85A4612187B6f29Ed213d960', UniAAVEWETH: '0x657A7B8b46F35C5C6583AEF43824744B236EF826', UniBATWETH: '0xf8CEBA8b16579956B3aE4B5D09002a30f873F783', - UniUSDCDAI: '0x8e80b7a7531c276dD1dBEC2f1Cc281c11c859e62', + UniDAIUSDC: '0x8e80b7a7531c276dD1dBEC2f1Cc281c11c859e62', UniCRVWETH: '0x9c31b7538467bF0b01e6d5fA789e66Ce540a521e', UniLINKWETH: '0x5Acab7f8B79620ec7127A96E5D8837d2124D5D7c', UniMKRWETH: '0xB0C6EC5d58ddbF4cd1e419A56a19924E9904e4Dd', @@ -92,7 +92,7 @@ export const AmmConfig: IAmmConfiguration = { UniWBTCWETH: '0xBb2b8038a1640196FbE3e38816F3e67Cba72D940', UniAAVEWETH: '0xDFC14d2Af169B0D36C4EFF567Ada9b2E0CAE044f', UniBATWETH: '0xB6909B960DbbE7392D405429eB2b3649752b4838', - UniUSDCDAI: '0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5', + UniDAIUSDC: '0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5', UniCRVWETH: '0x3dA1313aE46132A397D90d95B1424A9A7e3e0fCE', UniLINKWETH: '0xa2107FA5B38d9bbd2C461D6EDf11B11A50F6b974', UniMKRWETH: '0xC2aDdA861F89bBB333c90c492cB837741916A225', @@ -114,7 +114,7 @@ export const AmmConfig: IAmmConfiguration = { UniWBTCWETH: '0xBb2b8038a1640196FbE3e38816F3e67Cba72D940', UniAAVEWETH: '0xDFC14d2Af169B0D36C4EFF567Ada9b2E0CAE044f', UniBATWETH: '0xB6909B960DbbE7392D405429eB2b3649752b4838', - UniUSDCDAI: '0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5', + UniDAIUSDC: '0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5', UniCRVWETH: '0x3dA1313aE46132A397D90d95B1424A9A7e3e0fCE', UniLINKWETH: '0xa2107FA5B38d9bbd2C461D6EDf11B11A50F6b974', UniMKRWETH: '0xC2aDdA861F89bBB333c90c492cB837741916A225', diff --git a/markets/amm/rateStrategies.ts b/markets/amm/rateStrategies.ts index 26a68309..a4a05300 100644 --- a/markets/amm/rateStrategies.ts +++ b/markets/amm/rateStrategies.ts @@ -2,7 +2,7 @@ import BigNumber from 'bignumber.js'; import { oneRay } from '../../helpers/constants'; import { IInterestRateStrategyParams } from '../../helpers/types'; -// DAIWETH WBTCWETH AAVEWETH BATWETH USDCDAI CRVWETH LINKWETH MKRWETH RENWETH SNXWETH UNIWETH USDCWETH WBTCUSDC YFIWETH +// DAIWETH WBTCWETH AAVEWETH BATWETH DAIUSDC CRVWETH LINKWETH MKRWETH RENWETH SNXWETH UNIWETH USDCWETH WBTCUSDC YFIWETH export const rateStrategyAmmBase: IInterestRateStrategyParams = { name: "rateStrategyAmmBase", optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(), diff --git a/markets/amm/reservesConfigs.ts b/markets/amm/reservesConfigs.ts index 31b1a13c..b4143653 100644 --- a/markets/amm/reservesConfigs.ts +++ b/markets/amm/reservesConfigs.ts @@ -114,7 +114,7 @@ export const strategyBATWETH: IReserveParams = { reserveFactor: '1500' }; -export const strategyUSDCDAI: IReserveParams = { +export const strategyDAIUSDC: IReserveParams = { strategy: rateStrategyAmmBase, baseLTVAsCollateral: '6000', liquidationThreshold: '7000', diff --git a/test-suites/test-aave/__setup.spec.ts b/test-suites/test-aave/__setup.spec.ts index c9a54f7f..b157610f 100644 --- a/test-suites/test-aave/__setup.spec.ts +++ b/test-suites/test-aave/__setup.spec.ts @@ -176,7 +176,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { UniWBTCWETH: mockTokens.UniWBTCWETH.address, UniAAVEWETH: mockTokens.UniAAVEWETH.address, UniBATWETH: mockTokens.UniBATWETH.address, - UniUSDCDAI: mockTokens.UniUSDCDAI.address, + UniDAIUSDC: mockTokens.UniDAIUSDC.address, UniCRVWETH: mockTokens.UniCRVWETH.address, UniLINKWETH: mockTokens.UniLINKWETH.address, UniMKRWETH: mockTokens.UniMKRWETH.address, diff --git a/test-suites/test-amm/__setup.spec.ts b/test-suites/test-amm/__setup.spec.ts index 2ce5ce85..7d55702e 100644 --- a/test-suites/test-amm/__setup.spec.ts +++ b/test-suites/test-amm/__setup.spec.ts @@ -175,7 +175,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { UniWBTCWETH: mockTokens.UniWBTCWETH.address, UniAAVEWETH: mockTokens.UniAAVEWETH.address, UniBATWETH: mockTokens.UniBATWETH.address, - UniUSDCDAI: mockTokens.UniUSDCDAI.address, + UniDAIUSDC: mockTokens.UniDAIUSDC.address, UniCRVWETH: mockTokens.UniCRVWETH.address, UniLINKWETH: mockTokens.UniLINKWETH.address, UniMKRWETH: mockTokens.UniMKRWETH.address, From 53139ce9914b5624d021599c6a87212728d8458f Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Wed, 24 Feb 2021 16:42:41 -0500 Subject: [PATCH 14/17] Removed useless space --- helpers/contracts-helpers.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts index d025b694..b15ce276 100644 --- a/helpers/contracts-helpers.ts +++ b/helpers/contracts-helpers.ts @@ -183,8 +183,8 @@ export const getParamPerPool = ({ proto, amm }: iParamsPerPool, pool: Aave switch (pool) { case AavePools.proto: return proto; - case AavePools.amm: - return amm; + case AavePools.amm: + return amm; default: return proto; } From 46be3c6e8aa9ad64e7d7bfee610afc3dbc19f485 Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Wed, 24 Feb 2021 16:43:57 -0500 Subject: [PATCH 15/17] Clarified comment --- helpers/init-helpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helpers/init-helpers.ts b/helpers/init-helpers.ts index f0014347..7d8f7eb4 100644 --- a/helpers/init-helpers.ts +++ b/helpers/init-helpers.ts @@ -105,7 +105,7 @@ export const initReservesByHelper = async ( let stableDebtTokenImplementationAddress = ''; let variableDebtTokenImplementationAddress = ''; - // NOT WORKING ON MATIC + // NOT WORKING ON MATIC, DEPLOYING INDIVIDUAL IMPLs INSTEAD // const tx1 = await waitForTx( // await stableAndVariableDeployer.initDeployment([ZERO_ADDRESS], ["1"]) // ); From 6508aa61279668ac30db313d0bbf1b36b083a73d Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Wed, 24 Feb 2021 16:44:45 -0500 Subject: [PATCH 16/17] Fixed small error --- helpers/contracts-helpers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts index b15ce276..eb087500 100644 --- a/helpers/contracts-helpers.ts +++ b/helpers/contracts-helpers.ts @@ -167,7 +167,7 @@ export const getParamPerNetwork = (param: iParamsPerNetwork, network: eNet case eEthereumNetwork.ropsten: return ropsten; case eEthereumNetwork.main: - return mumbai; + return main; case eEthereumNetwork.tenderlyMain: return tenderlyMain; case ePolygonNetwork.matic: From 71127888a6035384cf83a6277d216423ba7485ac Mon Sep 17 00:00:00 2001 From: Zer0dot Date: Wed, 24 Feb 2021 16:49:23 -0500 Subject: [PATCH 17/17] Updated Matic deployment script --- helpers/contracts-helpers.ts | 4 +++- tasks/migrations/matic.mainnet.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts index eb087500..d7e50664 100644 --- a/helpers/contracts-helpers.ts +++ b/helpers/contracts-helpers.ts @@ -179,12 +179,14 @@ export const getParamPerNetwork = (param: iParamsPerNetwork, network: eNet } }; -export const getParamPerPool = ({ proto, amm }: iParamsPerPool, pool: AavePools) => { +export const getParamPerPool = ({ proto, amm, matic }: iParamsPerPool, pool: AavePools) => { switch (pool) { case AavePools.proto: return proto; case AavePools.amm: return amm; + case AavePools.matic: + return matic; default: return proto; } diff --git a/tasks/migrations/matic.mainnet.ts b/tasks/migrations/matic.mainnet.ts index 0c8efe3c..970fbfc9 100644 --- a/tasks/migrations/matic.mainnet.ts +++ b/tasks/migrations/matic.mainnet.ts @@ -21,7 +21,7 @@ task('matic:mainnet', 'Deploy development enviroment') await DRE.run('full:deploy-address-provider', { pool: POOL_NAME }); console.log('2. Deploy lending pool'); - await DRE.run('full:deploy-lending-pool'); + await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME}); console.log('3. Deploy oracles'); await DRE.run('full:deploy-oracles', { pool: POOL_NAME });