The protocol is incompatible with fee-on-transfer tokens, which deduct fees during transactions. This results in discrepancies between the expected and actual amounts deposited into the capital pool and withdrawn by users.
Fee-on-transfer tokens deduct a fee whenever tokens are transferred, causing the recipient to receive less than the original amount sent.
Let's analyze the tillIn
function. When an amount of tokens is deposited, the protocol assumes that the full amount will be transferred into the capital pool without accounting for the fees deducted during the transfer. Consequently, the capital pool will receive a lesser amount than expected.
This issue also arises in the withdraw
function.
https://github.com/Cyfrin/2024-08-tadle/blob/main/src/core/TokenManager.sol#L137-L189
The capital pool will receive fewer tokens than those deposited.
Users will receive a lesser amount than what they intended to withdraw.
Manual Review
Implement a check for balanceBefore
and balanceAfter
to account for fees during token transfers.
Valid medium, there are disruptions to the ability to take market actions. The following functions will be disrupted without the possibiliy of reaching settlement, since the respective offers cannot be created/listed regardless of mode when transferring collateral token required to the CapitalPool contract or when refunding token from user to capital pool during relisting. So withdrawal is not an issue - `createOffer()` - reverts [here](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/PreMarkets.sol#L96-L102) - `listOffer()` - reverts [here](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/PreMarkets.sol#L355-L362) - `relistOffer()` - reverts [here](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/PreMarkets.sol#L515-L521) - `createTaker()` - reverts [here](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/PreMarkets.sol#L831-L836) I believe medium severity is appropriate although the likelihood is high and impact is medium (only some level of disruption i.e. FOT tokens not supported and no funds at risk)
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.