In RAACReleaseOrchestrator
contract, the emergencyRevoke()
function can lead to the loss of unreleased tokens. When called, it removes a beneficiary’s vesting schedule and transfers the remaining RAAC tokens back to the contract. However, since the contract does not provide a way to reassign or recover these tokens, they effectively become inaccessible, leading to a permanent loss.
The emergencyRevoke()
function is designed to immediately revoke a beneficiary’s vesting schedule and transfer their remaining tokens to the contract itself:
Since the contract does not provide a function to redistribute or withdraw these tokens, they remain stuck in the contract indefinitely.
Any revoked tokens are permanently stuck in the contract, effectively leading to a loss of unreleased tokens. This could result in a significant financial loss if large amounts are revoked.
Manual Review
Modify emergencyRevoke()
to allow the contract owner to redistribute or withdraw the locked tokens.
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.