The createVestingSchedule function in the RaacReleaseOrchestrator.sol contract sets up vesting schedules for beneficiaries without transferring or holding the corresponding vested tokens. As a result, beneficiaries can later release tokens through the release function, but the contract may not have the required token balance to fulfill the vesting claims.
When a vesting schedule is created via createVestingSchedule, the contract records the vesting parameters but does not receive or escrow the tokens to be vested:
Later, when the release function is called, the contract attempts to transfer the vested tokens to the beneficiary:
Without ensuring that the contract holds the tokens at schedule creation, calls to release may revert due to insufficient token balance.
Beneficiaries expecting to claim vested tokens may be unable to do so if the contract lacks the necessary token balance. This undermines the trust and reliability of the vesting mechanism and can lead to significant operational issues.
Manual code review.
Modify the createVestingSchedule function to transfer the amount of vested tokens into the contract at the time of schedule creation. This ensures that vested tokens are secured and available for release when the vesting period ends:
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.