IFestivalPass::FundsWithdrawn
Declared but Not Emitted on FestivalPass::withdraw
function.Description: The IFestivalPass::FundsWithdrawn
event is declared but the FestivalPass::withdraw
function does not emit this event when funds are withdrawn. This reduces protocol transparency and makes it harder for off-chain services and users to monitor withdrawals and track on-chain activity.
While the access control issue (onlyOwner vs onlyOrganizer) is addressed separately in [M-1], this finding specifically focuses on the absence of an event.
Impact:
Off-chain services, block explorers, and users cannot reliably detect when funds are withdrawn from the contract.
Reduces protocol transparency and makes it difficult to monitor or audit withdrawals.
May hinder integration with monitoring tools, analytics platforms, or alerting systems.
Proof of Concept: Add this into your FestivalPass.t.sol:
A Foundry test using vm.expectEmit(...) fails when calling festivalPass.withdraw(), proving that the IFestivalPass::FundsWithdrawn
event is not emitted.
Recommended Mitigation: Add the event emission to the withdraw function to ensure that all withdrawals are logged on-chain:
This ensures transparent and traceable withdrawals.
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.