emergencyRevoke
attempts to transfer unreleased tokens to the contract itself via raacToken.transfer(address(this), ...)
, which is a no-op and leaves tokens stranded.
Revoked tokens remain in the contract indefinitely, unusable by anyone, effectively burning them.
The transfer
call mistakenly uses address(this)
as the destination, failing to recover tokens.
-> creating scenarios demonstrating the impact
unreleasedAmount = 10,000
tokens.
After emergencyRevoke
, the 10,000 tokens stay in the contract with no withdrawal mechanism, permanently lost.
Transfer tokens to a designated recovery address (e.g., treasury):
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.