The RToken's transfer() and transferFrom() intends to take in amount
of underlying asset and transfer the corresponding amount of RTokens. They use rayDiv to get the RToken amount corresponding to the underlying asset amount and calls super.transfer() / super.transferFrom(). However the _update() is overridden to account for this, thus making it transfer the amount after calling rayDiv with the liqudityIndex twice.
In transfer() and transferFrom(),
In _update(),
This will causes the RToken transfers to be always less than intended. And will transfer 0 in low amounts.
Manual Review
Don't scale the amounts down in transfer() and transferFrom()
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.