MerkleAirdrop declares two events. Claimed is emitted on every successful claim. MerkleRootUpdated is declared but never emitted anywhere in the contract:
The merkle root is stored as immutable (line 17), so no function can update it after deployment. The event name implies a root update mechanism was planned but never implemented. This is dead code copied from a template without cleanup.
The contract has no setMerkleRoot() or equivalent function. The event exists only in the ABI and bytecode, serving no purpose.
Likelihood:
The dead event is always present in every deployment. Any tooling or frontend parsing the ABI will see MerkleRootUpdated and expect a root update mechanism.
Integrators building monitoring or indexing systems will set up listeners for an event that never fires.
Impact:
Misleads integrators into expecting root update functionality that does not exist. Monitoring dashboards tracking MerkleRootUpdated provide false confidence that root changes are observable.
Marginal gas overhead on deployment from unused bytecode.
A simple grep confirms the event is never emitted:
Remove the unused event to reduce ABI surface and avoid misleading integrators:
If root updates are a desired future feature, i_merkleRoot must be changed from immutable to a regular state variable with an onlyOwner setter that emits the event.
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.