Aggregated deployments for initialization, atokens and debtTokens

This commit is contained in:
David Racero 2020-10-23 18:38:27 +02:00
parent cbc188e62a
commit 1c7ce57b2b
11 changed files with 173 additions and 148 deletions

View File

@ -14,7 +14,7 @@ usePlugin('@nomiclabs/buidler-etherscan');
//usePlugin('buidler-gas-reporter'); //usePlugin('buidler-gas-reporter');
const SKIP_LOAD = process.env.SKIP_LOAD === 'true'; const SKIP_LOAD = process.env.SKIP_LOAD === 'true';
const DEFAULT_BLOCK_GAS_LIMIT = 10000000; const DEFAULT_BLOCK_GAS_LIMIT = 12000000;
const DEFAULT_GAS_PRICE = 10; const DEFAULT_GAS_PRICE = 10;
const HARDFORK = 'istanbul'; const HARDFORK = 'istanbul';
const INFURA_KEY = process.env.INFURA_KEY || ''; const INFURA_KEY = process.env.INFURA_KEY || '';

View File

@ -27,7 +27,7 @@ contract DeployATokensAndRates {
} }
function concat(string memory a, string memory b) internal pure returns (string memory) { function concat(string memory a, string memory b) internal pure returns (string memory) {
return string(abi.encodePacked(a, ' ', b)); return string(abi.encodePacked(a, b));
} }
function initDeployment( function initDeployment(

View File

@ -1,35 +0,0 @@
// SPDX-License-Identifier: agpl-3.0
pragma solidity ^0.6.8;
pragma experimental ABIEncoderV2;
import {LendingPoolConfigurator} from '../lendingpool/LendingPoolConfigurator.sol';
contract ReserveInitializer {
address private poolConfigurator;
constructor(address _poolConfigurator) public {
poolConfigurator = _poolConfigurator;
}
function initReserve(
address[] calldata tokens,
address[] calldata stables,
address[] calldata variables,
address[] calldata aTokens,
address[] calldata strategies,
uint8[] calldata reserveDecimals
) external {
// TODO require(check lenghts)
for (uint256 i = 0; i < tokens.length; i++) {
LendingPoolConfigurator(poolConfigurator).initReserve(
tokens[i],
aTokens[i],
stables[i],
variables[i],
reserveDecimals[i],
strategies[i]
);
}
}
}

View File

@ -1,7 +1,7 @@
{ {
"MintableERC20": { "MintableERC20": {
"buidlerevm": { "buidlerevm": {
"address": "0xB7d4f04E8dF26d2FEE35D4AeB2A63fEB49451B78", "address": "0x58F132FBB86E21545A4Bace3C19f1C05d86d7A22",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -15,7 +15,7 @@
}, },
"LendingPoolAddressesProvider": { "LendingPoolAddressesProvider": {
"buidlerevm": { "buidlerevm": {
"address": "0xC5f7aC6895DcB76877E71db756433fB0E0478FEB", "address": "0xa4bcDF64Cdd5451b6ac3743B414124A6299B65FF",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -33,7 +33,7 @@
}, },
"LendingPoolAddressesProviderRegistry": { "LendingPoolAddressesProviderRegistry": {
"buidlerevm": { "buidlerevm": {
"address": "0x4b2c297ba5be42610994974b9543D56B864CA011", "address": "0x5A0773Ff307Bf7C71a832dBB5312237fD3437f9F",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -70,7 +70,7 @@
}, },
"LendingPoolConfigurator": { "LendingPoolConfigurator": {
"buidlerevm": { "buidlerevm": {
"address": "0x891E9f1BbD041265856b486DE4F5A5c5659370b6" "address": "0x6642B57e4265BAD868C17Fc1d1F4F88DBBA04Aa8"
}, },
"localhost": { "localhost": {
"address": "0x9Ec55627757348b322c8dD0865D704649bFa0c7b" "address": "0x9Ec55627757348b322c8dD0865D704649bFa0c7b"
@ -86,7 +86,7 @@
}, },
"LendingPool": { "LendingPool": {
"buidlerevm": { "buidlerevm": {
"address": "0x08ce4E45cD12Ae467fF24A1fd563321De309B613" "address": "0xD9273d497eDBC967F39d419461CfcF382a0A822e"
}, },
"localhost": { "localhost": {
"address": "0x3EE716e38f21e5FC16BFDB773db24D63C637A5d8" "address": "0x3EE716e38f21e5FC16BFDB773db24D63C637A5d8"
@ -97,7 +97,7 @@
}, },
"PriceOracle": { "PriceOracle": {
"buidlerevm": { "buidlerevm": {
"address": "0x951d1CE3CE90D719F5BdeCBbFE6EeA9c7bff948E", "address": "0x0C6c3C47A1f650809B0D1048FDf9603e09473D7E",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -111,7 +111,7 @@
}, },
"MockAggregator": { "MockAggregator": {
"buidlerevm": { "buidlerevm": {
"address": "0xff1B1B810F5DCe853a9b1819DE220D532D1CFeF2", "address": "0xc11f8E173ee67ffA7BBdD185D2399994AAd23Ec6",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -125,7 +125,7 @@
}, },
"ChainlinkProxyPriceProvider": { "ChainlinkProxyPriceProvider": {
"buidlerevm": { "buidlerevm": {
"address": "0xf55Af78B3f3059fACF166Aa338FFe059A14e75F6", "address": "0xD662fb7FDC7526C79AA4417d2A4415416e057ec4",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -143,7 +143,7 @@
}, },
"LendingRateOracle": { "LendingRateOracle": {
"buidlerevm": { "buidlerevm": {
"address": "0xaD3AdbC18E4AD090034A6C74Eda61f4310dce313", "address": "0xEC1C93A9f6a9e18E97784c76aC52053587FcDB89",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -224,7 +224,7 @@
}, },
"MockFlashLoanReceiver": { "MockFlashLoanReceiver": {
"buidlerevm": { "buidlerevm": {
"address": "0x5Ea694f66BD0CBd08FC7967af01b67Dcef68cC5c" "address": "0xB8054085AF605D93c32E6B829d3d7eA2A8C84F9A"
}, },
"localhost": { "localhost": {
"address": "0x9c91aEaD98b1354C7B0EAfb8ff539d0796c79894" "address": "0x9c91aEaD98b1354C7B0EAfb8ff539d0796c79894"
@ -235,7 +235,7 @@
}, },
"WalletBalanceProvider": { "WalletBalanceProvider": {
"buidlerevm": { "buidlerevm": {
"address": "0x93bB79570dFECC052e36E25cE10793A139e75f1b", "address": "0xA3Ab089388B0C1BA83B3496696242FcA3F8eb9D5",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -571,7 +571,7 @@
}, },
"AaveProtocolTestHelpers": { "AaveProtocolTestHelpers": {
"buidlerevm": { "buidlerevm": {
"address": "0xa89E20284Bd638F31b0011D0fC754Fc9d2fa73e3" "address": "0x93472C0e03215F9c33DA240Eb16703C8244eAa8c"
}, },
"localhost": { "localhost": {
"address": "0x987223924D2DD6c6efB601756850f3886ECbceF6" "address": "0x987223924D2DD6c6efB601756850f3886ECbceF6"
@ -640,7 +640,7 @@
}, },
"MockAToken": { "MockAToken": {
"buidlerevm": { "buidlerevm": {
"address": "0x392E5355a0e88Bd394F717227c752670fb3a8020", "address": "0x2dC17ABe95C889aA4c9474eD45Dd454Ed1Ec1ec1",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -668,7 +668,7 @@
}, },
"MockStableDebtToken": { "MockStableDebtToken": {
"buidlerevm": { "buidlerevm": {
"address": "0x3b050AFb4ac4ACE646b31fF3639C1CD43aC31460", "address": "0x8b949D7E587518A6ad727ef30C5815De4a16A0D7",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -682,7 +682,7 @@
}, },
"MockVariableDebtToken": { "MockVariableDebtToken": {
"buidlerevm": { "buidlerevm": {
"address": "0xEBAB67ee3ef604D5c250A53b4b8fcbBC6ec3007C", "address": "0xCC5F3Be6e695bD0239dFd0efC8E9FFC6E969D29e",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -706,25 +706,25 @@
}, },
"ReserveLogic": { "ReserveLogic": {
"buidlerevm": { "buidlerevm": {
"address": "0x285671fF5C8172dE63cF5eA264B2e827aDBC6740", "address": "0xFAe0fd738dAbc8a0426F47437322b6d026A9FD95",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"GenericLogic": { "GenericLogic": {
"buidlerevm": { "buidlerevm": {
"address": "0xb840b4fe440b5E26e1840cd2D6320FAda1C0ca5d", "address": "0x6082731fdAba4761277Fb31299ebC782AD3bCf24",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"ValidationLogic": { "ValidationLogic": {
"buidlerevm": { "buidlerevm": {
"address": "0x1a432D97211e8b2CD53DF262c8Da0EfeBa6b6b3D", "address": "0x8456161947DFc1fC159A0B26c025cD2b4bba0c3e",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"LendingPoolCollateralManager": { "LendingPoolCollateralManager": {
"buidlerevm": { "buidlerevm": {
"address": "0xb2B548BE73010C188C083c510d255Aed74843b05", "address": "0xeB80313502EA077FA9B8E89b45e4a1B236cA17Ea",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
} }

View File

@ -9,10 +9,10 @@ import {
deployVariableDebtToken, deployVariableDebtToken,
deployGenericAToken, deployGenericAToken,
} from './contracts-deployments'; } from './contracts-deployments';
import {waitForTx} from './misc-utils'; import {chunk, waitForTx} from './misc-utils';
import {DeployTokens} from '../types/DeployTokens'; import {DeployTokens} from '../types/DeployTokens';
import {ZERO_ADDRESS} from './constants'; import {ZERO_ADDRESS} from './constants';
import {getFirstSigner} from './contracts-getters'; import {getFirstSigner, getLendingPoolAddressesProvider} from './contracts-getters';
import {DeployATokensAndRatesFactory} from '../types/DeployATokensAndRatesFactory'; import {DeployATokensAndRatesFactory} from '../types/DeployATokensAndRatesFactory';
import {DeployStableAndVariableTokensFactory} from '../types/DeployStableAndVariableTokensFactory'; import {DeployStableAndVariableTokensFactory} from '../types/DeployStableAndVariableTokensFactory';
import {getDefaultSettings} from 'http2'; import {getDefaultSettings} from 'http2';
@ -233,93 +233,138 @@ export const initReservesByHelper = async (
lendingPoolConfigurator: tEthereumAddress, lendingPoolConfigurator: tEthereumAddress,
reservesParams: iMultiPoolsAssets<IReserveParams>, reservesParams: iMultiPoolsAssets<IReserveParams>,
tokenAddresses: {[symbol: string]: tEthereumAddress}, tokenAddresses: {[symbol: string]: tEthereumAddress},
helpers: AaveProtocolTestHelpers helpers: AaveProtocolTestHelpers,
admin: tEthereumAddress,
incentivesController: tEthereumAddress
) => { ) => {
const stableAndVariableDeployer = await new DeployStableAndVariableTokensFactory( const stableAndVariableDeployer = await new DeployStableAndVariableTokensFactory(
await getFirstSigner() await getFirstSigner()
).deploy(lendingPoolProxy, addressesProvider); ).deploy(lendingPoolProxy, addressesProvider);
const stableTx = await waitForTx(stableAndVariableDeployer.deployTransaction); await waitForTx(stableAndVariableDeployer.deployTransaction);
console.log('GAS', stableTx.gasUsed.toString());
console.log('- Deployed StableAndVariableDeployer');
const atokenAndRatesDeployer = await new DeployATokensAndRatesFactory( const atokenAndRatesDeployer = await new DeployATokensAndRatesFactory(
await getFirstSigner() await getFirstSigner()
).deploy(lendingPoolProxy, addressesProvider, lendingPoolConfigurator); ).deploy(lendingPoolProxy, addressesProvider, lendingPoolConfigurator);
const atokenTx = await waitForTx(atokenAndRatesDeployer.deployTransaction); await waitForTx(atokenAndRatesDeployer.deployTransaction);
console.log('GAS', atokenTx.gasUsed.toString()); const addressProvider = await getLendingPoolAddressesProvider(addressesProvider);
console.log('- Deployed ATokenAndRatesDeployer');
console.log('doing calls');
for (let [assetSymbol, {reserveDecimals}] of Object.entries(reservesParams) as [
string,
IReserveParams
][]) {
const assetAddressIndex = Object.keys(tokenAddresses).findIndex(
(value) => value === assetSymbol
);
const [, tokenAddress] = (Object.entries(tokenAddresses) as [string, string][])[
assetAddressIndex
];
const {isActive: reserveInitialized} = await helpers.getReserveConfigurationData(tokenAddress); // Set aTokenAndRatesDeployer as temporal admin
await waitForTx(await addressProvider.setAaveAdmin(atokenAndRatesDeployer.address));
if (reserveInitialized) { // CHUNK CONFIGURATION
console.log(`Reserve ${assetSymbol} is already active, skipping configuration`); const tokensChunks = 3;
continue; const initChunks = 6;
}
const reserveParamIndex = Object.keys(reservesParams).findIndex( // Deploy tokens and rates in chunks
(value) => value === assetSymbol const reservesChunks = chunk(
); Object.entries(reservesParams) as [string, IReserveParams][],
const [ tokensChunks
, );
{ // Initialize variables for future reserves initialization
let deployedStableTokens: string[] = [];
let deployedVariableTokens: string[] = [];
let deployedATokens: string[] = [];
let deployedRates: string[] = [];
let reserveTokens: string[] = [];
let reserveInitDecimals: string[] = [];
console.log(
`- Token deployments in ${reservesChunks.length * 2} txs instead of ${
Object.entries(reservesParams).length * 4
} txs`
);
for (let reservesChunk of reservesChunks) {
// Prepare data
const tokens: string[] = [];
const symbols: string[] = [];
const strategyRates: string[][] = [];
const reservesDecimals: string[] = [];
for (let [assetSymbol, {reserveDecimals}] of reservesChunk) {
const assetAddressIndex = Object.keys(tokenAddresses).findIndex(
(value) => value === assetSymbol
);
const [, tokenAddress] = (Object.entries(tokenAddresses) as [string, string][])[
assetAddressIndex
];
const reserveParamIndex = Object.keys(reservesParams).findIndex(
(value) => value === assetSymbol
);
const [
,
{
baseVariableBorrowRate,
variableRateSlope1,
variableRateSlope2,
stableRateSlope1,
stableRateSlope2,
},
] = (Object.entries(reservesParams) as [string, IReserveParams][])[reserveParamIndex];
// Add to lists
tokens.push(tokenAddress);
symbols.push(assetSymbol === 'WETH' ? 'ETH' : assetSymbol);
strategyRates.push([
baseVariableBorrowRate, baseVariableBorrowRate,
variableRateSlope1, variableRateSlope1,
variableRateSlope2, variableRateSlope2,
stableRateSlope1, stableRateSlope1,
stableRateSlope2, stableRateSlope2,
}, ]);
] = (Object.entries(reservesParams) as [string, IReserveParams][])[reserveParamIndex]; reservesDecimals.push(reserveDecimals);
assetSymbol = assetSymbol === 'WETH' ? 'ETH' : assetSymbol; }
// Deploy stable and variable deployers
const tx1 = await waitForTx( const tx1 = await waitForTx(
await stableAndVariableDeployer.initDeployment([tokenAddress], [assetSymbol], ZERO_ADDRESS, { await stableAndVariableDeployer.initDeployment(tokens, symbols, incentivesController)
gasLimit: 9000000,
})
); );
console.log('call 1', tx1.gasUsed.toString());
const stableTokens: string[] = tx1.events?.map((e) => e.args?.stableToken) || [];
const variableTokens: string[] = tx1.events?.map((e) => e.args?.variableToken) || [];
// Deploy atokens and rate strategies
const tx2 = await waitForTx( const tx2 = await waitForTx(
await atokenAndRatesDeployer.initDeployment( await atokenAndRatesDeployer.initDeployment(
[tokenAddress], tokens,
[assetSymbol], symbols,
[ strategyRates,
[ incentivesController
baseVariableBorrowRate,
variableRateSlope1,
variableRateSlope2,
stableRateSlope1,
stableRateSlope2,
],
],
ZERO_ADDRESS
) )
); );
console.log(` - Deployed aToken, DebtTokens and Strategy for: ${symbols.join(', ')} `);
const stableTokens: string[] = tx1.events?.map((e) => e.args?.stableToken) || [];
const variableTokens: string[] = tx1.events?.map((e) => e.args?.variableToken) || [];
const aTokens: string[] = tx2.events?.map((e) => e.args?.aToken) || []; const aTokens: string[] = tx2.events?.map((e) => e.args?.aToken) || [];
const strategies: string[] = tx2.events?.map((e) => e.args?.strategy) || []; const strategies: string[] = tx2.events?.map((e) => e.args?.strategy) || [];
console.log(aTokens.length, strategies.length, stableTokens.length, variableTokens.length);
console.log('call 2', tx2.gasUsed.toString()); deployedStableTokens = [...deployedStableTokens, ...stableTokens];
deployedVariableTokens = [...deployedVariableTokens, ...variableTokens];
deployedATokens = [...deployedATokens, ...aTokens];
deployedRates = [...deployedRates, ...strategies];
reserveInitDecimals = [...reserveInitDecimals, ...reservesDecimals];
reserveTokens = [...reserveTokens, ...tokens];
}
// Deploy init reserves per chunks
const chunkedTokens = chunk(reserveTokens, initChunks);
const chunkedStableTokens = chunk(deployedStableTokens, initChunks);
const chunkedVariableTokens = chunk(deployedVariableTokens, initChunks);
const chunkedAtokens = chunk(deployedATokens, initChunks);
const chunkedRates = chunk(deployedRates, initChunks);
const chunkedDecimals = chunk(reserveInitDecimals, initChunks);
const chunkedSymbols = chunk(Object.keys(tokenAddresses), initChunks);
console.log(`- Reserves initialization in ${chunkedTokens.length} txs`);
for (let chunkIndex = 0; chunkIndex < chunkedDecimals.length; chunkIndex++) {
const tx3 = await waitForTx( const tx3 = await waitForTx(
await atokenAndRatesDeployer.initReserve( await atokenAndRatesDeployer.initReserve(
[tokenAddress], chunkedTokens[chunkIndex],
stableTokens, chunkedStableTokens[chunkIndex],
variableTokens, chunkedVariableTokens[chunkIndex],
aTokens, chunkedAtokens[chunkIndex],
strategies, chunkedRates[chunkIndex],
[reserveDecimals] chunkedDecimals[chunkIndex]
) )
); );
console.log('call 3', tx3.gasUsed.toString()); console.log(` - Reserve ready for: ${chunkedSymbols[chunkIndex].join(', ')}`);
} }
// Set deployer back as admin
await waitForTx(await addressProvider.setAaveAdmin(admin));
}; };

View File

@ -52,3 +52,13 @@ export const filterMapBy = (raw: {[key: string]: any}, fn: (key: string) => bool
obj[key] = raw[key]; obj[key] = raw[key];
return obj; return obj;
}, {}); }, {});
export const chunk = <T>(arr: Array<T>, chunkSize: number): Array<Array<T>> => {
return arr.reduce(
(prevVal: any, currVal: any, currIndx: number, array: Array<T>) =>
!(currIndx % chunkSize)
? prevVal.concat([array.slice(currIndx, currIndx + chunkSize)])
: prevVal,
[]
);
};

View File

@ -13,6 +13,7 @@ import {
enableReservesToBorrow, enableReservesToBorrow,
enableReservesAsCollateral, enableReservesAsCollateral,
initReserves, initReserves,
initReservesByHelper,
} from '../../helpers/init-helpers'; } from '../../helpers/init-helpers';
import {getAllTokenAddresses} from '../../helpers/mock-helpers'; import {getAllTokenAddresses} from '../../helpers/mock-helpers';
import {ZERO_ADDRESS} from '../../helpers/constants'; import {ZERO_ADDRESS} from '../../helpers/constants';
@ -44,16 +45,17 @@ task('dev:initialize-lending-pool', 'Initialize lending pool configuration.')
const reservesParams = getReservesConfigByPool(AavePools.proto); const reservesParams = getReservesConfigByPool(AavePools.proto);
await initReserves( const admin = await addressesProvider.getAaveAdmin();
await initReservesByHelper(
lendingPoolProxy.address,
addressesProvider.address,
lendingPoolConfiguratorProxy.address,
reservesParams, reservesParams,
protoPoolReservesAddresses, protoPoolReservesAddresses,
addressesProvider,
lendingPoolProxy,
testHelpers, testHelpers,
lendingPoolConfiguratorProxy, admin,
AavePools.proto, ZERO_ADDRESS
ZERO_ADDRESS,
verify
); );
await enableReservesToBorrow( await enableReservesToBorrow(
reservesParams, reservesParams,

View File

@ -11,7 +11,7 @@ import {waitForTx} from '../../helpers/misc-utils';
import { import {
enableReservesToBorrow, enableReservesToBorrow,
enableReservesAsCollateral, enableReservesAsCollateral,
initReserves, initReservesByHelper,
} from '../../helpers/init-helpers'; } from '../../helpers/init-helpers';
import {ZERO_ADDRESS} from '../../helpers/constants'; import {ZERO_ADDRESS} from '../../helpers/constants';
import {exit} from 'process'; import {exit} from 'process';
@ -27,7 +27,6 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.')
.setAction(async ({verify, pool}, localBRE) => { .setAction(async ({verify, pool}, localBRE) => {
try { try {
await localBRE.run('set-bre'); await localBRE.run('set-bre');
console.log('init');
const network = <eEthereumNetwork>localBRE.network.name; const network = <eEthereumNetwork>localBRE.network.name;
const poolConfig = loadPoolConfig(pool); const poolConfig = loadPoolConfig(pool);
const {ReserveAssets, ReservesConfig} = poolConfig as ICommonConfiguration; const {ReserveAssets, ReservesConfig} = poolConfig as ICommonConfiguration;
@ -40,16 +39,20 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.')
const testHelpers = await deployAaveProtocolTestHelpers(addressesProvider.address, verify); const testHelpers = await deployAaveProtocolTestHelpers(addressesProvider.address, verify);
await initReserves( const admin = await addressesProvider.getAaveAdmin();
if (!reserveAssets) {
throw 'Reserve assets is undefined. Check ReserveAssets configuration at config directory';
}
await initReservesByHelper(
lendingPoolProxy.address,
addressesProvider.address,
lendingPoolConfiguratorProxy.address,
ReservesConfig, ReservesConfig,
reserveAssets, reserveAssets,
addressesProvider,
lendingPoolProxy,
testHelpers, testHelpers,
lendingPoolConfiguratorProxy, admin,
AavePools.proto, ZERO_ADDRESS
ZERO_ADDRESS,
verify
); );
await enableReservesToBorrow( await enableReservesToBorrow(
ReservesConfig, ReservesConfig,

View File

@ -35,6 +35,7 @@ import {
enableReservesToBorrow, enableReservesToBorrow,
enableReservesAsCollateral, enableReservesAsCollateral,
initReserves, initReserves,
initReservesByHelper,
} from '../helpers/init-helpers'; } from '../helpers/init-helpers';
import {AaveConfig} from '../config/aave'; import {AaveConfig} from '../config/aave';
import {ZERO_ADDRESS} from '../helpers/constants'; import {ZERO_ADDRESS} from '../helpers/constants';
@ -206,16 +207,15 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
await insertContractAddressInDb(eContractid.AaveProtocolTestHelpers, testHelpers.address); await insertContractAddressInDb(eContractid.AaveProtocolTestHelpers, testHelpers.address);
console.log('Initialize configuration'); console.log('Initialize configuration');
await initReserves( await initReservesByHelper(
lendingPoolProxy.address,
addressesProvider.address,
lendingPoolConfiguratorProxy.address,
reservesParams, reservesParams,
protoPoolReservesAddresses, protoPoolReservesAddresses,
addressesProvider,
lendingPoolProxy,
testHelpers, testHelpers,
lendingPoolConfiguratorProxy, await deployer.getAddress(),
AavePools.proto, ZERO_ADDRESS
ZERO_ADDRESS,
false
); );
await enableReservesToBorrow( await enableReservesToBorrow(
reservesParams, reservesParams,

View File

@ -97,13 +97,10 @@ export async function initializeMakeSuite() {
testEnv.helpersContract = await getAaveProtocolTestHelpers(); testEnv.helpersContract = await getAaveProtocolTestHelpers();
const aDaiAddress = (await testEnv.helpersContract.getAllATokens()).find( const allTokens = await testEnv.helpersContract.getAllATokens();
(aToken) => aToken.symbol === 'aDAI' const aDaiAddress = allTokens.find((aToken) => aToken.symbol === 'aDAI')?.tokenAddress;
)?.tokenAddress;
const aEthAddress = (await testEnv.helpersContract.getAllATokens()).find( const aEthAddress = allTokens.find((aToken) => aToken.symbol === 'aETH')?.tokenAddress;
(aToken) => aToken.symbol === 'aETH'
)?.tokenAddress;
const reservesTokens = await testEnv.helpersContract.getAllReservesTokens(); const reservesTokens = await testEnv.helpersContract.getAllReservesTokens();

View File

@ -35,6 +35,7 @@ import {
import AaveConfig from '../config/aave'; import AaveConfig from '../config/aave';
import {DeployTokensFactory} from '../types'; import {DeployTokensFactory} from '../types';
import {initReservesByHelper} from '../helpers/init-helpers'; import {initReservesByHelper} from '../helpers/init-helpers';
import {ZERO_ADDRESS} from '../helpers/constants';
const MOCK_USD_PRICE_IN_WEI = AaveConfig.ProtocolGlobalParams.MockUsdPriceInWei; const MOCK_USD_PRICE_IN_WEI = AaveConfig.ProtocolGlobalParams.MockUsdPriceInWei;
const ALL_ASSETS_INITIAL_PRICES = AaveConfig.Mocks.AllAssetsInitialPrices; const ALL_ASSETS_INITIAL_PRICES = AaveConfig.Mocks.AllAssetsInitialPrices;
@ -181,7 +182,9 @@ makeSuite('Init helper test', (testEnv: TestEnv) => {
lendingPoolConfiguratorProxy.address, lendingPoolConfiguratorProxy.address,
reservesParams, reservesParams,
protoPoolReservesAddresses, protoPoolReservesAddresses,
testHelpers testHelpers,
await deployer.getAddress(),
ZERO_ADDRESS
); );
}); });
}); });