The emergencyWithdraw
function in FeeCollector.sol
directly sends tokens to the treasury contract, but the treasury contract cannot withdraw tokens that were directly transfered to it.
The only way to get tokens out of Treasury.sol
is with the withdraw
function, in this function it performs the following operation:
To update it's internal accounting system. The only place where balances are added is during the deposit
function. That means that any token not sent using the deposit
function cannot be withdrawn because it's not accounted for.
The FeeCollector in it's emergencyWithdraw
function sends tokens to the treasury using safeTransfer
and thus they'll get stuck.
Loss of funds.
Manual review.
Use the deposit
function of the treasury.
Also might be good to add a recovery mechanism for tokens sent in any other way.
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.