The current implementation of the Treasury contract does not allow the management of RAAC tokens or any other tokens that are directly sent to the contract. This is particularly problematic for tokens transferred from the FeeCollector contract to the Treasury, as they become inaccessible.
The Treasury contract facilitates token deposits and withdrawals through the deposit(...) and withdraw(...) functions, which allow arbitrary tokens to be managed. However, when analyzing the FeeCollector contract, we see that during fee distribution, tokens are sent directly to the Treasury without using the deposit(...) function:
Since the deposit(...) function is not used, and the withdraw(...) function does not rely on balanceOf(...) for external token tracking, the transferred RAAC tokens become permanently stuck in the Treasury contract.
RAAC tokens sent from the FeeCollector to the Treasury cannot be accessed or withdrawn.
The funds become unrecoverable without a contract modification.
This issue limits the proper functioning of the treasury, preventing the intended use of the collected funds.
N/A
Modify the FeeCollector contract to call the deposit(...) function of the Treasury when transferring tokens.
Alternatively, implement a custom function in the Treasury contract to manage externally received ERC20 tokens properly.
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.