Gas-optimized NFT collection contract on Base using ERC721A, with three mint phases, dutch auction pricing, Merkle whitelist, and EIP-2981 royalties.
| Feature | Implementation |
|---|---|
| Batch minting | ERC721A — up to 10x gas savings vs ERC721 |
| Whitelist | Merkle proof — no storage cost per address |
| Presale | ECDSA signature — backend-controlled allow list |
| Public sale | Dutch auction — price steps down every 5 min |
| Royalties | EIP-2981 on-chain (5% default) |
| Reveal | URI hidden until manual reveal by admin |
| Access control | Role-based (ADMIN, SIGNER) via OpenZeppelin |
CLOSED → WHITELIST (Merkle proof, 0.05 ETH) → PRESALE (signature) → PUBLIC (dutch auction 0.50→0.05)
- Start price:
0.50 ETH - End price:
0.05 ETH - Step:
-0.05 ETHevery 5 minutes - Duration: ~45 minutes to reach floor
forge install
forge test -vvvcp .env.example .env
forge script script/Deploy.s.sol:DeployNFTLaunchpad \
--rpc-url $BASE_RPC_URL \
--broadcast \
--verify- Max supply: 5,555
- Team reserve: 55 (1%)
- Max per wallet: 5
- Royalty: 5% (EIP-2981)
MIT