Normal behavior:
Airdrop claim verification should use a consistent and verifiable data source—typically a snapshot taken before claims begin. Both Merkle tree inclusion and signature validity must be based on the same fixed data.
Issue:
The contract incorrectly uses the current token balance for both Merkle proof generation and signature validation, despite the Merkle tree being built using snapshot balances. This leads to verification failure when users’ balances have changed since the snapshot, preventing valid users from claiming their rewards.
Likelihood:
High — This issue affects all users who have transacted between snapshot and claim.
Reproducibility: Consistently fails for active token holders.
Ease of exploitation: No exploit needed; claims just fail naturally.
Impact:
Airdrop fails for legitimate users who no longer hold their full snapshot balance.
Protocol reward mechanism is non-functional.
Locked NFTs remain undistributed due to failed claims.
Severe user frustration and trust loss.
Explanation:
Merkle proof and signature were generated using Alice’s snapshot balance (100).
After transferring tokens, Alice’s current balance is 50.
The contract checks Merkle root using this new value — it fails.
Result: Alice is denied her rightful airdrop.
Introduce a snapshotAmount parameter to decouple real-time balances from verification logic, and ensure that both signature and Merkle proof match this static value.
Explanation:
Fixes mismatch: Ensures snapshot data is consistent across Merkle proof and signature.
Restores functionality: All users who were eligible at snapshot can now claim.
Security: Avoids reliance on mutable runtime state (i.e., current balances).
Compatibility: Preserves rest of claim logic and structure.
This is a high-severity logic bug. It causes widespread airdrop failure in any scenario where token holders trade or transfer tokens between snapshot and claim window. This breaks the promise of fair distribution and disrupts core protocol operations.
Claims use snow balance of receiver to compute the merkle leaf, making proofs invalid if the user’s balance changes (e.g., via transfers). Attackers can manipulate balances or frontrun claims to match eligible amounts, disrupting the airdrop.
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.