The emergencyRevoke function unnecessarily transfers tokens to itself, triggering unnecessary tax fees due to the RAAC token's tax mechanism which reduces the funds available for future distribution.
The RAACReleaseOrchestrator contract has an option to revoke the release of RAAC tokens to a beneficiary but keep in mind that the RAACReleaseOrchestrator contract actually holds RAAC tokens which are being released to the beneficiaries so the issue is that;
When emergency revoke is called, the function transfers unreleased tokens to address(this):
Since RAACToken implements tax on transfers (both swap and burn taxes), this self-transfer will unnecessarily incur taxes, reducing the actual amount of tokens retained by the contract.
Alice has a vesting schedule with 1000 RAAC tokens (unreleased)
Emergency role calls emergencyRevoke on Alice's address
Contract attempts to transfer 1000 tokens to itself
Due to RAAC's tax mechanism (1.5% total tax):
15 tokens are taken as tax
Contract ends up with 985 tokens instead of 1000
Loss of tokens through unnecessary tax application when performing emergency revoke, reducing the total amount available for future distribution.
Manual review
Remove the unnecessary self-transfer since the tokens are already in the contract:
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.