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