Normal Behavior:
The owner sets the festivalContract
, which will be responsible for minting and burning tokens for festival-related operations.
Issue:
The contract enforces a one-time-only setting of festivalContract
via require(festivalContract == address(0))
. If the first assigned festival contract is wrong, buggy, or later compromised, there is no recovery mechanism, leaving minting and burning permanently unusable.
Likelihood:
The festival contract will eventually be upgraded or changed in real-world scenarios.
A compromised or buggy festival contract will render minting/burning permanently unavailable because the owner cannot reset it.
Impact:
The token could become unusable for festival operations if the festival contract fails.
Users might lose trust in the token due to an inability to recover from operational failures.Proof of Concept
Allowing the owner to update the festival contract ensures the system can recover from operational failures. Emitting an event improves transparency for off-chain monitoring.
This ensures that even if the initial festival contract is compromised or lost, the token remains functional by migrating to a new secure contract.
This is intended. It's done like that because the festival contract requires beat token's address and vice versa.
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.