All fees gathered from RAAC._update are incorrectly sent to the FeeCollector contract and lost forever.
FeeCollector has a specific method to deposit fees in order to account for them internally to a specific feeType
This is important since totalFee calculations are done by summing each amount for every feeType
If a fee had not been accounted for through collectFees towards a specific feeType, it will not be sent when distributeCollectedFees is invoked. Currently, fees from RAAC transfers are directly sent via _update instead of calling the collectFees method.
In the current implementation there is a emergencyWithdraw function which allows the entire RAAC balance to be sent to the treasury in cases of emergency. However, this method has a whenPaused modifier meaning that each distribution would require a pause beforehand. Furthermore the emergency method also sends the funds directly to the treasury which also has a specific method to deposit them which is unused (topic of another submission). In the end, the funds are still lost since they can't be pulled from the treasury either.
Loss of funds, broken core functionality
Use the designated method instead of direct transfers
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.