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.