The constructor lacks validation for critical parameters including date ordering, zero addresses, and minimum amounts. This allows deployment of a non-functional contract that cannot be salvaged.
Normal behavior expects the constructor to validate that event dates are logically ordered (start > current time, end > start), that addresses are not zero, and that minimum amounts are reasonable.
The current implementation only validates the participation fee cap but allows deployment with past dates, zero addresses for fee collection, inverted date ordering, and zero minimum amounts.
Likelihood:
Deployment scripts with incorrect configuration values will succeed without warning
Manual deployments during testing with placeholder values can accidentally go to mainnet
No on-chain mechanism to fix these values after deployment
Time zone confusion or typo in timestamps will not be caught
Impact:
If eventStartDate is in the past, users can never deposit (always reverts with eventStarted())
If eventEndDate < eventStartDate, winner can never be set or logic breaks
If participationFeeAddress is zero address, all fees are lost/burned on transfer
If minimumAmount is zero, users can make dust deposits breaking economics
Entire contract deployment and associated costs are wasted
Protocol reputation damaged if deployed to mainnet with broken config
No upgrade mechanism means complete redeployment required
This is owner action and the owner is assumed to be trusted and to provide correct input arguments.
This is owner action and the owner is assumed to be trusted and to provide correct input arguments.
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.