Missing Events: State-mutating functions should emit events for proper off-chain tracking. The FestivalPass::setOrganizer, FestivalPass::configurePass, and BeatToken::setFestivalContract functions are missing event emissions. Additionally, the FestivalPass::withdraw function fails to emit the FundsWithdrawn event, despite it being declared in the IFestivalPass interface.
Poor Indexing: The FestivalPass::MemorabiliaRedeemed event lacks an indexed collectionId parameter, which makes filtering and querying for memorabilia redemptions by collection inefficient for off-chain tools.
Likelihood:
Off-chain actors rely on events to track state changes and query specific data, such as memorabilia redemptions within a collection.
Impact:
Front-ends and analytics tools will need to scan full historical logs to track these state changes, significantly increasing RPC costs and potentially leading to missed or inaccurate state transitions.
The following test demonstrates that the withdraw function does not emit the FundsWithdrawn event, causing the test to fail.
Define the missing events in IFestivalPass.sol and add their emission in FestivalPass.sol. For BeatToken, define and emit the event directly within the contract.
Add indexing for the collectionId parameter in the MemorabiliaRedeemed event.
Informational. This protocol doesn't rely on events to function, they are just nice to have, but not mandatory.
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.