The Treasury contract receives RAAC tokens directly via safeTransfer in the FeeCollector _processDistributions function. This bypasses the deposit function, which is responsible for updating the treasury's internal balance tracking (_balances and _totalValue). As a result, funds sent to the treasury will not be reflected in its internal state, making them inaccessible for withdrawal by managers. This could lead to permanent loss of protocol funds.
The FeeCollector uses safeTransfer to send RAAC tokens to the treasury:
This bypasses the deposit function, which updates the treasury's internal state variables (_balances and _totalValue). The treasury's internal state is not updated when tokens are sent directly via safeTransfer. When a manager attempts to withdraw these tokens, the transaction will revert due to an underflow
Fees sent to the treasury will be stuck and inaccessible.
Manual
Replace the direct safeTransfer call with a call to the deposit function to ensure the treasury's internal state is updated correctly.
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.