BeatToken::festivalContract state variableThe `BeatToken::setFestivalContract` function implements a strict check that prevents the `festivalContract` address from being updated once it has been initialized.
In the context of a festival-based ecosystem, this creates a logic flaw where the `BeatToken` becomes permanently locked to a single festival instance. If a new festival contract is deployed for a subsequent season, or if a critical bug is discovered in the current `festivalContract` requiring a migration, the `BeatToken` will be unable to interact with the new logic. This is effectively bricking the utility of the token for all future protocol iterations.
Likelihood:
Always
Impact:
The protocol suffers from a permanent Denial of Service regarding its core lifecycle. Since the festival contract cannot be rotated, the BeatToken becomes obsolete after the first festival concludes, or immediately upon any necessary contract migration, leading to a total loss of protocol functionality for future events.
1. Owner deploys a new festival contract.
2. Owner tries to set the new festival contract in BeatToken but it reverts.
3. Organizer configures passes for the new festival.
4. Organizer creates a performance.
5. Only GENERAL passes can be bought because buying it doesn't mint BEAT tokens.
6. User1 tries to attend the performance but it fails because this festival can't mint BEAT tokens.
Remove the zero-address requirement to allow the owner to update the contract address as needed for future festivals or migrations.
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.