Added tokenization verifications

This commit is contained in:
David Racero 2020-11-10 14:18:48 +01:00
parent 6eb19a2d66
commit ce3db28503
6 changed files with 452 additions and 13 deletions

View File

@ -6,6 +6,7 @@ import {LendingPool} from '../lendingpool/LendingPool.sol';
import {LendingPoolAddressesProvider} from '../configuration/LendingPoolAddressesProvider.sol'; import {LendingPoolAddressesProvider} from '../configuration/LendingPoolAddressesProvider.sol';
import {LendingPoolConfigurator} from '../lendingpool/LendingPoolConfigurator.sol'; import {LendingPoolConfigurator} from '../lendingpool/LendingPoolConfigurator.sol';
import {AToken} from '../tokenization/AToken.sol'; import {AToken} from '../tokenization/AToken.sol';
import {DelegationAwareAToken} from '../tokenization/DelegationAwareAToken.sol';
import { import {
DefaultReserveInterestRateStrategy DefaultReserveInterestRateStrategy
} from '../lendingpool/DefaultReserveInterestRateStrategy.sol'; } from '../lendingpool/DefaultReserveInterestRateStrategy.sol';
@ -36,10 +37,21 @@ contract ATokensAndRatesHelper is Ownable {
) external onlyOwner { ) external onlyOwner {
require(tokens.length == symbols.length, 't Arrays not same length'); require(tokens.length == symbols.length, 't Arrays not same length');
require(rates.length == symbols.length, 'r Arrays not same length'); require(rates.length == symbols.length, 'r Arrays not same length');
for (uint256 i = 0; i < tokens.length; i++) { for (uint256 i = 0; i < tokens.length; i++) {
emit deployedContracts( address aToken;
address( if (keccak256(bytes(symbols[i])) == keccak256(bytes('UNI'))) {
aToken = address(
new DelegationAwareAToken(
LendingPool(pool),
tokens[i],
address(0),
StringLib.concat('Aave interest bearing ', symbols[i]),
StringLib.concat('a', symbols[i]),
incentivesController
)
);
} else {
aToken = address(
new AToken( new AToken(
LendingPool(pool), LendingPool(pool),
tokens[i], tokens[i],
@ -48,7 +60,10 @@ contract ATokensAndRatesHelper is Ownable {
StringLib.concat('a', symbols[i]), StringLib.concat('a', symbols[i]),
incentivesController incentivesController
) )
), );
}
emit deployedContracts(
aToken,
address( address(
new DefaultReserveInterestRateStrategy( new DefaultReserveInterestRateStrategy(
LendingPoolAddressesProvider(addressesProvider), LendingPoolAddressesProvider(addressesProvider),

View File

@ -411,7 +411,7 @@
"address": "0x93472C0e03215F9c33DA240Eb16703C8244eAa8c" "address": "0x93472C0e03215F9c33DA240Eb16703C8244eAa8c"
}, },
"kovan": { "kovan": {
"address": "0x1e20D68372F8Da94BB10aE7331eeCBf6293c3093", "address": "0x27d7b683f24855302280cEb615c7217e628A852A",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
}, },
"hardhat": { "hardhat": {
@ -602,5 +602,365 @@
"kovan": { "kovan": {
"address": "0xca67A1eAE05B38Ce57AfE463f4508Ffe0133301D" "address": "0xca67A1eAE05B38Ce57AfE463f4508Ffe0133301D"
} }
},
"stableDebtAAVE": {
"kovan": {
"address": "0x6cFE6fF6c6DA0Dd45a222978c3b6e5d715f6d93e"
}
},
"variableDebtAAVE": {
"kovan": {
"address": "0x8ff5c2a96b461d2a09D8cBa9FA4e33ddBB76D108"
}
},
"stableDebtBAT": {
"kovan": {
"address": "0xC634A578Db77b918d3300813f278c069083d2A04"
}
},
"variableDebtBAT": {
"kovan": {
"address": "0x06fb5D970337A5fb806c4bbf809000937641F153"
}
},
"stableDebtBUSD": {
"kovan": {
"address": "0x5388ac78373B8cAC36828586989a57F34Cd4c539"
}
},
"variableDebtBUSD": {
"kovan": {
"address": "0xe299F63Ef26a266DEDeb0cc4ea7E2ec54e7c8577"
}
},
"stableDebtDAI": {
"kovan": {
"address": "0x4A3FE592f8b7EBE734D8f0b8Eb8C17b309c6b031"
}
},
"variableDebtDAI": {
"kovan": {
"address": "0xC7ad3d6f83963B6242799CDD620e61F25B5001B6"
}
},
"aAAVE": {
"kovan": {
"address": "0x514F7Eefa7cA326aAaEE6AD87613f2C27e0A2711"
}
},
"strategyAAVE": {
"kovan": {
"address": "0x630163545489cE3CB86559Debb7a4504f4905ba2"
}
},
"aBAT": {
"kovan": {
"address": "0x764730c91Ac0D9777cfC26B2bF1D3e6322503867"
}
},
"strategyBAT": {
"kovan": {
"address": "0x5075aaE8c154F4B3d3806bd095E8c7bD4087e78a"
}
},
"aBUSD": {
"kovan": {
"address": "0x55716479180c1Fe2AD441E794858968acC6beAdB"
}
},
"strategyBUSD": {
"kovan": {
"address": "0x2b85a6f4E3C3a699B9584149233DDb7735D5d451"
}
},
"aDAI": {
"kovan": {
"address": "0x95D314e003D3aEbC59Fe25884A81C72562E7E630"
}
},
"strategyDAI": {
"kovan": {
"address": "0xbf761b4454f1636bF63E77a49d234Bb411979797"
}
},
"stableDebtENJ": {
"kovan": {
"address": "0xfF308EB66F2dD66945b19606b2E240836234f228"
}
},
"variableDebtENJ": {
"kovan": {
"address": "0x0e8f6A87269FEdf0f7347065483CD4F00e651a5b"
}
},
"stableDebtKNC": {
"kovan": {
"address": "0x8DFce79F6728e4B1617bA1A5B726E4d4146bB627"
}
},
"variableDebtKNC": {
"kovan": {
"address": "0x040066C1d19Ea626F214951db0F16Eea893C815E"
}
},
"stableDebtLINK": {
"kovan": {
"address": "0xE419fCF929D3F9E15055c195f92a55386F8CEB0D"
}
},
"variableDebtLINK": {
"kovan": {
"address": "0x9026CC095f011277aEFF76BF4F7Fdd6ccE86c04E"
}
},
"stableDebtMANA": {
"kovan": {
"address": "0x232F9362ff263C71798161965261134754Ce2791"
}
},
"variableDebtMANA": {
"kovan": {
"address": "0x1a9ff3fa8FFE12268389Bef6a3EAD60E5E18a7B5"
}
},
"aENJ": {
"kovan": {
"address": "0x193Cd957999ddBE6D6dF972960664897f6976Dc6"
}
},
"strategyENJ": {
"kovan": {
"address": "0x1D5644113937A3E92e5141fF35c978Dd098F3D17"
}
},
"aKNC": {
"kovan": {
"address": "0x72b899E953E0f9ADA655c909Fa5363EC43E71B72"
}
},
"strategyKNC": {
"kovan": {
"address": "0x302499C2773D70D3D94bE2679Acc85805F83129D"
}
},
"aLINK": {
"kovan": {
"address": "0x43fAbE3FB84921753dB0bCBF5DA55914D69D62FD"
}
},
"strategyLINK": {
"kovan": {
"address": "0x64d675E9c64290C0d3b5E80ABfc0D8c70d03Aa35"
}
},
"aMANA": {
"kovan": {
"address": "0x5FFf5493E4c0a1120325554A3537E9a5C0347B3e"
}
},
"strategyMANA": {
"kovan": {
"address": "0xF0EFD4B771A423b4dbf408F4be0a724E49ecd2Db"
}
},
"stableDebtMKR": {
"kovan": {
"address": "0x92528A78E3c2533b1f8e9272B6955Ac36027892a"
}
},
"variableDebtMKR": {
"kovan": {
"address": "0x4b98ef27fF61Ca44570B3710AE0114D7ca0e4cd8"
}
},
"stableDebtREN": {
"kovan": {
"address": "0x80F95C1a659DB64A0b282a60Fa02bedb3a76eAcA"
}
},
"variableDebtREN": {
"kovan": {
"address": "0x7757c7bf09Fa7F7B1c4bA41D195EC7930e7be896"
}
},
"stableDebtREP": {
"kovan": {
"address": "0x32940613eF33db42E19A936797FddB9d3Efc285f"
}
},
"variableDebtREP": {
"kovan": {
"address": "0x285bb65bC1fe6103455fb14DB96C04Ca6e0A4ceC"
}
},
"stableDebtSNX": {
"kovan": {
"address": "0xE2019f9F10D0d5448d82631126BFA94F015044BA"
}
},
"variableDebtSNX": {
"kovan": {
"address": "0x5c3f7E555dc9086C99A1f548fd90eCFdB5939296"
}
},
"aMKR": {
"kovan": {
"address": "0x723348D18f6E8fdd6F075Cd3E9063ADed173292C"
}
},
"strategyMKR": {
"kovan": {
"address": "0x7C805E7581303233645FBA6c4a6fefE448296415"
}
},
"aREN": {
"kovan": {
"address": "0x2Af6c0df39BB9A81ec7201526C0dfEa3e221c381"
}
},
"strategyREN": {
"kovan": {
"address": "0x75Fb4c8816002cA80c34241dEB7aAE738554be40"
}
},
"aREP": {
"kovan": {
"address": "0xb4AE74454bB76c1E7bB0CEB100ED2107fBba36b8"
}
},
"strategyREP": {
"kovan": {
"address": "0x8C95F49Ef82909F94cE920De5cc5917b081223F3"
}
},
"aSNX": {
"kovan": {
"address": "0x481fC92dDd4927386ACbFbDAAE4F71243B129aC8"
}
},
"strategySNX": {
"kovan": {
"address": "0x8A9C286D4Ad3569acD21d36d805BC47895a499aC"
}
},
"stableDebtSUSD": {
"kovan": {
"address": "0x23c62B9d362C8641b42477E61C54f060295eA91d"
}
},
"variableDebtSUSD": {
"kovan": {
"address": "0x75702D996A755Bb7ed5798DFfdb9CC8C4DB66d49"
}
},
"stableDebtTUSD": {
"kovan": {
"address": "0xd5ca6aeCccBFFf08BA307EFc6812E761dE925081"
}
},
"variableDebtTUSD": {
"kovan": {
"address": "0x3e4d1a670045290531B2B7fb8D8b83F43a388e53"
}
},
"stableDebtUNI": {
"kovan": {
"address": "0x6c705087c7a652d44d38dD0d94f78Ad73F639C88"
}
},
"variableDebtUNI": {
"kovan": {
"address": "0xf4379e2B872D66354bC26b45e36D3b6F88DD3248"
}
},
"stableDebtUSDC": {
"kovan": {
"address": "0xE831BF5E1Fb9235776B448E03dAb5871B5234E93"
}
},
"variableDebtUSDC": {
"kovan": {
"address": "0xE74249cFDAdc21e5d7104DfaD8D5c7d1CB80b10a"
}
},
"aSUSD": {
"kovan": {
"address": "0xEE5Ab1E35Eb00a0288A259675Ed9C3EF766c1feC"
}
},
"strategySUSD": {
"kovan": {
"address": "0x7864220AAaA91417B2c5bF3acEd8c7525D6549d4"
}
},
"aTUSD": {
"kovan": {
"address": "0x2e93685ca52F996330B3d4C1686118C40A8fe395"
}
},
"strategyTUSD": {
"kovan": {
"address": "0xF88720ea7f42ce1F8C5e73FfE7eee446279b9Ce8"
}
},
"aUNI": {
"kovan": {
"address": "0x2052e836F0fB11556bDb42Cb18b6D37B4bbc7C9a"
}
},
"strategyUNI": {
"kovan": {
"address": "0x4ef0e554181062308A3E0Ae360C1AdE04DcCa4dD"
}
},
"aUSDC": {
"kovan": {
"address": "0x64ea2A40805812f9f7E512DAe7Ef56E0C73F68EF"
}
},
"strategyUSDC": {
"kovan": {
"address": "0x846DfbAFAE686fe3490Fd2FECCEA563536094178"
}
},
"stableDebtUSDT": {
"kovan": {
"address": "0x3cb517109d68514D9B8Ef7223D62cA5018c518F4"
}
},
"variableDebtUSDT": {
"kovan": {
"address": "0x8fc8A6362b9c7132857284072B71cd5fbde9c690"
}
},
"stableDebtWBTC": {
"kovan": {
"address": "0x2Da22F17A6C75124ad10d6e311d23dd76bfc1025"
}
},
"variableDebtWBTC": {
"kovan": {
"address": "0xA1b3Dd550C33c33Cd3aAe3429f5c7F7a959df8ab"
}
},
"stableDebtWETH": {
"kovan": {
"address": "0x0BCBB0BE9192AFace3a5C668686bD31Ef6f84dFe"
}
},
"variableDebtWETH": {
"kovan": {
"address": "0x097bDAc44BfFeA314590383F67D2046461a14Ac0"
}
},
"stableDebtYFI": {
"kovan": {
"address": "0xad470b75F1430faF195c3059EC7A4bb23D279C05"
}
},
"variableDebtYFI": {
"kovan": {
"address": "0x77f8AcD9E8CdDEB8d885E657C003404cc8C1a6B4"
}
} }
} }

View File

@ -320,3 +320,6 @@ export const getLendingPoolCollateralManager = async (address?: tEthereumAddress
.address, .address,
await getFirstSigner() await getFirstSigner()
); );
export const getAddressById = async (id: string) =>
(await getDb().get(`${id}.${DRE.network.name}`).value()).address;

View File

@ -49,6 +49,13 @@ export const insertContractAddressInDb = async (id: eContractid, address: tEther
}) })
.write(); .write();
export const rawInsertContractAddressInDb = async (id: string, address: tEthereumAddress) =>
await getDb()
.set(`${id}.${DRE.network.name}`, {
address,
})
.write();
export const getEthersSigners = async (): Promise<Signer[]> => export const getEthersSigners = async (): Promise<Signer[]> =>
await Promise.all(await DRE.ethers.getSigners()); await Promise.all(await DRE.ethers.getSigners());

View File

@ -1,4 +1,4 @@
import {iMultiPoolsAssets, IReserveParams, tEthereumAddress} from './types'; import {eContractid, iMultiPoolsAssets, IReserveParams, tEthereumAddress} from './types';
import {LendingPoolConfigurator} from '../types/LendingPoolConfigurator'; import {LendingPoolConfigurator} from '../types/LendingPoolConfigurator';
import {AaveProtocolTestHelpers} from '../types/AaveProtocolTestHelpers'; import {AaveProtocolTestHelpers} from '../types/AaveProtocolTestHelpers';
import { import {
@ -11,6 +11,7 @@ import {
getLendingPoolAddressesProvider, getLendingPoolAddressesProvider,
getStableAndVariableTokensHelper, getStableAndVariableTokensHelper,
} from './contracts-getters'; } from './contracts-getters';
import {insertContractAddressInDb, rawInsertContractAddressInDb} from './contracts-helpers';
export const initReservesByHelper = async ( export const initReservesByHelper = async (
reservesParams: iMultiPoolsAssets<IReserveParams>, reservesParams: iMultiPoolsAssets<IReserveParams>,
@ -89,12 +90,15 @@ export const initReservesByHelper = async (
reservesDecimals.push(reserveDecimals); reservesDecimals.push(reserveDecimals);
} }
// Deploy stable and variable deployers // Deploy stable and variable deployers and save implementations
const tx1 = await waitForTx( const tx1 = await waitForTx(
await stableAndVariableDeployer.initDeployment(tokens, symbols, incentivesController) await stableAndVariableDeployer.initDeployment(tokens, symbols, incentivesController)
); );
tx1.events?.forEach((event, index) => {
// Deploy atokens and rate strategies rawInsertContractAddressInDb(`stableDebt${symbols[index]}`, event?.args?.stableToken);
rawInsertContractAddressInDb(`variableDebt${symbols[index]}`, event?.args?.variableToken);
});
// Deploy atokens and rate strategies and save implementations
const tx2 = await waitForTx( const tx2 = await waitForTx(
await atokenAndRatesDeployer.initDeployment( await atokenAndRatesDeployer.initDeployment(
tokens, tokens,
@ -103,6 +107,12 @@ export const initReservesByHelper = async (
incentivesController incentivesController
) )
); );
tx2.events?.forEach((event, index) => {
rawInsertContractAddressInDb(`a${symbols[index]}`, event?.args?.aToken);
rawInsertContractAddressInDb(`strategy${symbols[index]}`, event?.args?.strategy);
});
console.log(tx2.events);
console.log(` - Deployed aToken, DebtTokens and Strategy for: ${symbols.join(', ')} `); console.log(` - Deployed aToken, DebtTokens and Strategy for: ${symbols.join(', ')} `);
const stableTokens: string[] = tx1.events?.map((e) => e.args?.stableToken) || []; const stableTokens: string[] = tx1.events?.map((e) => e.args?.stableToken) || [];
const variableTokens: string[] = tx1.events?.map((e) => e.args?.variableToken) || []; const variableTokens: string[] = tx1.events?.map((e) => e.args?.variableToken) || [];

View File

@ -1,7 +1,10 @@
import {zeroAddress} from 'ethereumjs-util';
import {task} from 'hardhat/config'; import {task} from 'hardhat/config';
import {loadPoolConfig, ConfigNames, getWethAddress} from '../../helpers/configuration'; import {loadPoolConfig, ConfigNames, getWethAddress} from '../../helpers/configuration';
import {ZERO_ADDRESS} from '../../helpers/constants';
import { import {
getAaveProtocolTestHelpers, getAaveProtocolTestHelpers,
getAddressById,
getLendingPool, getLendingPool,
getLendingPoolAddressesProvider, getLendingPoolAddressesProvider,
getLendingPoolAddressesProviderRegistry, getLendingPoolAddressesProviderRegistry,
@ -91,17 +94,17 @@ task('full:verify', 'Deploy oracles for dev enviroment')
console.log('\n- Verifying Lending Pool Collateral Manager Proxy...\n'); console.log('\n- Verifying Lending Pool Collateral Manager Proxy...\n');
await verifyContract(lendingPoolCollateralManager.address, []); await verifyContract(lendingPoolCollateralManager.address, []);
// Stable token // Tokens verification
const DAI = getParamPerNetwork(ReserveAssets, network).DAI; const DAI = getParamPerNetwork(ReserveAssets, network).DAI;
const USDC = getParamPerNetwork(ReserveAssets, network).USDC; const stableDebtDai = await getAddressById('stableDebtDAI');
const variableDebtDai = await getAddressById('variableDebtDAI');
const aDAI = await getAddressById('aDAI');
const { const {
stableDebtTokenAddress, stableDebtTokenAddress,
variableDebtTokenAddress, variableDebtTokenAddress,
aTokenAddress, aTokenAddress,
interestRateStrategyAddress, interestRateStrategyAddress,
} = await lendingPoolProxy.getReserveData(DAI); } = await lendingPoolProxy.getReserveData(DAI);
const {stableDebtTokenAddress: usdStable} = await lendingPoolProxy.getReserveData(USDC);
const { const {
baseVariableBorrowRate, baseVariableBorrowRate,
variableRateSlope1, variableRateSlope1,
@ -132,4 +135,45 @@ task('full:verify', 'Deploy oracles for dev enviroment')
stableRateSlope1, stableRateSlope1,
stableRateSlope2, stableRateSlope2,
]); ]);
// aToken
console.log('\n- Verifying aToken...\n');
await verifyContract(aDAI, [
lendingPoolProxy.address,
DAI,
ZERO_ADDRESS,
'Aave interest bearing DAI',
'aDAI',
ZERO_ADDRESS,
]);
// stableDebtToken
console.log('\n- Verifying StableDebtToken...\n');
await verifyContract(stableDebtDai, [
lendingPoolProxy.address,
DAI,
'Aave stable debt bearing DAI',
'stableDebtDAI',
ZERO_ADDRESS,
]);
// variableDebtToken
console.log('\n- Verifying VariableDebtToken...\n');
await verifyContract(variableDebtDai, [
lendingPoolProxy.address,
DAI,
'Aave variable debt bearing DAI',
'variableDebtDAI',
ZERO_ADDRESS,
]);
// DelegatedAwareAToken
console.log('\n- Verifying DelegatedAwareAToken...\n');
const UNI = getParamPerNetwork(ReserveAssets, network).UNI;
const aUNI = await getAddressById('aUNI');
await verifyContract(aUNI, [
lendingPoolProxy.address,
UNI,
ZERO_ADDRESS,
'Aave interest bearing UNI',
'aUNI',
ZERO_ADDRESS,
]);
}); });