Merge branch 'master' of gitlab.com:aave-tech/protocol-v2

This commit is contained in:
emilio 2020-10-28 10:54:35 +01:00
commit 763220c2b9
3 changed files with 92 additions and 173 deletions

View File

@ -151,12 +151,14 @@ library ReserveLogic {
.scaledTotalSupply(); .scaledTotalSupply();
uint256 previousVariableBorrowIndex = reserve.variableBorrowIndex; uint256 previousVariableBorrowIndex = reserve.variableBorrowIndex;
uint256 previousLiquidityIndex = reserve.liquidityIndex; uint256 previousLiquidityIndex = reserve.liquidityIndex;
uint40 lastUpdatedTimestamp = reserve.lastUpdateTimestamp;
(uint256 newLiquidityIndex, uint256 newVariableBorrowIndex) = _updateIndexes( (uint256 newLiquidityIndex, uint256 newVariableBorrowIndex) = _updateIndexes(
reserve, reserve,
scaledVariableDebt, scaledVariableDebt,
previousLiquidityIndex, previousLiquidityIndex,
previousVariableBorrowIndex previousVariableBorrowIndex,
lastUpdatedTimestamp
); );
_mintToTreasury( _mintToTreasury(
@ -164,7 +166,8 @@ library ReserveLogic {
scaledVariableDebt, scaledVariableDebt,
previousVariableBorrowIndex, previousVariableBorrowIndex,
newLiquidityIndex, newLiquidityIndex,
newVariableBorrowIndex newVariableBorrowIndex,
lastUpdatedTimestamp
); );
} }
@ -318,7 +321,8 @@ library ReserveLogic {
uint256 scaledVariableDebt, uint256 scaledVariableDebt,
uint256 previousVariableBorrowIndex, uint256 previousVariableBorrowIndex,
uint256 newLiquidityIndex, uint256 newLiquidityIndex,
uint256 newVariableBorrowIndex uint256 newVariableBorrowIndex,
uint40 timestamp
) internal { ) internal {
MintToTreasuryLocalVars memory vars; MintToTreasuryLocalVars memory vars;
@ -345,7 +349,8 @@ library ReserveLogic {
//calculate the stable debt until the last timestamp update //calculate the stable debt until the last timestamp update
vars.cumulatedStableInterest = MathUtils.calculateCompoundedInterest( vars.cumulatedStableInterest = MathUtils.calculateCompoundedInterest(
vars.avgStableRate, vars.avgStableRate,
vars.stableSupplyUpdatedTimestamp vars.stableSupplyUpdatedTimestamp,
timestamp
); );
vars.previousStableDebt = vars.principalStableDebt.rayMul(vars.cumulatedStableInterest); vars.previousStableDebt = vars.principalStableDebt.rayMul(vars.cumulatedStableInterest);
@ -375,10 +380,9 @@ library ReserveLogic {
ReserveData storage reserve, ReserveData storage reserve,
uint256 scaledVariableDebt, uint256 scaledVariableDebt,
uint256 liquidityIndex, uint256 liquidityIndex,
uint256 variableBorrowIndex uint256 variableBorrowIndex,
uint40 timestamp
) internal returns (uint256, uint256) { ) internal returns (uint256, uint256) {
uint40 timestamp = reserve.lastUpdateTimestamp;
uint256 currentLiquidityRate = reserve.currentLiquidityRate; uint256 currentLiquidityRate = reserve.currentLiquidityRate;
uint256 newLiquidityIndex = liquidityIndex; uint256 newLiquidityIndex = liquidityIndex;

View File

@ -42,13 +42,13 @@ library MathUtils {
* @param lastUpdateTimestamp the timestamp of the last update of the interest * @param lastUpdateTimestamp the timestamp of the last update of the interest
* @return the interest rate compounded during the timeDelta, in ray * @return the interest rate compounded during the timeDelta, in ray
**/ **/
function calculateCompoundedInterest(uint256 rate, uint40 lastUpdateTimestamp) function calculateCompoundedInterest(
internal uint256 rate,
view uint40 lastUpdateTimestamp,
returns (uint256) uint256 currentTimestamp
{ ) internal pure returns (uint256) {
//solium-disable-next-line //solium-disable-next-line
uint256 exp = block.timestamp.sub(uint256(lastUpdateTimestamp)); uint256 exp = currentTimestamp.sub(uint256(lastUpdateTimestamp));
if (exp == 0) { if (exp == 0) {
return WadRayMath.ray(); return WadRayMath.ray();
@ -68,4 +68,17 @@ library MathUtils {
return WadRayMath.ray().add(ratePerSecond.mul(exp)).add(secondTerm).add(thirdTerm); return WadRayMath.ray().add(ratePerSecond.mul(exp)).add(secondTerm).add(thirdTerm);
} }
/**
* @dev calculates the compounded interest between the timestamp of the last update and the current block timestamp
* @param rate the interest rate (in ray)
* @param lastUpdateTimestamp the timestamp from which the interest accumulation needs to be calculated
**/
function calculateCompoundedInterest(uint256 rate, uint40 lastUpdateTimestamp)
internal
view
returns (uint256)
{
return calculateCompoundedInterest(rate, lastUpdateTimestamp, block.timestamp);
}
} }

View File

@ -35,18 +35,6 @@
"buidlerevm": { "buidlerevm": {
"address": "0x5A0773Ff307Bf7C71a832dBB5312237fD3437f9F", "address": "0x5A0773Ff307Bf7C71a832dBB5312237fD3437f9F",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xa89E20284Bd638F31b0011D0fC754Fc9d2fa73e3",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": {
"address": "0x5A0773Ff307Bf7C71a832dBB5312237fD3437f9F",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": {
"address": "0xf3266d89e6742fAE2C35D05eD549cd4e117300a7",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
} }
}, },
"FeeProvider": { "FeeProvider": {
@ -73,10 +61,16 @@
"address": "0x6642B57e4265BAD868C17Fc1d1F4F88DBBA04Aa8" "address": "0x6642B57e4265BAD868C17Fc1d1F4F88DBBA04Aa8"
}, },
"localhost": { "localhost": {
"address": "0x9Ec55627757348b322c8dD0865D704649bFa0c7b" "address": "0xaca5aCeB6f44845d07Fd339a51F0bd52Bb3D8D1A",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": {
"address": "0xB660Fdd109a95718cB9d20E3A89EE6cE342aDcB6",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"kovan": { "kovan": {
"address": "0x1aae278bCcdb95817c7A546d752fC662F09b6DBa" "address": "0x0EDc241FdA0dF39EB1B9eB1236217BBe72Ab911D",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
} }
}, },
"LendingPoolDataProvider": { "LendingPoolDataProvider": {
@ -89,10 +83,14 @@
"address": "0xD9273d497eDBC967F39d419461CfcF382a0A822e" "address": "0xD9273d497eDBC967F39d419461CfcF382a0A822e"
}, },
"localhost": { "localhost": {
"address": "0x3EE716e38f21e5FC16BFDB773db24D63C637A5d8" "address": "0x987223924D2DD6c6efB601756850f3886ECbceF6"
},
"coverage": {
"address": "0x2cfcA5785261fbC88EFFDd46fCFc04c22525F9e4"
}, },
"kovan": { "kovan": {
"address": "0x8E05A3054cb736258FaF4638D07058cE6e294d2C" "address": "0xfF28b837352d9531bAb6dFF3650D7831192117F7",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
} }
}, },
"PriceOracle": { "PriceOracle": {
@ -101,11 +99,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
"address": "0x5889354f21A1C8D8D2f82669d778f6Dab778B519", "address": "0x9bD0Bec44106D8Ea8fFb6296d7A84742a290E064",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": {
"address": "0x1750499D05Ed1674d822430FB960d5F6731fDf64",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
@ -128,16 +122,8 @@
"address": "0x7B6C3e5486D9e6959441ab554A889099eed76290", "address": "0x7B6C3e5486D9e6959441ab554A889099eed76290",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": {
"address": "0x0B63c002cb44B2e5e580C3B3560a27F4101D95c0",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": {
"address": "0x7B6C3e5486D9e6959441ab554A889099eed76290",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": { "kovan": {
"address": "0x18a107d4fa249Efefd4DAf9A76EEE3b6366701AA", "address": "0x293f5BcC66762c28a5d3Bd8512a799D457F5296D",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
} }
}, },
@ -164,16 +150,12 @@
"address": "0xB660Fdd109a95718cB9d20E3A89EE6cE342aDcB6", "address": "0xB660Fdd109a95718cB9d20E3A89EE6cE342aDcB6",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": {
"address": "0x7C95b1ad025F0C9aB14192f87bF2aD53889bE4F7",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": { "coverage": {
"address": "0x626FdE749F9d499d3777320CAf29484B624ab84a", "address": "0xA0AB1cB92A4AF81f84dCd258155B5c25D247b54E",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"kovan": { "kovan": {
"address": "0x47341CE48FfE1cbD91991578B880a18c45cdB5CA", "address": "0xf303Ae6F24C29D94E367fdb5C7aE04D32BEbF13E",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F" "deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
} }
}, },
@ -227,10 +209,12 @@
"address": "0xBEF0d4b9c089a5883741fC14cbA352055f35DDA2" "address": "0xBEF0d4b9c089a5883741fC14cbA352055f35DDA2"
}, },
"localhost": { "localhost": {
"address": "0x9c91aEaD98b1354C7B0EAfb8ff539d0796c79894" "address": "0x2A7BE996B8801ED21f2f45148791D402811A2106",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"coverage": { "coverage": {
"address": "0x2B681757d757fbB80cc51c6094cEF5eE75bF55aA" "address": "0xEBAB67ee3ef604D5c250A53b4b8fcbBC6ec3007C",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"WalletBalanceProvider": { "WalletBalanceProvider": {
@ -238,13 +222,11 @@
"address": "0xDf73fC454FA018051D4a1509e63D11530A59DE10", "address": "0xDf73fC454FA018051D4a1509e63D11530A59DE10",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": {
"address": "0x145b7B6368Df63e7F3497b0A948B30fC1A4d5E55",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": { "coverage": {
"address": "0xDf73fC454FA018051D4a1509e63D11530A59DE10", "address": "0xBEF0d4b9c089a5883741fC14cbA352055f35DDA2"
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" },
"localhost": {
"address": "0x48FAde2E719B770E1783d03466dAEe98b5183538"
} }
}, },
"DAI": { "DAI": {
@ -565,93 +547,28 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"LendingPoolAddressesProviderRegistry": {
"buidlerevm": {
"address": "0x5A0773Ff307Bf7C71a832dBB5312237fD3437f9F",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"LendingPool": {
"buidlerevm": {
"address": "0xe7536f450378748E1BD4645D3c77ec38e0F3ba28"
},
"localhost": {
"address": "0x987223924D2DD6c6efB601756850f3886ECbceF6"
},
"coverage": {
"address": "0x2cfcA5785261fbC88EFFDd46fCFc04c22525F9e4"
},
"kovan": {
"address": "0xfF28b837352d9531bAb6dFF3650D7831192117F7",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
}
},
"LendingPoolConfigurator": {
"buidlerevm": {
"address": "0x830bceA96E56DBC1F8578f75fBaC0AF16B32A07d",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xaca5aCeB6f44845d07Fd339a51F0bd52Bb3D8D1A",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": {
"address": "0xB660Fdd109a95718cB9d20E3A89EE6cE342aDcB6",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": {
"address": "0x0EDc241FdA0dF39EB1B9eB1236217BBe72Ab911D",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
}
},
"PriceOracle": {
"buidlerevm": {
"address": "0x1750499D05Ed1674d822430FB960d5F6731fDf64",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x9bD0Bec44106D8Ea8fFb6296d7A84742a290E064",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"ChainlinkProxyPriceProvider": {
"buidlerevm": {
"address": "0x7B6C3e5486D9e6959441ab554A889099eed76290",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": {
"address": "0x293f5BcC66762c28a5d3Bd8512a799D457F5296D",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
}
},
"AToken": { "AToken": {
"buidlerevm": {
"address": "0x5f7134cd38C826a7649f9Cc47dda24d834DD2967",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": { "localhost": {
"address": "0x00f126cCA2266bFb634Ed6DB17c4C74fb8cA5177", "address": "0x7436d6adaA697413F00cb63E1A2A854bF2Aec5A1",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": {
"address": "0x3b050AFb4ac4ACE646b31fF3639C1CD43aC31460",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"AaveProtocolTestHelpers": { "AaveProtocolTestHelpers": {
"buidlerevm": { "buidlerevm": {
"address": "0x689d0586F88cDEa1E1003F838DD943415E4EB1e5" "address": "0xe7536f450378748E1BD4645D3c77ec38e0F3ba28"
}
},
"DefaultReserveInterestRateStrategy": {
"buidlerevm": {
"address": "0x5f7134cd38C826a7649f9Cc47dda24d834DD2967",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": {
"address": "0xA0AB1cB92A4AF81f84dCd258155B5c25D247b54E",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"kovan": {
"address": "0xf303Ae6F24C29D94E367fdb5C7aE04D32BEbF13E",
"deployer": "0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F"
} }
}, },
"StableDebtToken": { "StableDebtToken": {
"buidlerevm": { "buidlerevm": {
"address": "0x3bDA11B584dDff7F66E0cFe1da1562c92B45db60", "address": "0x830bceA96E56DBC1F8578f75fBaC0AF16B32A07d",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -665,7 +582,7 @@
}, },
"VariableDebtToken": { "VariableDebtToken": {
"buidlerevm": { "buidlerevm": {
"address": "0xf784709d2317D872237C4bC22f867d1BAe2913AB", "address": "0xA0AB1cB92A4AF81f84dCd258155B5c25D247b54E",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}, },
"localhost": { "localhost": {
@ -677,45 +594,6 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
} }
}, },
"AToken": {
"buidlerevm": {
"address": "0x392E5355a0e88Bd394F717227c752670fb3a8020",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x7436d6adaA697413F00cb63E1A2A854bF2Aec5A1",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": {
"address": "0x3b050AFb4ac4ACE646b31fF3639C1CD43aC31460",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"MockFlashLoanReceiver": {
"buidlerevm": {
"address": "0x3b050AFb4ac4ACE646b31fF3639C1CD43aC31460",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x2A7BE996B8801ED21f2f45148791D402811A2106",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"coverage": {
"address": "0xEBAB67ee3ef604D5c250A53b4b8fcbBC6ec3007C",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"WalletBalanceProvider": {
"buidlerevm": {
"address": "0xDf73fC454FA018051D4a1509e63D11530A59DE10"
},
"coverage": {
"address": "0xBEF0d4b9c089a5883741fC14cbA352055f35DDA2"
},
"localhost": {
"address": "0x48FAde2E719B770E1783d03466dAEe98b5183538"
}
},
"MockFlashRepayAdapter": { "MockFlashRepayAdapter": {
"buidlerevm": { "buidlerevm": {
"address": "0xDf73fC454FA018051D4a1509e63D11530A59DE10" "address": "0xDf73fC454FA018051D4a1509e63D11530A59DE10"
@ -725,5 +603,29 @@
"buidlerevm": { "buidlerevm": {
"address": "0x2cfcA5785261fbC88EFFDd46fCFc04c22525F9e4" "address": "0x2cfcA5785261fbC88EFFDd46fCFc04c22525F9e4"
} }
},
"WETH": {
"buidlerevm": {
"address": "0xf784709d2317D872237C4bC22f867d1BAe2913AB",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"MockAToken": {
"buidlerevm": {
"address": "0x3bDA11B584dDff7F66E0cFe1da1562c92B45db60",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"MockStableDebtToken": {
"buidlerevm": {
"address": "0x392E5355a0e88Bd394F717227c752670fb3a8020",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"MockVariableDebtToken": {
"buidlerevm": {
"address": "0x3b050AFb4ac4ACE646b31fF3639C1CD43aC31460",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
} }
} }