MerkleRootUpdated Event in MerkleAirdropMerkleAirdrop declares the following event:
However, this event is never emitted anywhere in the contract.
At the same time, i_merkleRoot is immutable and there is no function that updates the Merkle root, so this event is currently dead code.
Keeping unused events in production contracts can create confusion for integrators and auditors, because it implies behavior (root updates) that does not actually exist.
The issue is definitely present in the current codebase: the event exists but has no emit path.
This does not create direct fund-loss risk or privilege escalation. The impact is limited to code clarity, maintainability, and potential monitoring/indexing confusion.
Static check confirms the event is declared once and never emitted:
Output:
No emit MerkleRootUpdated(...) usage is found.
Thus, the finding is confirmed: the event is unused.
Remove the unused event declaration to keep the contract interface minimal and accurate.
If Merkle root rotation is planned in future versions, keep the event only when a real root-update flow is implemented and emits it.
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.