Fixed setup

This commit is contained in:
The3D 2020-06-26 14:34:44 +02:00
parent 9a92cb08f7
commit 51fee50e50
6 changed files with 144 additions and 44 deletions

View File

@ -5,6 +5,7 @@ import {ILendingPoolAddressesProvider} from "../interfaces/ILendingPoolAddresses
import {IERC20Detailed} from "../interfaces/IERC20Detailed.sol"; import {IERC20Detailed} from "../interfaces/IERC20Detailed.sol";
import {LendingPool} from "../lendingpool/LendingPool.sol"; import {LendingPool} from "../lendingpool/LendingPool.sol";
import {AToken} from "../tokenization/AToken.sol"; import {AToken} from "../tokenization/AToken.sol";
import "@nomiclabs/buidler/console.sol";
contract AaveProtocolTestHelpers { contract AaveProtocolTestHelpers {
struct TokenData { struct TokenData {
@ -20,7 +21,11 @@ contract AaveProtocolTestHelpers {
function getAllReservesTokens() external view returns(TokenData[] memory) { function getAllReservesTokens() external view returns(TokenData[] memory) {
LendingPool pool = LendingPool(payable(ADDRESSES_PROVIDER.getLendingPool())); LendingPool pool = LendingPool(payable(ADDRESSES_PROVIDER.getLendingPool()));
console.log("Getting reserves...");
address[] memory reserves = pool.getReserves(); address[] memory reserves = pool.getReserves();
console.log("Reserves retrivied");
TokenData[] memory reservesTokens = new TokenData[](reserves.length); TokenData[] memory reservesTokens = new TokenData[](reserves.length);
for (uint256 i = 0; i < reserves.length; i++) { for (uint256 i = 0; i < reserves.length; i++) {
reservesTokens[i] = TokenData({ reservesTokens[i] = TokenData({
@ -33,10 +38,15 @@ contract AaveProtocolTestHelpers {
function getAllATokens() external view returns(TokenData[] memory) { function getAllATokens() external view returns(TokenData[] memory) {
LendingPool pool = LendingPool(payable(ADDRESSES_PROVIDER.getLendingPool())); LendingPool pool = LendingPool(payable(ADDRESSES_PROVIDER.getLendingPool()));
console.log("Getting all the tokens...");
address[] memory reserves = pool.getReserves(); address[] memory reserves = pool.getReserves();
console.log("Reserves retrivied");
TokenData[] memory aTokens = new TokenData[](reserves.length); TokenData[] memory aTokens = new TokenData[](reserves.length);
for (uint256 i = 0; i < reserves.length; i++) { for (uint256 i = 0; i < reserves.length; i++) {
(,,,address aTokenAddress,,,,,) = pool.getReserveConfigurationData(reserves[i]); console.log("Getting configuration for reserve %s", i);
(,,,,address aTokenAddress,,,,) = pool.getReserveConfigurationData(reserves[i]);
aTokens[i] = TokenData({ aTokens[i] = TokenData({
symbol: AToken(aTokenAddress).symbol(), symbol: AToken(aTokenAddress).symbol(),
tokenAddress: aTokenAddress tokenAddress: aTokenAddress

51
data.txt Normal file

File diff suppressed because one or more lines are too long

View File

@ -44,36 +44,36 @@
}, },
"LendingPool": { "LendingPool": {
"buidlerevm": { "buidlerevm": {
"address": "0x820ED3d0675676203514f5fd76E5Ac40c9F0c4Bd" "address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA"
} }
}, },
"PriceOracle": { "PriceOracle": {
"buidlerevm": { "buidlerevm": {
"address": "0xe1B3b8F6b298b52bCd15357ED29e65e66a4045fF", "address": "0x8731324a6C09a1745bD15009Dc8FcceF11c05F4a",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"MockAggregator": { "MockAggregator": {
"buidlerevm": { "buidlerevm": {
"address": "0xD83D2773a7873ae2b5f8Fb92097e20a8C64F691E", "address": "0x474d9b0D5F1Bb1602711F9346743a7a7478d6f52",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"ChainlinkProxyPriceProvider": { "ChainlinkProxyPriceProvider": {
"buidlerevm": { "buidlerevm": {
"address": "0x474d9b0D5F1Bb1602711F9346743a7a7478d6f52", "address": "0xf91aC1098F3b154671Ce83290114aaE45ac0225f",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"LendingRateOracle": { "LendingRateOracle": {
"buidlerevm": { "buidlerevm": {
"address": "0xFc01AF83D78742DfD42631a352e33f8098e7274B", "address": "0xf4830d6b1D70C8595d3BD8A63f9ed9F636DB9ef2",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"DefaultReserveInterestRateStrategy": { "DefaultReserveInterestRateStrategy": {
"buidlerevm": { "buidlerevm": {
"address": "0x603A373A1571783bD82b708C20a5A4b019BAB78F", "address": "0xFf130817Aa9863B3D809A2A11617c05646245d80",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -85,35 +85,35 @@
}, },
"MockOneSplit": { "MockOneSplit": {
"buidlerevm": { "buidlerevm": {
"address": "0xd44937448A9f229bfae84e7d256810Ba4C4a93cC", "address": "0xe5a5a5b78F165C875EE2264a8743570176eA39d9",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"OneSplitAdapter": { "OneSplitAdapter": {
"buidlerevm": { "buidlerevm": {
"address": "0x70c5a4348710Fa80eE8f2bD2eD5243d1bAB90752", "address": "0x828C9C41Fae6113C1DEA9056Dcd9C85A19002d52",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"TokenDistributor": { "TokenDistributor": {
"buidlerevm": { "buidlerevm": {
"address": "0xbCf57D16d9d63aDDea3c2056A1de2A33ebD353F0" "address": "0x7d40dD74d3aE1a7e4A7dd08eaE899e85940563cd"
} }
}, },
"InitializableAdminUpgradeabilityProxy": { "InitializableAdminUpgradeabilityProxy": {
"buidlerevm": { "buidlerevm": {
"address": "0xbCf57D16d9d63aDDea3c2056A1de2A33ebD353F0", "address": "0x7d40dD74d3aE1a7e4A7dd08eaE899e85940563cd",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"MockFlashLoanReceiver": { "MockFlashLoanReceiver": {
"buidlerevm": { "buidlerevm": {
"address": "0xe5a5a5b78F165C875EE2264a8743570176eA39d9" "address": "0xB660Fdd109a95718cB9d20E3A89EE6cE342aDcB6"
} }
}, },
"WalletBalanceProvider": { "WalletBalanceProvider": {
"buidlerevm": { "buidlerevm": {
"address": "0x828C9C41Fae6113C1DEA9056Dcd9C85A19002d52", "address": "0x830bceA96E56DBC1F8578f75fBaC0AF16B32A07d",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -257,7 +257,7 @@
}, },
"AaveProtocolTestHelpers": { "AaveProtocolTestHelpers": {
"buidlerevm": { "buidlerevm": {
"address": "0xAb35dEf6f863FC1e91dE4c20A3596b388eB1CFb4" "address": "0xA0AB1cB92A4AF81f84dCd258155B5c25D247b54E"
} }
} }
} }

View File

@ -145,13 +145,12 @@ const deployLibrary = async(libraryId: eContractid) => {
return library return library
} }
export const deployLendingPool = async () => { export const linkLibrariesToArtifact = async(artifact: Artifact) => {
const coreLibrary = await deployLibrary(eContractid.CoreLibrary); const coreLibrary = await deployLibrary(eContractid.CoreLibrary);
const userLogic = await deployLibrary(eContractid.UserLogic); const userLogic = await deployLibrary(eContractid.UserLogic);
const reserveLogic = await deployLibrary(eContractid.ReserveLogic); const reserveLogic = await deployLibrary(eContractid.ReserveLogic);
console.log("Deployed user logic and reserve logic, addresses:", userLogic.address, reserveLogic.address)
const genericLogicArtifact = await readArtifact( const genericLogicArtifact = await readArtifact(
BRE.config.paths.artifacts, BRE.config.paths.artifacts,
eContractid.GenericLogic eContractid.GenericLogic
@ -168,8 +167,6 @@ export const deployLendingPool = async () => {
); );
const genericLogic = await (await genericLogicFactory.deploy()).deployed(); const genericLogic = await (await genericLogicFactory.deploy()).deployed();
console.log("Deployed generic logic, addresses:", genericLogic.address)
const validationLogicArtifact = await readArtifact( const validationLogicArtifact = await readArtifact(
BRE.config.paths.artifacts, BRE.config.paths.artifacts,
@ -189,25 +186,33 @@ export const deployLendingPool = async () => {
const validationLogic = await (await validationLogicFactory.deploy()).deployed(); const validationLogic = await (await validationLogicFactory.deploy()).deployed();
console.log("Deployed validation logic, address:", validationLogic.address)
const lendingPoolArtifact = await readArtifact( const linkedBytecode = linkBytecode(artifact, {
BRE.config.paths.artifacts,
eContractid.LendingPool
);
const linkedBytecode = linkBytecode(lendingPoolArtifact, {
[eContractid.CoreLibrary]: coreLibrary.address, [eContractid.CoreLibrary]: coreLibrary.address,
[eContractid.UserLogic]: userLogic.address, [eContractid.UserLogic]: userLogic.address,
[eContractid.ReserveLogic] : reserveLogic.address, [eContractid.ReserveLogic] : reserveLogic.address,
[eContractid.GenericLogic] : genericLogic.address, [eContractid.GenericLogic] : genericLogic.address,
[eContractid.ValidationLogic] : validationLogic.address [eContractid.ValidationLogic] : validationLogic.address
}); });
const LendingPoolFactory = await BRE.ethers.getContractFactory( const factory = await BRE.ethers.getContractFactory(
lendingPoolArtifact.abi, artifact.abi,
linkedBytecode linkedBytecode
); );
const lendingPool = await LendingPoolFactory.deploy(); return factory;
}
export const deployLendingPool = async () => {
const lendingPoolArtifact = await readArtifact(
BRE.config.paths.artifacts,
eContractid.LendingPool
);
const factory = await linkLibrariesToArtifact(lendingPoolArtifact);
const lendingPool = await factory.deploy();
return (await lendingPool.deployed()) as LendingPool; return (await lendingPool.deployed()) as LendingPool;
} }
@ -232,11 +237,19 @@ export const deployChainlinkProxyPriceProvider = async ([
export const deployLendingRateOracle = async () => export const deployLendingRateOracle = async () =>
await deployContract<LendingRateOracle>(eContractid.LendingRateOracle, []); await deployContract<LendingRateOracle>(eContractid.LendingRateOracle, []);
export const deployLendingPoolLiquidationManager = async () => export const deployLendingPoolLiquidationManager = async () => {
await deployContract<LendingPoolLiquidationManager>( const liquidationManagerArtifact = await readArtifact(
eContractid.LendingPoolLiquidationManager, BRE.config.paths.artifacts,
[] eContractid.LendingPoolLiquidationManager
); );
const factory = await linkLibrariesToArtifact(liquidationManagerArtifact);
const liquidationManager = await factory.deploy();
return (await liquidationManager.deployed()) as LendingPoolLiquidationManager;
}
export const deployTokenDistributor = async () => export const deployTokenDistributor = async () =>
await deployContract<TokenDistributor>(eContractid.TokenDistributor, []); await deployContract<TokenDistributor>(eContractid.TokenDistributor, []);
@ -289,7 +302,6 @@ export const deployMintableErc20 = async ([name, symbol, decimals]: [
]); ]);
export const deployDefaultReserveInterestRateStrategy = async ([ export const deployDefaultReserveInterestRateStrategy = async ([
reserve,
addressesProvider, addressesProvider,
baseVariableBorrowRate, baseVariableBorrowRate,
variableSlope1, variableSlope1,
@ -297,7 +309,6 @@ export const deployDefaultReserveInterestRateStrategy = async ([
stableSlope1, stableSlope1,
stableSlope2, stableSlope2,
]: [ ]: [
tEthereumAddress,
tEthereumAddress, tEthereumAddress,
string, string,
string, string,
@ -308,7 +319,6 @@ export const deployDefaultReserveInterestRateStrategy = async ([
await deployContract<DefaultReserveInterestRateStrategy>( await deployContract<DefaultReserveInterestRateStrategy>(
eContractid.DefaultReserveInterestRateStrategy, eContractid.DefaultReserveInterestRateStrategy,
[ [
reserve,
addressesProvider, addressesProvider,
baseVariableBorrowRate, baseVariableBorrowRate,
variableSlope1, variableSlope1,
@ -349,15 +359,23 @@ export const getLendingPoolConfiguratorProxy = async (
}; };
export const getLendingPool = async (address?: tEthereumAddress) => { export const getLendingPool = async (address?: tEthereumAddress) => {
return await getContract<LendingPool>(
eContractid.LendingPool, const lendingPoolArtifact = await readArtifact(
BRE.config.paths.artifacts,
eContractid.LendingPool
);
const factory = await linkLibrariesToArtifact(lendingPoolArtifact);
return <LendingPool>(await factory.attach(
address || address ||
( (
await getDb() await getDb()
.get(`${eContractid.LendingPool}.${BRE.network.name}`) .get(`${eContractid.LendingPool}.${BRE.network.name}`)
.value() .value()
).address ).address
); ));
}; };
export const getFeeProvider = async (address?: tEthereumAddress) => { export const getFeeProvider = async (address?: tEthereumAddress) => {

View File

@ -194,9 +194,14 @@ const initReserves = async (
string, string,
string string
][])[assetAddressIndex]; ][])[assetAddressIndex];
const reserveInitialized = await lendingPool.getReserveIsActive(
console.log("Getting active flag for reserve ", tokenAddress);
const {isActive: reserveInitialized} = await lendingPool.getReserveConfigurationData(
tokenAddress tokenAddress
); );
console.log("Result ",reserveInitialized);
if (reserveInitialized) { if (reserveInitialized) {
console.log( console.log(
@ -223,7 +228,6 @@ const initReserves = async (
]; ];
const rateStrategyContract = await deployDefaultReserveInterestRateStrategy( const rateStrategyContract = await deployDefaultReserveInterestRateStrategy(
[ [
tokenAddress,
lendingPoolAddressesProvider.address, lendingPoolAddressesProvider.address,
baseVariableBorrowRate, baseVariableBorrowRate,
variableRateSlope1, variableRateSlope1,
@ -233,6 +237,8 @@ const initReserves = async (
] ]
); );
console.log("Interest rate strategy deployed");
if (process.env.POOL === AavePools.secondary) { if (process.env.POOL === AavePools.secondary) {
if (assetSymbol.search("UNI") === -1) { if (assetSymbol.search("UNI") === -1) {
assetSymbol = `Uni${assetSymbol}`; assetSymbol = `Uni${assetSymbol}`;
@ -275,7 +281,7 @@ const enableReservesToBorrow = async (
string, string,
string string
][])[assetAddressIndex]; ][])[assetAddressIndex];
const borrowingAlreadyEnabled = await lendingPool.isReserveBorrowingEnabled( const {borrowingEnabled: borrowingAlreadyEnabled} = await lendingPool.getReserveConfigurationData(
tokenAddress tokenAddress
); );
@ -317,7 +323,7 @@ const enableReservesAsCollateral = async (
string, string,
string string
][])[assetAddressIndex]; ][])[assetAddressIndex];
const alreadyEnabled = await lendingPool.isReserveUsageAsCollateralEnabled( const {usageAsCollateralEnabled: alreadyEnabled} = await lendingPool.getReserveConfigurationData(
tokenAddress tokenAddress
); );
@ -406,7 +412,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
address address
); );
console.log("implementation set, address:", lendingPoolProxy) console.log("implementation set, address:", lendingPoolProxy.address)
await insertContractAddressInDb( await insertContractAddressInDb(
eContractid.LendingPool, eContractid.LendingPool,

View File

@ -75,15 +75,30 @@ export async function initializeMakeSuite() {
} }
testEnv.deployer = deployer; testEnv.deployer = deployer;
testEnv.pool = await getLendingPool(); testEnv.pool = await getLendingPool();
console.log("Pool loaded");
testEnv.configurator = await getLendingPoolConfiguratorProxy(); testEnv.configurator = await getLendingPoolConfiguratorProxy();
console.log("Configurator loaded");
testEnv.oracle = await getPriceOracle(); testEnv.oracle = await getPriceOracle();
console.log("oracle loaded");
testEnv.addressesProvider = await getLendingPoolAddressesProvider(); testEnv.addressesProvider = await getLendingPoolAddressesProvider();
console.log("addresses provider loaded");
testEnv.helpersContract = await getAaveProtocolTestHelpers(); testEnv.helpersContract = await getAaveProtocolTestHelpers();
console.log("helpers loaded");
const aDaiAddress = (await testEnv.helpersContract.getAllATokens()).find( const aDaiAddress = (await testEnv.helpersContract.getAllATokens()).find(
(aToken) => aToken.symbol === "aDAI" (aToken) => aToken.symbol === "aDAI"
)?.tokenAddress; )?.tokenAddress;
console.log("getting reserves");
const reservesTokens = await testEnv.helpersContract.getAllReservesTokens(); const reservesTokens = await testEnv.helpersContract.getAllReservesTokens();
console.log("reserve tokens loaded");
const daiAddress = reservesTokens.find(token => token.symbol === "DAI")?.tokenAddress; const daiAddress = reservesTokens.find(token => token.symbol === "DAI")?.tokenAddress;
const usdcAddress = reservesTokens.find(token => token.symbol === "USDC")?.tokenAddress; const usdcAddress = reservesTokens.find(token => token.symbol === "USDC")?.tokenAddress;
if (!aDaiAddress) { if (!aDaiAddress) {