Optimized aToken - turned pool and underlying asset address into immutables

This commit is contained in:
emilio 2020-08-08 19:21:23 +02:00
parent 50bb9d39b0
commit 49bca9febb
17 changed files with 149 additions and 251 deletions

View File

@ -166,35 +166,13 @@ contract LendingPoolConfigurator is VersionedInitializable {
/** /**
* @dev initializes a reserve * @dev initializes a reserve
* @param _reserve the address of the reserve to be initialized * @param _reserve the address of the reserve to be initialized
* @param _aTokenInstance the name of the aToken contract
* @param _stableDebtTokenAddress the address of the stable debt token contract
* @param _variableDebtTokenAddress the address of the variable debt token contract
* @param _underlyingAssetDecimals the decimals of the reserve underlying asset * @param _underlyingAssetDecimals the decimals of the reserve underlying asset
* @param _interestRateStrategyAddress the address of the interest rate strategy contract for this reserve * @param _interestRateStrategyAddress the address of the interest rate strategy contract for this reserve
**/ **/
function initReserve( function initReserve(
address _reserve,
uint8 _underlyingAssetDecimals,
address _aTokenInstance,
address _interestRateStrategyAddress,
address _stableDebtTokenAddress,
address _variableDebtTokenAddress
) external onlyLendingPoolManager {
initReserveWithData(
_reserve,
_aTokenInstance,
_stableDebtTokenAddress,
_variableDebtTokenAddress,
_underlyingAssetDecimals,
_interestRateStrategyAddress
);
}
/**
* @dev initializes a reserve using aTokenData provided externally (useful if the underlying ERC20 contract doesn't expose name or decimals)
* @param _reserve the address of the reserve to be initialized
* @param _aTokenInstance the name of the aToken contract
* @param _underlyingAssetDecimals the decimals of the reserve underlying asset
* @param _interestRateStrategyAddress the address of the interest rate strategy contract for this reserve
**/
function initReserveWithData(
address _reserve, address _reserve,
address _aTokenInstance, address _aTokenInstance,
address _stableDebtTokenAddress, address _stableDebtTokenAddress,
@ -206,9 +184,7 @@ contract LendingPoolConfigurator is VersionedInitializable {
InitializableAdminUpgradeabilityProxy aTokenProxy = new InitializableAdminUpgradeabilityProxy(); InitializableAdminUpgradeabilityProxy aTokenProxy = new InitializableAdminUpgradeabilityProxy();
bytes memory params = abi.encodeWithSignature( bytes memory params = abi.encodeWithSignature(
'initialize(address,address,uint8,string,string)', 'initialize(uint8,string,string)',
address(poolAddressesProvider),
_reserve,
_underlyingAssetDecimals, _underlyingAssetDecimals,
IERC20Detailed(_aTokenInstance).name(), IERC20Detailed(_aTokenInstance).name(),
IERC20Detailed(_aTokenInstance).symbol() IERC20Detailed(_aTokenInstance).symbol()

View File

@ -2,7 +2,6 @@
pragma solidity ^0.6.8; pragma solidity ^0.6.8;
import {ERC20} from './ERC20.sol'; import {ERC20} from './ERC20.sol';
import {LendingPoolAddressesProvider} from '../configuration/LendingPoolAddressesProvider.sol';
import {LendingPool} from '../lendingpool/LendingPool.sol'; import {LendingPool} from '../lendingpool/LendingPool.sol';
import {WadRayMath} from '../libraries/WadRayMath.sol'; import {WadRayMath} from '../libraries/WadRayMath.sol';
import {UniversalERC20} from '../libraries/UniversalERC20.sol'; import {UniversalERC20} from '../libraries/UniversalERC20.sol';
@ -121,15 +120,14 @@ contract AToken is VersionedInitializable, ERC20 {
event InterestRedirectionAllowanceChanged(address indexed _from, address indexed _to); event InterestRedirectionAllowanceChanged(address indexed _from, address indexed _to);
address public underlyingAssetAddress; address public immutable underlyingAssetAddress;
mapping(address => uint256) private userIndexes; mapping(address => uint256) private userIndexes;
mapping(address => address) private interestRedirectionAddresses; mapping(address => address) private interestRedirectionAddresses;
mapping(address => uint256) private redirectedBalances; mapping(address => uint256) private redirectedBalances;
mapping(address => address) private interestRedirectionAllowances; mapping(address => address) private interestRedirectionAllowances;
LendingPoolAddressesProvider private addressesProvider; LendingPool private immutable pool;
LendingPool private pool;
uint256 public constant ATOKEN_REVISION = 0x1; uint256 public constant ATOKEN_REVISION = 0x1;
@ -143,18 +141,21 @@ contract AToken is VersionedInitializable, ERC20 {
_; _;
} }
constructor(string memory _tokenName, string memory _tokenSymbol) constructor(
public LendingPool _pool,
ERC20(_tokenName, _tokenSymbol) address _underlyingAssetAddress,
{} string memory _tokenName,
string memory _tokenSymbol
) public ERC20(_tokenName, _tokenSymbol) {
pool = _pool;
underlyingAssetAddress = _underlyingAssetAddress;
}
function getRevision() internal override pure returns (uint256) { function getRevision() internal override pure returns (uint256) {
return ATOKEN_REVISION; return ATOKEN_REVISION;
} }
function initialize( function initialize(
LendingPoolAddressesProvider _addressesProvider,
address _underlyingAsset,
uint8 _underlyingAssetDecimals, uint8 _underlyingAssetDecimals,
string calldata _tokenName, string calldata _tokenName,
string calldata _tokenSymbol string calldata _tokenSymbol
@ -162,9 +163,6 @@ contract AToken is VersionedInitializable, ERC20 {
_name = _tokenName; _name = _tokenName;
_symbol = _tokenSymbol; _symbol = _tokenSymbol;
_setupDecimals(_underlyingAssetDecimals); _setupDecimals(_underlyingAssetDecimals);
addressesProvider = _addressesProvider;
pool = LendingPool(payable(addressesProvider.getLendingPool()));
underlyingAssetAddress = _underlyingAsset;
} }
/** /**
@ -454,16 +452,22 @@ contract AToken is VersionedInitializable, ERC20 {
uint256 uint256
) )
{ {
uint256 previousPrincipalBalance = super.balanceOf(_user); uint256 currBalance = balanceOf(_user);
//calculate the accrued interest since the last accumulation uint256 balanceIncrease = 0;
uint256 balanceIncrease = balanceOf(_user).sub(previousPrincipalBalance); uint256 previousBalance = 0;
//mints an amount of tokens equivalent to the amount accumulated
_mint(_user, balanceIncrease); if (currBalance != 0) {
previousBalance = super.balanceOf(_user);
//calculate the accrued interest since the last accumulation
balanceIncrease = currBalance.sub(previousBalance);
//mints an amount of tokens equivalent to the amount accumulated
_mint(_user, balanceIncrease);
}
//updates the user index //updates the user index
uint256 index = userIndexes[_user] = pool.getReserveNormalizedIncome(underlyingAssetAddress); uint256 index = userIndexes[_user] = pool.getReserveNormalizedIncome(underlyingAssetAddress);
return ( return (
previousPrincipalBalance, previousBalance,
previousPrincipalBalance.add(balanceIncrease), currBalance,
balanceIncrease, balanceIncrease,
index index
); );

View File

@ -5,7 +5,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x7AC94fC704557bFBB6E743c797C45b3384b95bB6", "address": "0x147A4B84ff4AB1ABb753da1DC86b84D90899A021",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -15,7 +15,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x9e3C887092123acf59a1819e78a95B37e46BC886", "address": "0x3672a553BDF3f9c335104943B1Ab3C59a3EF7050",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -25,7 +25,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0xe9ECaCA2FAe7ecCB11242B393E545F293E33096f", "address": "0x11df1AF606b85226Ab9a8B1FDa90395298e7494F",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -34,7 +34,7 @@
"address": "0x852e3718A320aD93Ad8692E8D663d247e4c1b400" "address": "0x852e3718A320aD93Ad8692E8D663d247e4c1b400"
}, },
"localhost": { "localhost": {
"address": "0xFC16126DBD017331464103385809E4113A61Fe3A" "address": "0x680e96F1C955007F4e03eF95e3842086f0cd7516"
} }
}, },
"LendingPoolParametersProvider": { "LendingPoolParametersProvider": {
@ -52,7 +52,7 @@
"address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA" "address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA"
}, },
"localhost": { "localhost": {
"address": "0xC6627778273999AeF86ab786d3f6088e9C60F535" "address": "0x18B81F8cb5D303D08338134B677e70d6bc58AEaB"
} }
}, },
"LendingPoolDataProvider": { "LendingPoolDataProvider": {
@ -65,7 +65,7 @@
"address": "0x2C4603396dE2F08642354A3A102760827FfFe113" "address": "0x2C4603396dE2F08642354A3A102760827FfFe113"
}, },
"localhost": { "localhost": {
"address": "0x6Ad44DDbF6564F0abc078340e11100d44406dD12" "address": "0x071720423B44c851112D8F867df5ed08339A738c"
} }
}, },
"PriceOracle": { "PriceOracle": {
@ -74,7 +74,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x372AED51F78c3CaB8b632986b689888caf25Ffa5", "address": "0x273D60904A8DBa3Ae6B20505c59902644124fF0E",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -84,7 +84,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0xea0ddFACb2c3392b8DCD3B827534496b585aAcc7", "address": "0x95e262CAb9d868799F12C2D4030483fA54415a3d",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -94,7 +94,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0xD859214080050ddC8745c2A6dF41439Bb851D5Bc", "address": "0x292eb99ddca578F7c9Db6719B44B1a5721387Ad6",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -104,17 +104,17 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x4a8527a3657a358B956571EEf857Fe5A8567A378", "address": "0x5eD7553Dc8a0D541130020f9965Ea951cAC1b573",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"DefaultReserveInterestRateStrategy": { "DefaultReserveInterestRateStrategy": {
"buidlerevm": { "buidlerevm": {
"address": "0x63b9792E7A95e3aa037255E8cAa0Dfd76f7383e7", "address": "0x09d728F76D543DB1925f7d1Fd8823e4e82700F99",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x52EF9F7d7dc2EFF6D691080204Adae9002b9AE67", "address": "0x0983e14968474E44aE2Db3814DFd6c41688DDA12",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -146,37 +146,37 @@
}, },
"TokenDistributor": { "TokenDistributor": {
"buidlerevm": { "buidlerevm": {
"address": "0x1bb3d8FA7bDa74Af0D64d348a2545E7570863fA8" "address": "0x03A6802eF9060a8E1f0e56Bafc9C9AB1A26a1f06"
}, },
"localhost": { "localhost": {
"address": "0xf2923EBa2C4AF250D93e8201Bc20a0096B3A8f89" "address": "0xB220Bf2c59d990FBC0aE67F3a2723f5b5a713202"
} }
}, },
"InitializableAdminUpgradeabilityProxy": { "InitializableAdminUpgradeabilityProxy": {
"buidlerevm": { "buidlerevm": {
"address": "0x1bb3d8FA7bDa74Af0D64d348a2545E7570863fA8", "address": "0x03A6802eF9060a8E1f0e56Bafc9C9AB1A26a1f06",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0xf2923EBa2C4AF250D93e8201Bc20a0096B3A8f89", "address": "0xB220Bf2c59d990FBC0aE67F3a2723f5b5a713202",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"MockFlashLoanReceiver": { "MockFlashLoanReceiver": {
"buidlerevm": { "buidlerevm": {
"address": "0xC5f7aC6895DcB76877E71db756433fB0E0478FEB" "address": "0x9D37fB22EA7d655f12E68DABBf6B6585A00774C3"
}, },
"localhost": { "localhost": {
"address": "0x9D72c382e918491A463157Ea3e7633FE0F26F83d" "address": "0xc486732FA6A9e7aFBc13D2226845DC37C5ec0476"
} }
}, },
"WalletBalanceProvider": { "WalletBalanceProvider": {
"buidlerevm": { "buidlerevm": {
"address": "0x51fa472EB89c046484B037B6125CF843C9d41b44", "address": "0x2005823e074313cd644035557bF4FFa0ca0Bddff",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0xF1BbafE2063F81038079cCdC2E8e5100693B109b", "address": "0x263Db66558DDDaD8C2B0e01fd291F227a3Fe212b",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -186,7 +186,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x07FcFF7B7953ff64969B3c4C8E7c386fC7Efaa55", "address": "0x3bAF7C82FcD0AA4E0eB9eB84900805F97CdB3e02",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -196,7 +196,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x921d5f671e5892e43a292Fa1A5BCA3B4F6E62aE9", "address": "0x0158B479b096452e929efdce37d9d36a1703E092",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -206,7 +206,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x30d4f0D334822B2887C280A9540959e1dBdD340c", "address": "0x08054EdDc690165Ea3C83DB71c3be1f4287B66cE",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -216,7 +216,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x62b9F2345e060F6B81bA677Eb1cCC39Ec47d162f", "address": "0xEaC39f548f170681799f52201636f98241506b25",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -226,7 +226,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x18287eAe938cf3C2024A460C4759E9E081729FB2", "address": "0x690f32e5CB1A8613f19b0eA886Dc1b861fc46581",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -236,7 +236,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x6C12CB1315d28904AE67aaf4d21F1247e0Caf1E7", "address": "0xCF6566a2CDe18a7BA1852A24E20906804D6455F6",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -246,7 +246,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0xf400aDA5C432462a380ae49ee9A84FE3F21B188d", "address": "0x874C1B4201E6D97e6A5E4410ca7dCB8bDFE3d257",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -256,7 +256,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x1e3b37AA176ec7d5ae1A36e093A9f849742563F4", "address": "0x7E0F9675f10a9725245858c098d30cB763A2a040",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -266,7 +266,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0xfDdff7952ab54f34FBE3E421b4DB1E8B0cf673Df", "address": "0x0Bd4069eF735Db440F4D1D4B24c001D7B417037E",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -276,7 +276,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x378a425415BC1099820005E93448D877A5e02793", "address": "0xA79F0417aA29836bBBa7D4ee06D7BaBc4930BC4f",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -286,7 +286,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x2361fAEcc05E4e50D85c22E253bafD6B62f91F7A", "address": "0x5559372F41261bdBf6E9067796a427D2D514bf85",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -296,7 +296,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x1Bf05105664fA2eA4af77E88e637189d76e6283f", "address": "0x227B215F961B75be343fE751494e300c6a300d53",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -306,7 +306,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x529D91657646F22e348c1B9870d0C0D88ED1151A", "address": "0x38B2C97074727B078241Dc72d57DE34dF8ECfC9C",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -316,7 +316,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x21a26892Ad0ee4b429BB768BaAF4A7fB623d91C7", "address": "0x20e04C71b81a2C818a1a62EefBD94bbC9B302E29",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -326,7 +326,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x269615E7bA0C64666F8d7586dE868aD55EDD8577", "address": "0x4e8eDb229774D6d975689F7F910C889cb3Ca9c39",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -336,7 +336,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0xc9b9B169eA13aB77079F62c5D2f038f50746A4cD", "address": "0xBEd64c6Ca683EF92595Bf32C37f7f7B23cC8B417",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -346,7 +346,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x2102f3e30ab514e35561C9499f49c3079957f407", "address": "0x8d274866817928093002cc52aBc48c6EAb3B5Aea",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -356,7 +356,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x87985DF0bf4c392F4114554fcCfC9Ef713463965", "address": "0x10bee3F9993F918Da27360D32C552E327FC3C5E0",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -366,7 +366,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0xf20d0172C4F801762a1Fed1F969fF143BAf6740A", "address": "0x1581aD6aaDCd767B447881E14021a7b764C67fE4",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -376,7 +376,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x9707728C9D0C48a83fDA8eEaF39b104EDcFC4f4A", "address": "0x72579C72d3Aaa35f3DBdbDd35573daDc5f77666b",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -386,7 +386,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x078522E6413f005DA503EA2c72e161C54D27a5ec", "address": "0x9F48a96f72043aE76CD0f9b035E38215396eFb5B",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -396,7 +396,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0xFF8862c67087C7474e44693a017411E1783A6b50", "address": "0xb9781A7f001aa3e2Bb056B79a3bDbeEf2BA0C344",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -406,35 +406,45 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x7AC94fC704557bFBB6E743c797C45b3384b95bB6", "address": "0x147A4B84ff4AB1ABb753da1DC86b84D90899A021",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"AaveProtocolTestHelpers": { "AaveProtocolTestHelpers": {
"buidlerevm": { "buidlerevm": {
"address": "0x4b2c297ba5be42610994974b9543D56B864CA011" "address": "0x850Fae11E1313e6C23Db7c2410Ec0985d9Ea325A"
}, },
"localhost": { "localhost": {
"address": "0x49CC1e6749f45e3BaB945B96c0d6723a606BDcDa" "address": "0x3717c045414269985A69b5eF256bB87C77ef6C6e"
} }
}, },
"StableDebtToken": { "StableDebtToken": {
"buidlerevm": { "buidlerevm": {
"address": "0xc783bfC59158E888dA3E9c7768aaDC7a58ee7809", "address": "0xb2B548BE73010C188C083c510d255Aed74843b05",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x34dB38AC79A5e23F6Ff6711098979Ca3159b80d7", "address": "0x58bDC18EC8Aba196F01e8488e7A87F1A5128D4B1",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"VariableDebtToken": { "VariableDebtToken": {
"buidlerevm": { "buidlerevm": {
"address": "0xBdFE372Bb5a0db801A1a17796EC5cfF2F30A714C", "address": "0x5Ea694f66BD0CBd08FC7967af01b67Dcef68cC5c",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x7BCb706a6C9cA7F9e51199d3d87A6A92b9cc05b4", "address": "0xF835f4edBa9d08FE5E49923b8a86a7C08FB5978C",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"AToken": {
"localhost": {
"address": "0x96AFa17ef7cf813BaD59f395830bE4EaB2e64BF4",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"buidlerevm": {
"address": "0xd4e934C2749CA8C1618659D02E7B28B074bf4df7",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
} }

View File

@ -283,10 +283,12 @@ export const deployVariableDebtToken = async ([
}; };
export const deployGenericAToken = async ([ export const deployGenericAToken = async ([
poolAddress,
underlyingAssetAddress,
name, name,
symbol symbol
]: [string, string]) => { ]: [ tEthereumAddress, tEthereumAddress, string, string]) => {
const token = await deployContract<AToken>(eContractid.AToken, [name, symbol]); const token = await deployContract<AToken>(eContractid.AToken, [poolAddress, underlyingAssetAddress, name, symbol]);
return token; return token;
}; };

View File

@ -241,6 +241,8 @@ const initReserves = async (
]); ]);
const aToken = await deployGenericAToken([ const aToken = await deployGenericAToken([
lendingPool.address,
tokenAddress,
`Aave interest bearing ${assetSymbol}`, `Aave interest bearing ${assetSymbol}`,
`a${assetSymbol}` `a${assetSymbol}`
]); ]);
@ -254,7 +256,7 @@ const initReserves = async (
} }
} }
await lendingPoolConfigurator.initReserveWithData( await lendingPoolConfigurator.initReserve(
tokenAddress, tokenAddress,
aToken.address, aToken.address,
stableDebtToken.address, stableDebtToken.address,

18
types/AToken.d.ts vendored
View File

@ -57,13 +57,11 @@ interface ATokenInterface extends Interface {
}>; }>;
initialize: TypedFunctionDescription<{ initialize: TypedFunctionDescription<{
encode([ encode([_underlyingAssetDecimals, _tokenName, _tokenSymbol]: [
_addressesProvider, BigNumberish,
_underlyingAsset, string,
_underlyingAssetDecimals, string
_tokenName, ]): string;
_tokenSymbol
]: [string, string, BigNumberish, string, string]): string;
}>; }>;
isTransferAllowed: TypedFunctionDescription<{ isTransferAllowed: TypedFunctionDescription<{
@ -271,8 +269,6 @@ export class AToken extends Contract {
): Promise<ContractTransaction>; ): Promise<ContractTransaction>;
initialize( initialize(
_addressesProvider: string,
_underlyingAsset: string,
_underlyingAssetDecimals: BigNumberish, _underlyingAssetDecimals: BigNumberish,
_tokenName: string, _tokenName: string,
_tokenSymbol: string, _tokenSymbol: string,
@ -386,8 +382,6 @@ export class AToken extends Contract {
): Promise<ContractTransaction>; ): Promise<ContractTransaction>;
initialize( initialize(
_addressesProvider: string,
_underlyingAsset: string,
_underlyingAssetDecimals: BigNumberish, _underlyingAssetDecimals: BigNumberish,
_tokenName: string, _tokenName: string,
_tokenSymbol: string, _tokenSymbol: string,
@ -553,8 +547,6 @@ export class AToken extends Contract {
): Promise<BigNumber>; ): Promise<BigNumber>;
initialize( initialize(
_addressesProvider: string,
_underlyingAsset: string,
_underlyingAssetDecimals: BigNumberish, _underlyingAssetDecimals: BigNumberish,
_tokenName: string, _tokenName: string,
_tokenSymbol: string _tokenSymbol: string

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -56,17 +56,6 @@ interface LendingPoolConfiguratorInterface extends Interface {
}>; }>;
initReserve: TypedFunctionDescription<{ initReserve: TypedFunctionDescription<{
encode([
_reserve,
_underlyingAssetDecimals,
_aTokenInstance,
_interestRateStrategyAddress,
_stableDebtTokenAddress,
_variableDebtTokenAddress
]: [string, BigNumberish, string, string, string, string]): string;
}>;
initReserveWithData: TypedFunctionDescription<{
encode([ encode([
_reserve, _reserve,
_aTokenInstance, _aTokenInstance,
@ -260,16 +249,6 @@ export class LendingPoolConfigurator extends Contract {
): Promise<ContractTransaction>; ): Promise<ContractTransaction>;
initReserve( initReserve(
_reserve: string,
_underlyingAssetDecimals: BigNumberish,
_aTokenInstance: string,
_interestRateStrategyAddress: string,
_stableDebtTokenAddress: string,
_variableDebtTokenAddress: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
initReserveWithData(
_reserve: string, _reserve: string,
_aTokenInstance: string, _aTokenInstance: string,
_stableDebtTokenAddress: string, _stableDebtTokenAddress: string,
@ -376,16 +355,6 @@ export class LendingPoolConfigurator extends Contract {
): Promise<ContractTransaction>; ): Promise<ContractTransaction>;
initReserve( initReserve(
_reserve: string,
_underlyingAssetDecimals: BigNumberish,
_aTokenInstance: string,
_interestRateStrategyAddress: string,
_stableDebtTokenAddress: string,
_variableDebtTokenAddress: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
initReserveWithData(
_reserve: string, _reserve: string,
_aTokenInstance: string, _aTokenInstance: string,
_stableDebtTokenAddress: string, _stableDebtTokenAddress: string,
@ -521,15 +490,6 @@ export class LendingPoolConfigurator extends Contract {
freezeReserve(_reserve: string): Promise<BigNumber>; freezeReserve(_reserve: string): Promise<BigNumber>;
initReserve( initReserve(
_reserve: string,
_underlyingAssetDecimals: BigNumberish,
_aTokenInstance: string,
_interestRateStrategyAddress: string,
_stableDebtTokenAddress: string,
_variableDebtTokenAddress: string
): Promise<BigNumber>;
initReserveWithData(
_reserve: string, _reserve: string,
_aTokenInstance: string, _aTokenInstance: string,
_stableDebtTokenAddress: string, _stableDebtTokenAddress: string,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -134,4 +134,4 @@ const _abi = [
]; ];
const _bytecode = const _bytecode =
"0x608060405234801561001057600080fd5b506040516109863803806109868339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610921806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506106a0945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b038135811691602001351661081c565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b8251811015610694576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b6020026020010181815250505061068c565b61062784838151811061061157fe5b60200260200101516001600160a01b03166108c6565b15610666576106498885848151811061063c57fe5b602002602001015161081c565b83838151811061065557fe5b60200260200101818152505061068a565b876001600160a01b03163183838151811061067d57fe5b6020026020010181815250505b505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff811180156106be57600080fd5b506040519080825280602002602001820160405280156106e8578160200160208202803683370190505b50905060005b84518110156108125760005b845181101561080957600085518302905061071a86838151811061061157fe5b1561075c5786838151811061072b57fe5b60200260200101516001600160a01b031631848383018151811061074b57fe5b602002602001018181525050610800565b61078186838151811061076b57fe5b60200260200101516001600160a01b0316610320565b6107c2576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b6107e58784815181106107d157fe5b602002602001015187848151811061063c57fe5b84838301815181106107f357fe5b6020026020010181815250505b506001016106fa565b506001016106ee565b5090505b92915050565b6000610830826001600160a01b0316610320565b156108be57816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b50519050610816565b506000610816565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1491905056fea2646970667358221220d229125c06b4ff7a1d89687eb3ef25a0713d63f804aa352026fdaa83b6d4b49864736f6c63430006080033"; "0x608060405234801561001057600080fd5b506040516109863803806109868339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610921806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506106a0945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b038135811691602001351661081c565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b8251811015610694576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b6020026020010181815250505061068c565b61062784838151811061061157fe5b60200260200101516001600160a01b03166108c6565b15610666576106498885848151811061063c57fe5b602002602001015161081c565b83838151811061065557fe5b60200260200101818152505061068a565b876001600160a01b03163183838151811061067d57fe5b6020026020010181815250505b505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff811180156106be57600080fd5b506040519080825280602002602001820160405280156106e8578160200160208202803683370190505b50905060005b84518110156108125760005b845181101561080957600085518302905061071a86838151811061061157fe5b1561075c5786838151811061072b57fe5b60200260200101516001600160a01b031631848383018151811061074b57fe5b602002602001018181525050610800565b61078186838151811061076b57fe5b60200260200101516001600160a01b0316610320565b6107c2576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b6107e58784815181106107d157fe5b602002602001015187848151811061063c57fe5b84838301815181106107f357fe5b6020026020010181815250505b506001016106fa565b506001016106ee565b5090505b92915050565b6000610830826001600160a01b0316610320565b156108be57816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b50519050610816565b506000610816565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1491905056fea2646970667358221220f6e812f417b9657175e5e8c275a14453160d361a47ca250ee1f3ab3850c68b8e64736f6c63430006080033";