Merkle airdrop
Contracts that let people claim tokens if they can prove they are on an allowlist, without putting the full list on-chain.
What this is
An airdrop is a token giveaway to many addresses. Storing every address and amount on-chain is expensive. This project stores one Merkle root on-chain instead. Each person brings a proof that their address and amount are in the tree. If the proof checks out, they receive Vine Token (VINE).
How a claim works
The claimer calls the contract with their address, amount, Merkle proof, and an EIP-712 signature from that same address. The contract rejects bad proofs, bad signatures, and second claims from an address that already claimed. Scripts in the repo help generate the tree and deploy the contracts.
What is in the repo
VineToken is an owner-minted ERC20. MerkleAirdrop holds the root and the token, and runs claim. OpenZeppelin helpers cover Merkle proofs, EIP-712, and safe transfers. Foundry tests cover the claim path.
Why I made it
I wanted a concrete answer to “how do you airdrop to lots of people without paying for a giant on-chain list?” The answer here is: build the list off-chain, publish the root, and let each claimer prove their own row.