Fee on transfer token assets can lead to discrepancies between the token balance in the contract LiquidityPool and the internal accounting of user rewards, potentially resulting in some users being unable to claim their rewards.
The problem lies in the function LiquidityPool::distributeAssets. When distributing assets, a portion of the tokens is added to the holders' balance and then transferred from the manager to the LiquidityPool contract.
However, for tokens that impose a fee on transfer, the actual amount received by the contract will be less than the amount sent.
Over time, this discrepancy accumulates, leading to a situation where the contract's actual token balance is less than the total sum of recorded rewards.
The actual balance of the token in the contract might be lower than the recorded total rewards
Some users may not be able to claim their rewards if the actual token balance is lower than the internally tracked amount
Locked funds
Adjust the code after line 225 as such :
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.