A user can withdraw there deposited assets if they call the withdraw function.
If a user calls the function above they get reserve assets and burn RTokens. our focus is in the burn operation
The function does not add any checks to ensure that if the index in which the user is withdrawing has changed since the time they deposited user has definitely earned some interest. the function just proceeds and sets index to the correct one and burns tokens
The burn function does not check whether the index has changed since the user’s last deposit.
The user has earned interest over time, but this interest is lost when withdrawing because the function simply updates _userState[from].index and burns tokens.
The user is effectively burning their original deposit without accounting for the accrued earnings, which reduces their total withdrawal amount.
Lets say User deposits 100 tokens at index 1.0
Over time, index increases to 2.0, meaning the user’s balance should be More than 100 because of the interest earned during that period
The user withdraws 100 tokens, expecting to retain their earned tokens
Burn function resets index without recognizing the accrued interest → The extra tokens are lost
Loss of funds
The protocol should ensure that before burning tokens, the user’s interest is properly accounted for and included in their withdrawal amount.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.