The contract sets a hard cap on the total supply of veRAAC tokens at MAX_TOTAL_SUPPLY = 100_000_000e18. It enforces this cap within the lock(...) function:
However, no similar check appears in the increase(...) function—allowing users to exceed the total supply cap through incremental increases of their lock.
Initial Lock with a Small Amount
Because 1 is far below MAX_TOTAL_SUPPLY, the contract does not revert.
Repeatedly Calling increase(...)
The user now calls:
Each increase call mints additional veRAAC tokens corresponding to the newly locked tokens.
The code snippet for increase does not verify (totalSupply() + amount) <= MAX_TOTAL_SUPPLY, thus the total supply can silently grow above the 100 million token cap.
Exceeding the Cap
Eventually, the sum of tokens minted via repeated increase calls can push the veRAAC total supply well beyond 100,000,000 tokens—undermining the system’s intended supply limit.
Exceeding the VeRAAC Hard Cap: A malicious or unknowing user can accumulate more veRAAC tokens than the system was designed to allow.
Governance & Reward Distortion: Votes and rewards based on veRAAC balances may be skewed, granting the over-cap user disproportionate control or extra rewards.
Insert the same total supply check found in lock(...) into increase(...), e.g.:
This ensures both creation paths (initial lock and incremental increases) respect the global supply cap.
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.