WIP test erroring

This commit is contained in:
David Racero 2020-10-22 17:32:50 +02:00
commit bb0df73449
11 changed files with 187 additions and 32 deletions

View File

@ -270,7 +270,7 @@ export const AaveConfig: IAaveConfiguration = {
MKR: '0x61e4CAE3DA7FD189e52a4879C7B8067D7C2Cc0FA',
LINK: '0xAD5ce863aE3E4E9394Ab43d4ba0D80f419F61789',
KNC: '0x3F80c39c0b96A0945f9F0E9f55d8A8891c5671A8',
WBTC: '0x3b92f58feD223E2cB1bCe4c286BD97e42f2A12EA',
WBTC: '0xD1B98B6607330172f1D991521145A22BCe793277',
MANA: '0x738Dc6380157429e957d223e6333Dc385c85Fec7',
ZRX: '0xD0d76886cF8D952ca26177EB7CfDf83bad08C00C',
SNX: '0x7FDb81B0b8a010dd4FFc57C3fecbf145BA8Bd947',

View File

@ -258,4 +258,11 @@ export const CommonsConfig: ICommonConfiguration = {
[eEthereumNetwork.ropsten]: '',
[eEthereumNetwork.main]: '',
},
ProxyPriceProvider: {
[eEthereumNetwork.coverage]: '',
[eEthereumNetwork.buidlerevm]: '',
[eEthereumNetwork.kovan]: '0x276C4793F2EE3D5Bf18C5b879529dD4270BA4814',
[eEthereumNetwork.ropsten]: '',
[eEthereumNetwork.main]: '',
},
};

View File

