mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
Fixed test on transfer, updated interest redirection tests
This commit is contained in:
parent
b0084aaf33
commit
223690f5f1
|
@ -201,7 +201,7 @@ contract AToken is VersionedInitializable, ERC20, IAToken {
|
|||
if (currentScaledBalance == 0 && redirectedBalance == 0) {
|
||||
return 0;
|
||||
}
|
||||
uint256 scaledRedirectedBalance = redirectedBalance > 0 ? redirectedBalance.rayDiv(_interestRedirectionIndexes[user]) : 0;
|
||||
uint256 scaledRedirectedBalance = redirectedBalance > 0 ? redirectedBalance.rayDiv(_redirectedBalanceIndexes[user]) : 0;
|
||||
|
||||
uint256 index = _pool.getReserveNormalizedIncome(UNDERLYING_ASSET_ADDRESS);
|
||||
|
||||
|
@ -340,6 +340,8 @@ contract AToken is VersionedInitializable, ERC20, IAToken {
|
|||
_updateRedirectedBalanceOfRedirectionAddress(origin, redirectionAddress, 0, 0, index);
|
||||
}
|
||||
|
||||
console.log("Interest redirection completed");
|
||||
|
||||
emit RedirectedBalanceUpdated(
|
||||
redirectionAddress,
|
||||
scaledBalanceToAdd,
|
||||
|
@ -454,6 +456,10 @@ contract AToken is VersionedInitializable, ERC20, IAToken {
|
|||
//being transferred
|
||||
_updateRedirectedBalanceOfRedirectionAddress(to, to, scaledAmount, 0, index);
|
||||
|
||||
if(scaledBalanceOf(from) == 0){
|
||||
_resetDataOnZeroBalance(from);
|
||||
}
|
||||
|
||||
emit BalanceTransfer(from, to, amount, index);
|
||||
|
||||
}
|
||||
|
|
|
@ -50,8 +50,8 @@ export const calcExpectedUserDataAfterDeposit = (
|
|||
expectedUserData.liquidityRate = reserveDataAfterAction.liquidityRate;
|
||||
|
||||
expectedUserData.scaledATokenBalance = calcExpectedScaledATokenBalance(
|
||||
reserveDataAfterAction,
|
||||
userDataBeforeAction,
|
||||
reserveDataAfterAction.liquidityIndex,
|
||||
new BigNumber(amountDeposited),
|
||||
new BigNumber(0)
|
||||
);
|
||||
|
@ -89,8 +89,8 @@ export const calcExpectedUserDataAfterDeposit = (
|
|||
);
|
||||
|
||||
expectedUserData.redirectionAddressRedirectedBalance = calcExpectedRedirectedBalance(
|
||||
userDataBeforeAction,
|
||||
expectedUserData,
|
||||
reserveDataAfterAction.liquidityIndex,
|
||||
userDataBeforeAction.redirectionAddressRedirectedBalance,
|
||||
new BigNumber(amountDeposited),
|
||||
new BigNumber(0)
|
||||
|
@ -121,8 +121,8 @@ export const calcExpectedUserDataAfterWithdraw = (
|
|||
}
|
||||
|
||||
expectedUserData.scaledATokenBalance = calcExpectedScaledATokenBalance(
|
||||
reserveDataAfterAction,
|
||||
userDataBeforeAction,
|
||||
reserveDataAfterAction.liquidityIndex,
|
||||
new BigNumber(0),
|
||||
new BigNumber(amountWithdrawn)
|
||||
);
|
||||
|
@ -175,8 +175,8 @@ export const calcExpectedUserDataAfterWithdraw = (
|
|||
}
|
||||
|
||||
expectedUserData.redirectionAddressRedirectedBalance = calcExpectedRedirectedBalance(
|
||||
userDataBeforeAction,
|
||||
expectedUserData,
|
||||
reserveDataAfterAction.liquidityIndex,
|
||||
userDataBeforeAction.redirectionAddressRedirectedBalance,
|
||||
new BigNumber(0),
|
||||
new BigNumber(amountWithdrawn)
|
||||
|
@ -900,6 +900,7 @@ export const calcExpectedReserveDataAfterStableRateRebalance = (
|
|||
expectedReserveData.totalBorrowsVariable,
|
||||
expectedReserveData.averageStableBorrowRate
|
||||
);
|
||||
|
||||
expectedReserveData.liquidityRate = rates[0];
|
||||
|
||||
expectedReserveData.stableBorrowRate = rates[1];
|
||||
|
@ -941,10 +942,6 @@ export const calcExpectedUserDataAfterStableRateRebalance = (
|
|||
|
||||
expectedUserData.principalVariableDebt = userDataBeforeAction.principalVariableDebt;
|
||||
|
||||
const debtAccrued = expectedUserData.currentStableDebt.minus(
|
||||
userDataBeforeAction.principalStableDebt
|
||||
);
|
||||
|
||||
expectedUserData.stableBorrowRate = reserveDataBeforeAction.stableBorrowRate;
|
||||
|
||||
expectedUserData.liquidityRate = expectedDataAfterAction.liquidityRate;
|
||||
|
@ -971,6 +968,8 @@ export const calcExpectedUsersDataAfterRedirectInterest = (
|
|||
const expectedFromData = { ...fromDataBeforeAction };
|
||||
const expectedToData = { ...toDataBeforeAction };
|
||||
|
||||
const index = calcExpectedReserveNormalizedIncome(reserveDataBeforeAction, txTimestamp);
|
||||
|
||||
expectedFromData.currentStableDebt = calcExpectedStableDebtTokenBalance(
|
||||
fromDataBeforeAction,
|
||||
txTimestamp
|
||||
|
@ -988,20 +987,17 @@ export const calcExpectedUsersDataAfterRedirectInterest = (
|
|||
expectedFromData.stableBorrowRate = fromDataBeforeAction.stableBorrowRate;
|
||||
expectedToData.stableBorrowRate = toDataBeforeAction.stableBorrowRate;
|
||||
|
||||
expectedFromData.scaledATokenBalance = expectedFromData.currentATokenBalance = calcExpectedATokenBalance(
|
||||
expectedFromData.scaledATokenBalance = fromDataBeforeAction.scaledATokenBalance;
|
||||
|
||||
expectedFromData.currentATokenBalance = calcExpectedATokenBalance(
|
||||
reserveDataBeforeAction,
|
||||
fromDataBeforeAction,
|
||||
txTimestamp
|
||||
);
|
||||
|
||||
expectedToData.principalATokenBalance = expectedToData.currentATokenBalance = calcExpectedATokenBalance(
|
||||
reserveDataBeforeAction,
|
||||
toDataBeforeAction,
|
||||
txTimestamp
|
||||
);
|
||||
|
||||
expectedToData.redirectedBalance = toDataBeforeAction.redirectedBalance.plus(
|
||||
expectedFromData.currentATokenBalance
|
||||
expectedFromData.currentATokenBalance.rayDiv(index)
|
||||
);
|
||||
|
||||
if (fromAddress === toAddress) {
|
||||
|
@ -1013,10 +1009,11 @@ export const calcExpectedUsersDataAfterRedirectInterest = (
|
|||
expectedToData.redirectionAddressRedirectedBalance = new BigNumber(0);
|
||||
} else {
|
||||
expectedFromData.interestRedirectionAddress = toAddress;
|
||||
expectedFromData.interestRedirectionIndex = index;
|
||||
|
||||
expectedFromData.redirectionAddressRedirectedBalance = calcExpectedRedirectedBalance(
|
||||
toDataBeforeAction,
|
||||
expectedFromData,
|
||||
index,
|
||||
toDataBeforeAction.redirectedBalance,
|
||||
expectedFromData.currentATokenBalance,
|
||||
new BigNumber(0)
|
||||
|
@ -1027,14 +1024,14 @@ export const calcExpectedUsersDataAfterRedirectInterest = (
|
|||
};
|
||||
|
||||
const calcExpectedScaledATokenBalance = (
|
||||
reserveDataAfterAction: ReserveData,
|
||||
userDataBeforeAction: UserReserveData,
|
||||
index: BigNumber,
|
||||
amountAdded: BigNumber,
|
||||
amountTaken: BigNumber
|
||||
) => {
|
||||
return userDataBeforeAction.scaledATokenBalance
|
||||
.plus(amountAdded.rayDiv(reserveDataAfterAction.liquidityIndex))
|
||||
.minus(amountTaken.rayDiv(reserveDataAfterAction.liquidityIndex));
|
||||
.plus(amountAdded.rayDiv(index))
|
||||
.minus(amountTaken.rayDiv(index));
|
||||
};
|
||||
|
||||
const calcExpectedATokenBalance = (
|
||||
|
@ -1065,14 +1062,14 @@ const calcExpectedATokenBalance = (
|
|||
};
|
||||
|
||||
const calcExpectedRedirectedBalance = (
|
||||
userDataBeforeAction: UserReserveData,
|
||||
expectedUserDataAfterAction: UserReserveData,
|
||||
index: BigNumber,
|
||||
redirectedBalanceBefore: BigNumber,
|
||||
amountToAdd: BigNumber,
|
||||
amountToSubstract: BigNumber
|
||||
): BigNumber => {
|
||||
return expectedUserDataAfterAction.interestRedirectionAddress !== ZERO_ADDRESS
|
||||
? redirectedBalanceBefore.plus(amountToAdd).minus(amountToSubstract)
|
||||
? redirectedBalanceBefore.plus(amountToAdd.rayDiv(index)).minus(amountToSubstract.rayDiv(index))
|
||||
: new BigNumber('0');
|
||||
};
|
||||
const calcExpectedAverageStableBorrowRate = (
|
||||
|
|
|
@ -12,7 +12,7 @@ BigNumber.config({DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_DOWN});
|
|||
|
||||
const scenarioFolder = './test/helpers/scenarios/';
|
||||
|
||||
const selectedScenarios: string[] = [''];
|
||||
const selectedScenarios: string[] = ['interest-redirection.json'];
|
||||
|
||||
fs.readdirSync(scenarioFolder).forEach((file) => {
|
||||
if (selectedScenarios.length > 0 && !selectedScenarios.includes(file)) return;
|
||||
|
|
Loading…
Reference in New Issue
Block a user