The emergencyRevoke
function in RAACReleaseOrchestrator
contract does not update categoryUsed
, causing revoked tokens to remain accounted for in the category usage. This leads to incorrect allocation tracking, making it impossible to allocate new vesting schedules even when tokens should be available.
When a vesting schedule is revoked, the contract deletes the schedule but does not update categoryUsed
. Since categoryUsed
continues to count revoked tokens, new schedules cannot be created under the same category even if the tokens should be available.
Initial Setup
PRIVATE_SALE allocation: 10,000,000 RAAC
Used before transactions: 8,000,000 RAAC
Remaining: 2,000,000 RAAC
Step 1: Freddie Allocates to Ummi
Freddie (admin) vests 2,000,000 RAAC to Ummi (investor).
PRIVATE_SALE allocation is now fully used (10,000,000 RAAC).
Step 2: Freddie Revokes Ummi’s Vesting
One year later, Ummi has claimed 500,000 RAAC.
Freddie revokes the remaining 1,500,000 RAAC.
categoryUsed
remains 10,000,000 instead of updating to 8,500,000.
Step 3: Dan's Vesting Fails
Freddie attempts to vest 1,500,000 RAAC to Dan (new investor).
The transaction fails with "CategoryAllocationExceeded"
error.
The contract incorrectly treats PRIVATE_SALE as fully used, preventing new allocations.
Incorrect Allocation Tracking: The total available allocation per category is misrepresented.
Denial of Future Vesting Schedules: Future vesting schedules will be incorrectly blocked due to the overestimated usage.
Inefficient Token Utilization: The inability to properly reclaim allocation will lead to funds being locked or unused.
this also make *getCategoryDetails() *returns a false representation of categoryUsed
, making it unreliable for tracking allocation status.
Note : This flaw effectively reduces the total allocatable supply of RAAC tokens over time as revoked allocations become unusable, directly conflicting with the token's distribution plan (65% allocated for vesting)
Manual Review
1 - Store the vesting category within VestingSchedule
for reference.
2 - Reduce categoryUsed
upon revocation to accurately track available allocations.
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.