The RAACReleaseOrchestrator is a contract which manages the vesting and release of RAAC tokens for various stakeholders. So vestings could be created by createVestingSchedule() and funds could be released by release(). However there is an issue which exists in the vesting mechanism - if UserA is a beneficiary he can't recreate another vesting, even if all the funds are released which would not let the users vest, and hence loss of funds, trust and integrity in the protocol.
User can create vesting schedule by createVestingSchedule- it creates the vesting schedule with beneficiary. What it does is sets the vestingSchedules mapping with benefiary address and VestingSchedule struct. So on creating vesting schedule it sets the schedule.initialized = true; :
Now with release() function, user can release the funds accumulated. So there are two things not taken into account :
User can't create another vesting or on different
categoryAllocationsin the same time or even after
User can't recreate vesting on samecategoryAllocations
User can't also update the vesting amount
You can see that even if, it doesn't delete the vestingSchedule for the beneficiary because of which it will be restricted to create another vesting schedule for same beneficiary as there already exist check in the createVestingSchedule:
Inability to use the vesting function more than once by a user
Manual Review
Delete the vesting schedule for beneficiary when the vesting duration 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.