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
	 The3D
						The3D