The collectFee function in the FeeCollector contract calls raacToken.safeTransferFrom(msg.sender, address(this), amount) to transfer tokens from the sender to the contract. However, due to the tax mechanism implemented in the RAACToken contract, the actual amount of tokens received by the FeeCollector may be less than the specified amount. This discrepancy arises because the RAACToken contract applies swap and burn taxes on transfers, reducing the amount received by the FeeCollector.
The collectFee function in the FeeCollector contract calls raacToken.safeTransferFrom(msg.sender, address(this), amount) to transfer tokens from the sender to the contract.
The RAACToken contract applies swap and burn taxes on token transfers via the _update function:
When collectFee calls raacToken.safeTransferFrom(msg.sender, address(this), amount), the RAACToken contract deducts swap and burn taxes from the amount.
The actual amount received by the FeeCollector is:
However, the FeeCollector updates its internal state (collectedFees) using the original amount, leading to an inconsistency between the recorded and actual fees.
The FeeCollector contract overstates the amount of fees collected, which can lead to incorrect calculations in reward distribution and other fee-related operations.
This discrepancy undermines the accuracy and reliability of the protocol's fee tracking mechanism.
The impact is Medium, the likelihood is Low, so the severity is Low.
Manual Review
Consider following fix:
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.