According to the system documents, any token which follows ERC-20 standards should be supported by the system.
But some ERC-20 tokens are not supported in the system due to problematic if statement.
ERC-20 tokens may have many additional features or behaviours ( see: https://github.com/d-xo/weird-erc20 ). Following if statements in _transfer() is problematic for those tokens:
We can give fee-on-transfer tokens as an example in this situation.
Let say a fee-on-transfer token added the system for peer-to-peer exchange and Alice wants to exchange her fee-on-transfer token.
In this situation, she can't send her tokens to system because it will be reverted in following line:
Because of fee, toBalanceAft will not be equal to before + amount
Missing main functionality
Manual Review
Instead of checking the equality, updating the amount parameter ( also collateral ) based on the received amounts of tokens will solve the problem
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.