The Pot constructor doesn't check that players.length == rewards.length. If the rewards array is longer than the players array, the loop only maps rewards up to players.length and silently ignores the rest. The ignored rewards are counted toward totalRewards and funded, but no player can ever claim them.
Likelihood: Requires the admin to make an input error. The admin is trusted, but there's no guard to catch this mistake.
Impact: Tokens corresponding to the unmapped rewards are permanently stuck. If players.length < rewards.length, the difference between totalRewards and the actually-claimable amount is locked.
2 players but 3 reward entries. The third 400-token reward has no corresponding player and can never be claimed.
The constructor should verify that both arrays have the same length before proceeding with the reward mapping. Without this check, the loop silently skips any reward entries beyond players.length, leaving the corresponding tokens permanently locked. A simple require at the top of the constructor catches this at deployment time, before any funds are committed.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.