RAACToken directly transfers the swap fee and burn fee to the feeCollector
address instead of calling the collectFee
function in the FeeCollector
contract. This prevents FeeCollector
from correctly recording these fees and subsequently distributing them. As a result, the fees can only be withdrawn through the emergencyWithdraw
function.
RAACToken implements a transaction tax and burn tax mechanism, where a portion of the fees should be processed and distributed through the FeeCollector
contract.
However, after calculating the tax fees, RAACToken uses _transfer
or _update
to directly transfer the fees to FeeCollector
instead of calling FeeCollector::collectFee
.
In the FeeCollector
contract, the collectFee
function is responsible for updating the collectedFees
data structure, ensuring proper tracking and later distribution. Since RAACToken does not call collectFee
, these fees are not recorded by FeeCollector
, preventing them from entering the normal distribution process.
As a result, untracked fees accumulate within FeeCollector
and can only be withdrawn through the emergencyWithdraw
function.
The swap and burn tax fees collected from RAACToken transactions remain locked in the FeeCollector
contract and can only be withdrawn via emergencyWithdraw
to the treasury, bypassing the intended proportional distribution mechanism.
Manual
Modify the RAACToken contract to call feeCollector.collectFee()
when collecting fees instead of directly transferring funds to the FeeCollector
address.
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.