@ -121,21 +121,19 @@ interface ILendingPool {
/**
* @dev emitted when a borrower is liquidated
* @param collateral the address of the collateral being liquidated
* @param reserve the address of the reserve
* @param principal the address of the reserve
* @param user the address of the user being liquidated
* @param purchaseAmount the total amount liquidated
* @param liquidatedCollateralAmount the amount of collateral being liquidated
* @param accruedBorrowInterest the amount of interest accrued by the borrower since the last action
* @param liquidator the address of the liquidator
* @param receiveAToken true if the liquidator wants to receive aTokens, false otherwise
**/
event LiquidationCall(
address indexed collateral,
address indexed reserve,
address indexed principal,
address indexed user,
uint256 purchaseAmount,
uint256 liquidatedCollateralAmount,
uint256 accruedBorrowInterest,
address liquidator,
bool receiveAToken
);

View File

@ -27,8 +27,8 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": {
"address": "0x20e080B395341B3b617E893c281c7E999C942276",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
"address": "0xd7e3C4b2CE495066dE1923c268D68A844bD7Ae13",
"deployer": "0x6b40a028d2Ab94e5f6d3793F32D326CDf724Bb1D"
}
},
"LendingPoolAddressesProviderRegistry": {
@ -45,8 +45,8 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": {
"address": "0x00219a2958f758122106Bb8A801AFc1B70897663",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
"address": "0x83c7A0E78e8eee2108a87d7a6770f22BAcb68b5A",
"deployer": "0x6b40a028d2Ab94e5f6d3793F32D326CDf724Bb1D"
}
},
"FeeProvider": {
@ -76,7 +76,7 @@
"address": "0x65e0Cd5B8904A02f2e00BC6f58bf881998D54BDe"
},
"kovan": {
"address": "0x50C9d3aD9399c1EEf6DDeadF8e57fF69994F552e"
"address": "0x1339f3c1FfF00D0FD8946187fdC61F0ef0fFe786"
}
},
"LendingPoolDataProvider": {
@ -92,7 +92,7 @@
"address": "0x5d12dDe3286D94E0d85F9D3B01B7099cfA0aBCf1"
},
"kovan": {
"address": "0x6d1e69bB0578699dd955Eefbf23aAC65c0DA5cE7"
"address": "0xB43CCfF1148bb5ab2104E2ee68A7c30cDEBb9A9C"
}
},
"PriceOracle": {
@ -171,6 +171,10 @@
"coverage": {
"address": "0x626FdE749F9d499d3777320CAf29484B624ab84a",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": {
"address": "0xc4e3d83AEd3D3c60Cf4b238F634014cE103F6fa1",
"deployer": "0x6b40a028d2Ab94e5f6d3793F32D326CDf724Bb1D"
}
},
"LendingPoolLiquidationManager": {
@ -220,7 +224,7 @@
},
"MockFlashLoanReceiver": {
"buidlerevm": {
"address": "0x63387deC8C4a0F17Cf0C27Ea3476F03F6a45d3AE"
"address": "0x5Ea694f66BD0CBd08FC7967af01b67Dcef68cC5c"
},
"localhost": {
"address": "0x2B681757d757fbB80cc51c6094cEF5eE75bF55aA"
@ -231,7 +235,7 @@
},
"WalletBalanceProvider": {
"buidlerevm": {
"address": "0x2B681757d757fbB80cc51c6094cEF5eE75bF55aA",
"address": "0xd4e934C2749CA8C1618659D02E7B28B074bf4df7",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
@ -574,6 +578,10 @@
},
"coverage": {
"address": "0x2cfcA5785261fbC88EFFDd46fCFc04c22525F9e4"
},
"kovan": {
"address": "0xE4566ce19626826360f4faD941418e2849fC3685",
"deployer": "0x6b40a028d2Ab94e5f6d3793F32D326CDf724Bb1D"
}
},
"StableDebtToken": {
@ -588,6 +596,10 @@
"coverage": {
"address": "0xB660Fdd109a95718cB9d20E3A89EE6cE342aDcB6",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": {
"address": "0x0043967C1Cf13c4Ff3Bc38109054D5a97C147B4A",
"deployer": "0x6b40a028d2Ab94e5f6d3793F32D326CDf724Bb1D"
}
},
"VariableDebtToken": {
@ -602,6 +614,10 @@
"coverage": {
"address": "0x830bceA96E56DBC1F8578f75fBaC0AF16B32A07d",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": {
"address": "0xdF75B68c75c30D177f4Dbd47cBcb5E2E4f3cf8F9",
"deployer": "0x6b40a028d2Ab94e5f6d3793F32D326CDf724Bb1D"
}
},
"AToken": {
@ -616,11 +632,15 @@
"coverage": {
"address": "0xA0AB1cB92A4AF81f84dCd258155B5c25D247b54E",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": {
"address": "0x1A23ADa7218e0a66b7368E12E379Ea88d7a68a27",
"deployer": "0x6b40a028d2Ab94e5f6d3793F32D326CDf724Bb1D"
}
},
"MockAToken": {
"buidlerevm": {
"address": "0xBEF0d4b9c089a5883741fC14cbA352055f35DDA2",
"address": "0x63387deC8C4a0F17Cf0C27Ea3476F03F6a45d3AE",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
@ -648,7 +668,7 @@
},
"MockStableDebtToken": {
"buidlerevm": {
"address": "0xDf73fC454FA018051D4a1509e63D11530A59DE10",
"address": "0x8280D40C9E9F04229D2435EAad6e0011309ce81B",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
@ -662,7 +682,7 @@
},
"MockVariableDebtToken": {
"buidlerevm": {
"address": "0x2cfcA5785261fbC88EFFDd46fCFc04c22525F9e4",
"address": "0x2B681757d757fbB80cc51c6094cEF5eE75bF55aA",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
@ -676,7 +696,7 @@
},
"MockSwapAdapter": {
"buidlerevm": {
"address": "0x8280D40C9E9F04229D2435EAad6e0011309ce81B"
"address": "0x93bB79570dFECC052e36E25cE10793A139e75f1b"
},
"coverage": {
"address": "0xBEF0d4b9c089a5883741fC14cbA352055f35DDA2"
@ -684,5 +704,39 @@
"localhost": {
"address": "0xBEF0d4b9c089a5883741fC14cbA352055f35DDA2"
}
},
"MockFlashRepayAdapter": {
"buidlerevm": {
"address": "0xDf73fC454FA018051D4a1509e63D11530A59DE10"
}
},
"MockFlashLiquiditySwapAdapter": {
"buidlerevm": {
"address": "0x2cfcA5785261fbC88EFFDd46fCFc04c22525F9e4"
}
},
"ReserveLogic": {
"buidlerevm": {
"address": "0xFAe0fd738dAbc8a0426F47437322b6d026A9FD95",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"GenericLogic": {
"buidlerevm": {
"address": "0x6082731fdAba4761277Fb31299ebC782AD3bCf24",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"ValidationLogic": {
"buidlerevm": {
"address": "0x8456161947DFc1fC159A0B26c025cD2b4bba0c3e",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"LendingPoolCollateralManager": {
"buidlerevm": {
"address": "0xb2B548BE73010C188C083c510d255Aed74843b05",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
}
}

View File

@ -42,6 +42,9 @@ import {
WalletBalanceProviderFactory,
} from '../types';
import {withSaveAndVerify, registerContractInJsonDb, linkBytecode} from './contracts-helpers';
import {verifyContract} from './etherscan-verification';
import {LendingPool} from '../types/LendingPool';
import {Artifact} from '@nomiclabs/buidler/types';
export const deployLendingPoolAddressesProvider = async (verify?: boolean) =>
withSaveAndVerify(
@ -75,14 +78,25 @@ export const deployReserveLogicLibrary = async (verify?: boolean) =>
verify
);
export const deployGenericLogic = async (verify?: boolean) =>
withSaveAndVerify(
await new GenericLogicFactory(await getFirstSigner()).deploy(),
eContractid.GenericLogic,
[],
verify
export const deployGenericLogic = async (reserveLogic: Contract, verify?: boolean) => {
const genericLogicArtifact = await readArtifact(
BRE.config.paths.artifacts,
eContractid.GenericLogic
);
const linkedGenericLogicByteCode = linkBytecode(genericLogicArtifact, {
[eContractid.ReserveLogic]: reserveLogic.address,
});
const genericLogicFactory = await BRE.ethers.getContractFactory(
genericLogicArtifact.abi,
linkedGenericLogicByteCode
);
const genericLogic = await (await genericLogicFactory.deploy()).deployed();
return withSaveAndVerify(genericLogic, eContractid.GenericLogic, [], verify);
};
export const deployValidationLogic = async (
reserveLogic: Contract,
genericLogic: Contract,
@ -112,7 +126,7 @@ export const deployAaveLibraries = async (
verify?: boolean
): Promise<LendingPoolLibraryAddresses> => {
const reserveLogic = await deployReserveLogicLibrary(verify);
const genericLogic = await deployGenericLogic(verify);
const genericLogic = await deployGenericLogic(reserveLogic, verify);
const validationLogic = await deployValidationLogic(reserveLogic, genericLogic, verify);
// Hardcoded solidity placeholders, if any library changes path this will fail.
@ -133,7 +147,7 @@ export const deployAaveLibraries = async (
};
};
export const deployLendingPool = async (verify?: boolean) => {
export const deployLendingPoolWithFactory = async (verify?: boolean) => {
const libraries = await deployAaveLibraries(verify);
return withSaveAndVerify(
await new LendingPoolFactory(libraries, await getFirstSigner()).deploy(),
@ -143,6 +157,74 @@ export const deployLendingPool = async (verify?: boolean) => {
);
};
const deployLibrary = async (libraryId: eContractid) => {
const factory = await BRE.ethers.getContractFactory(libraryId);
const library = await factory.deploy();
await library.deployed();
return library;
};
export const linkLibrariesToArtifact = async (artifact: Artifact) => {
const reserveLogic = await deployLibrary(eContractid.ReserveLogic);
const genericLogicArtifact = await readArtifact(
BRE.config.paths.artifacts,
eContractid.GenericLogic
);
const linkedGenericLogicByteCode = linkBytecode(genericLogicArtifact, {
[eContractid.ReserveLogic]: reserveLogic.address,
});
const genericLogicFactory = await BRE.ethers.getContractFactory(
genericLogicArtifact.abi,
linkedGenericLogicByteCode
);
const genericLogic = await (await genericLogicFactory.deploy()).deployed();
const validationLogicArtifact = await readArtifact(
BRE.config.paths.artifacts,
eContractid.ValidationLogic
);
const linkedValidationLogicByteCode = linkBytecode(validationLogicArtifact, {
[eContractid.ReserveLogic]: reserveLogic.address,
[eContractid.GenericLogic]: genericLogic.address,
});
const validationLogicFactory = await BRE.ethers.getContractFactory(
validationLogicArtifact.abi,
linkedValidationLogicByteCode
);
const validationLogic = await (await validationLogicFactory.deploy()).deployed();
const linkedBytecode = linkBytecode(artifact, {
[eContractid.ReserveLogic]: reserveLogic.address,
[eContractid.GenericLogic]: genericLogic.address,
[eContractid.ValidationLogic]: validationLogic.address,
});
const factory = await BRE.ethers.getContractFactory(artifact.abi, linkedBytecode);
return factory;
};
export const deployLendingPool = async (verify?: boolean) => {
const lendingPoolArtifact = await readArtifact(
BRE.config.paths.artifacts,
eContractid.LendingPool
);
const factory = await linkLibrariesToArtifact(lendingPoolArtifact);
const lendingPool = await factory.deploy();
const instance = (await lendingPool.deployed()) as LendingPool;
if (verify) {
await verifyContract(eContractid.LendingPool, instance.address, []);
}
return instance;
};
export const deployPriceOracle = async (verify?: boolean) =>
withSaveAndVerify(
await new PriceOracleFactory(await getFirstSigner()).deploy(),
@ -180,6 +262,7 @@ export const deployChainlinkProxyPriceProvider = async (
export const deployLendingPoolCollateralManager = async (verify?: boolean) => {
const reservesLogic = await getReserveLogic();
console.log('ADDRESS RESERVELOGIC', reservesLogic.address);
const libraries = {
// See deployAaveLibraries() function
['__$d3b4366daeb9cadc7528af6145b50b2183$__']: reservesLogic.address,
@ -301,7 +384,7 @@ export const deployGenericAToken = async (
] = [poolAddress, underlyingAssetAddress, ZERO_ADDRESS, name, symbol, incentivesController];
return withSaveAndVerify(
await new ATokenFactory(await getFirstSigner()).deploy(...args),
eContractid.VariableDebtToken,
eContractid.AToken,
args,
verify
);

View File

@ -344,6 +344,7 @@ export interface ICommonConfiguration {
ReserveAssets: iParamsPerNetwork<SymbolMap<tEthereumAddress>>;
ReservesConfig: iMultiPoolsAssets<IReserveParams>;
ATokenDomainSeparator: iParamsPerNetwork<string>;
ProxyPriceProvider: iParamsPerNetwork<tEthereumAddress>;
}
export interface IAaveConfiguration extends ICommonConfiguration {

View File

@ -16,7 +16,7 @@
"aave:evm:dev:migration": "buidler aave:dev",
"aave:evm:full:migration": "buidler aave:full",
"aave:kovan:dev:migration": "npm run buidler:kovan -- aave:dev --verify",
"aave:kovan:full:migration": "npm run buidler:kovan -- aave:full --verify",
"aave:kovan:full:migration": "npm run buidler:kovan -- aave:full",
"aave:ropsten:dev:migration": "npm run buidler:ropsten -- aave:dev --verify",
"aave:ropsten:full:migration": "npm run buidler:ropsten -- aave:full --verify",
"aave:main:dev:migration": "npm run buidler:main -- aave:dev --verify",

View File

@ -37,4 +37,11 @@ task(
ProviderId
)
);
//register the proxy price provider on the addressesProvider
const proxyProvider = getParamPerNetwork(poolConfig.ProxyPriceProvider, network);
if (proxyProvider && proxyProvider !== '') {
await waitForTx(await addressesProvider.setPriceOracle(proxyProvider));
}
});

View File

@ -24,10 +24,7 @@ task('aave:full', 'Deploy development enviroment')
console.log('2. Deploy lending pool');
await localBRE.run('full:deploy-lending-pool', {verify});
console.log('3. Deploy oracles');
await localBRE.run('full:deploy-oracles', {verify, pool: POOL_NAME});
console.log('4. Initialize lending pool');
console.log('3. Initialize lending pool');
await localBRE.run('full:initialize-lending-pool', {verify, pool: POOL_NAME});
console.log('\nFinished migrations');

View File

@ -245,6 +245,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
await deployWalletBalancerProvider(addressesProvider.address);
console.log('END');
console.timeEnd('setup');
};

View File

@ -32,10 +32,17 @@ makeSuite('AToken: Permit', (testEnv: TestEnv) => {
});
it('Get aDAI for tests', async () => {
const {dai, deployer, pool} = testEnv;
const {dai, pool, deployer, addressesProvider} = testEnv;
const addre = await addressesProvider.getLendingPool();
console.log('pool', pool.address, addre);
await dai.mint(parseEther('20000'));
await dai.approve(pool.address, parseEther('20000'));
const some = await pool.getReserveData(dai.address);
const aa = await pool.getReservesList();
console.log('some', some);
console.log('aa', aa);
await pool.deposit(dai.address, parseEther('20000'), deployer.address, 0);
});