Portfolio-safe Airdrop Claim Platform demo for Sepolia + Base Sepolia. DEMO/TESTNET ONLY — no real tokens.
- This repository is for demonstration and testnet usage only.
- Do not use production wallets or real funds.
- Any addresses, allocations, and contract addresses are placeholders until you deploy your own contracts.
- Next.js + TypeScript + Tailwind
- wagmi + viem (wallet connection & chain interactions)
- Foundry Solidity contract for merkle-verified claims
- TypeScript merkle generator (OpenZeppelin merkle-tree)
- Install dependencies:
npm install
- (Optional) Set WalletConnect project ID:
export NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id - Run the Next.js app:
npm run dev
npm run dev— Start the Next.js dev server.npm run build— Build the Next.js app.npm run start— Run the production build.npm run lint— Run Next lint.npm run format— Format with Prettier.npm run generate:merkle— Generatedata/proofs.jsonfromdata/snapshot.example.csv.
- Input:
data/snapshot.example.csv(columns:address,amount). - Output:
data/proofs.jsonand merkle root printed to stdout. - Ensure contract merkle root matches the output.
Located in contracts/ with its own Foundry config.
contracts/src/MerkleAirdropClaim.solincludesmerkleRoot,claimed, andclaim.- Optional pause/ownership controls are available.
Run tests (requires Foundry):
cd contracts
forge test- Deploy the contract to Sepolia and Base Sepolia.
- Update
src/lib/airdrop.tswith the deployed addresses. - Update
public/proofs.jsonand merkle root to match your snapshot.
- This demo does not perform token transfers; it only emits
Claimed. - Replace placeholder addresses and validate proof data before any real deployments.
- Always audit contracts before mainnet or production usage.
- Home / Claim Flow:
docs/screenshots/home.png - Wallet Connect:
docs/screenshots/wallet-connect.png - Claim Submitted:
docs/screenshots/claim-submitted.png