The contract allows the organizer to set a baseReward
for performances. When users attend, they receive rewards equal to baseReward * multiplier
.
Solidity 0.8+ reverts automatically on arithmetic overflow. However, if the organizer sets a baseReward
too large, multiplying it by the maximum multiplier (3
) will cause an overflow revert when users attend the performance.
This means users cannot claim rewards for such performances, causing a denial of service in reward distribution.
Likelihood:
The organizer might set an excessively large baseReward
without considering the multiplier.
Users attending with passes that have a multiplier > 1 will trigger an overflow revert.
Impact:
Users cannot successfully call attendPerformance
due to revert — denial of service for reward claiming.
Trust and user experience degrade because rewards cannot be claimed despite valid attendance.
If the organizer sets a very large baseReward close to the maximum uint256 value, multiplying it by the multiplier (up to 3) will cause an overflow, reverting transactions and preventing users from claiming rewards.
This prevents overflow reverts by enforcing a safe upper bound on the baseReward
before creation. It improves user experience by guaranteeing reward calculations won’t revert due to overflow.
The second possibility is to set a maximum reward value
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.