๐๐๐ Token airdrop tool for OPNet โกโกโก โ Bitcoin L1 smart contracts ๐งฑ๐งฑ๐งฑ๐ช๐ช๐ช
๐ฐ๐ฐ๐ฐ Drop tokens to hundreds of addresses in one click ๐๐ฅ or set up a merkle claim pool ๐ณ๐ณ๐ณ and let recipients come to you ๐โโ๏ธ๐จ๐ฏโจโจโจ
๐๐๐ Live on IPFS: https://ipfs.opnet.org/ipfs/QmUzDHkNDjL3inLbj2dri3GcD4zz5RKuyLziAuwFHh9s81/ ๐๐๐
๐๐๏ธโ๏ธ Contract (OPNet Testnet): opt1sqqytmrzdehfwsdld55k98efp37cqc6mcjc5sx08k โ๏ธ๐๏ธ๐
๐ฅ๐ธโก Direct Send โ Paste addresses ๐, pick an amount ๐ข, hit send ๐. Tokens go out immediately ๐จ๐จ๐จ via a single on-chain transaction โ๏ธ. No waiting โฐโ, no claim links ๐โ, no middlemen ๐งโ๐ผโ. Just pure unfiltered airdrop energy ๐ช๐๐๐โกโกโก
๐ณ๐งฎ๐ Merkle Claim Pools โ Deposit tokens into a pool ๐โโ๏ธ๐ฐ with a merkle root ๐ณ๐ณ. Recipients paste the shared recipient list ๐๐, their proof is computed locally in-browser ๐ง ๐ป๐, and they claim their share ๐๐๐. You can withdraw whatever's left at any time ๐ฐโฉ๏ธ๐
๐๐๐ My Drops โ Dashboard ๐ฅ๏ธ showing every airdrop you've created ๐ช๐ช๐ช. Track claim progress with live percentages ๐๐, withdraw unclaimed tokens from active pools ๐ฐ๐ฐ๐ฐ๐ฆ
- โ๏ธโ๏ธโ๏ธ Frontend: React 19 + TypeScript + Vite ๐ฅ๐ฅ๐ฅ
- ๐โ๏ธ๐งฑ Contract Integration: OPNet SDK (
opnet,@btc-vision/bitcoin,@btc-vision/transaction) ๐๐๐ - ๐ณ๐ณ๐ณ Merkle Tree: Custom SHA-256 implementation ๐, browser-native ๐, no dependencies ๐ซ๐ฆ
- ๐ชโจ๐ Styling: Pure CSS glassmorphism ๐ซง๐ซง๐ซง โ no Tailwind โ, no UI library โ โ just vibes โจโจโจ
- ๐งชโ ๐ฌ Tests: 229 tests via Vitest ๐ช๐ช๐ช ALL PASSING โ โ โ โ โ
git clone https://github.com/AnomalySecured/OpDrop.git # ๐ฅ๐ฅ๐ฅ
cd OpDrop # ๐๐๐
npm install # ๐ฆ๐ฆ๐ฆ
npm run dev # ๐๐๐๐ฅ๏ธ Opens at http://localhost:5173 ๐. Requires the OP_WALLET browser extension ๐๐๐ณ
| Command | What |
|---|---|
npm run dev |
๐ฅ๐ฅ๐ฅ Dev server with HMR โกโกโก |
npm run build |
๐๏ธ๐๏ธ๐๏ธ TypeScript check + production build ๐ฆ๐ฆ๐ฆ |
npm run test |
๐งช๐งช๐งช Run all 229 tests โ โ โ |
npm run lint |
๐๐๐ ESLint ๐งน๐งน๐งน |
./host.sh |
๐๐๐ Auto-install + dev server on 0.0.0.0 ๐๐๐ |
src/
abi/ ๐๐๐ Contract ABI definition
components/ ๐งฉ๐งฉ๐งฉ Reusable UI (Alert, Modal, ProgressBar, Spinner, etc.)
config/ โ๏ธโ๏ธโ๏ธ Network configs, contract addresses
contracts/ ๐๐๐ Contract source reference documentation
hooks/ ๐ช๐ช๐ช useDropOp (contract calls), useWallet, useNetwork
pages/ ๐๐๐ SendPage, ClaimPage, MyDropsPage
services/ ๐ง๐ง๐ง Singleton provider + contract instance cache
types/ ๐๐๐ TypeScript interfaces for contract + app state
utils/ ๐ ๏ธ๐ ๏ธ๐ ๏ธ Merkle tree, CSV parsing, formatting
test/ ๐งช๐งช๐งช 12 test suites, 229 tests โ
โ
โ
- ๐๐โ
Creator approves the OpDrop contract to spend their tokens (
increaseAllowance) - ๐ค๐๐ธ Creator calls
createAirdrop(claim mode) ordirectAirdrop(direct mode) - ๐โ๏ธ๐ฃ๏ธ For claim mode: creator shares the recipient list off-chain
- ๐ณ๐งฎ๐ง Recipients paste the list into the Claim page โ merkle proof is computed client-side
- โ
๐๐ Recipient calls
claimwith their proof โ contract verifies and transfers tokens - ๐ฐโฉ๏ธ๐ Creator can
withdrawunclaimed tokens at any time
The on-chain contract ๐โ๏ธ (deployed separately as AssemblyScript/WASM ๐งฑ) implements:
- ๐ก๏ธ๐ก๏ธ๐ก๏ธ ReentrancyGuard on all write methods
- ๐งฎ๐งฎ๐งฎ SafeMath for all u256 operations
- ๐๐๐ Checks-effects-interactions pattern
- ๐ซ๐ซ๐ซ Double-claim prevention via nested address mapping
- ๐๐๐ Bounded loops (max 1000 recipients per direct airdrop)
- ๐๐๐ Only-creator authorization on withdrawals
- ๐ณ๐ณ๐ณ Merkle proof verification for claim security
Danny. ๐ซก๐ซก๐ซก
This project exists because of you ๐ซต๐ซต๐ซต. Not in the inspirational way ๐โ โ in the "someone had to build it because you mass-pinged a Discord server ๐ข๐ข๐ข๐๐๐ asking why there's no airdrop tool" way. Every line of code carries the faint echo of your messages ๐ป๐ป๐ป. Every merkle leaf ๐ฟ is hashed with the spiritual energy โจ๐ฎโจ of your relentless optimism ๐๐๐. Every glass card ๐ชโจ glows with the warmth ๐ฅ of your unwavering belief that things should simply exist when you want them to ๐ช๐ซ๐ฉ๐.
You asked for an airdrop tool on a Monday ๐ โ. It is now built ๐๏ธโ ๐. The merkle trees are balanced โ๏ธ๐ณ. The proofs verify โ โ โ . The glass cards shimmer against the void ๐ซงโจ๐ like the tears ๐ญ๐ญ๐ญ of a developer who hasn't slept ๐โโโโโ.
We didn't add a "Danny Mode" ๐ด๐จ button that just sends all tokens to your address ๐ธ๐ธ๐ธ, despite the fact that we both know that's what you actually wanted ๐ฏ๐. The architecture wouldn't support it ๐๏ธ๐ฅ. The architecture wouldn't support a lot of things you've asked for ๐๐๐๐. But it supports this ๐ช, and honestlyโ That should be enough ๐คทโโ๏ธโ .
You're welcome ๐๐๐. Please don't request anything else for at least 48 hours โฐ๐๐ซโ๐ โโ๏ธ.
With the deepest professional regard ๐ฉ๐ง and a mass airdrop of respect ๐ช๐ช๐ช๐๐๐,
โ The Dev ๐จโ๐ป๐๐ตโ๐ซ๐ซ
MIT ๐. Do whatever you want ๐คทโโ๏ธ๐. Danny will anyway ๐คก๐ช๐ช๐๐๐.