Recipients cannot claim airdrop because of invalid merkel root creation.
USDC have 6 decimal but when we create a merkel root for the airdrop recipient we are using 25 * 1e18
.
https://github.com/Cyfrin/2024-04-airdropper/blob/781cf225664a4ad11e9654aaa39cc528016bf214/makeMerkle.js#L7
As you can see the tree is created with 25 tokens for each recipient but with 18 decimals. But in a deploy script only 100e6 tokens are sent to the contract which is correct because USDC has only 6 decimals.
https://github.com/Cyfrin/2024-04-airdropper/blob/781cf225664a4ad11e9654aaa39cc528016bf214/script/Deploy.s.sol#L11
When recipent try to claim with 25e18 the function will revert with MerkleAirdrop__InvalidProof
because merkel root is created with 25e18 not with 25e6. Again if user try with 25e18, it will verify the proof but will revert with Insufficient ERC20 Balance because contract only have 100e6 balance and trying to transfer 25e18 will revert.
No one can claim the airdrop.
Manual review
Create a mekel tree with 25 * 1e6 instead of 25 * 1e18.
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.