FAQ
How much does creating a drop cost?
Two transactions of gas — nothing else. Droppie charges no protocol fees:
- Deploy — your wallet deploys the
DroppieDropcontract (a few hundred thousand gas) - Fund — a plain ERC-20
transferof the total into the drop (~50k gas)
Crucially, cost is flat: a 100,000-recipient drop costs the same to create as a 10-recipient one, because only the 32-byte Merkle root goes on-chain. On L2s (Base, Arbitrum, Optimism) creation typically costs a few cents.
Who deploys the drop contract?
You do, from your wallet. There is no factory and no Droppie-owned deployer: the create wizard sends a contract-creation transaction signed by your wallet, and the deploying address becomes the drop's creator — you own the contract from block one. The same goes for tokens made with the Token Alchemist (you're the token's owner). This is also why Droppie works on any EVM chain: there's no pre-deployed infrastructure a chain could be missing.
Who pays for claims?
Each recipient pays their own claim transaction — roughly 90k gas (proof check + one token transfer). That's the pull-model trade-off that makes creation costs flat. Anyone can submit a claim for a recipient (e.g. you can sponsor gas for your community), but tokens always land in the recipient's address.
Are the contracts audited?
No third-party audit has been performed. The contracts are intentionally small, built on OpenZeppelin v5 primitives (SafeERC20, MerkleProof, ERC20Burnable, Ownable), covered by a Foundry test suite with fuzzing, and completely open source — but you should treat them as unaudited software. Do your own review (they're short reads) and don't commit funds you can't afford to lose. Found something? See SECURITY.md in the repo for responsible disclosure.
What happens to unclaimed tokens?
They stay escrowed in the drop contract until claimed or swept. If you set an endTime, claiming stops at the deadline and you can call sweep to recover the remainder to any address. If you set no deadline (endTime = 0), the drop runs forever — and as an escape hatch, you (the creator) may sweep at any time. Nobody else can ever sweep.
Can I edit a drop after launching it?
No. The token, Merkle root, claim window, and metadata URI are fixed at deployment (most of them literally Solidity immutables) and there is no admin function to change them — that immutability is exactly what makes a Droppie drop trustworthy to recipients. Made a mistake? Sweep the funds back (subject to the sweep timing rules) and create a new drop with a corrected list.
Which chains are supported?
Any EVM chain. Switch your wallet to the network you want and Droppie deploys there — it recognizes the chain automatically (metadata comes from the public chainlist registry, with a generic fallback for chains it has never seen). Ethereum, Base, Arbitrum One, Optimism, Polygon, Sepolia, and Base Sepolia come pre-configured with curated RPCs and explorer links; everything else works through your wallet's own connection. This is possible because there is nothing to pre-deploy: your wallet deploys the chain-agnostic Solidity ^0.8.24 contracts itself.
How big can my CSV be?
The Merkle tree is built in your browser, and tens of thousands of rows are comfortable on ordinary hardware — a 50,000-row list builds in seconds. Above ~100k rows, browser memory becomes the bottleneck; build the tree with the SDK in Node instead and create the drop from a script. On-chain cost doesn't change either way.
How are token decimals handled?
Your CSV uses human units (250.5 tokens). Droppie reads your token's decimals() and scales every amount to raw wei before building the tree — 250.5 with 18 decimals becomes 250500000000000000000. The distribution JSON and all contract calls use the raw values. You never write wei by hand, and you should sanity-check the total shown in the Review step against what you intend to spend.
Why does my proof fail?
InvalidProof means the (address, amount) pair you submitted is not a leaf of the on-chain root. In practice it's one of:
- Mismatched distribution file — the JSON you loaded isn't the one for this drop (or was regenerated after deployment). Verify
merkleRootin the file against the contract'smerkleRoot();loadTreeFromDistributionmakes this a one-liner. - Wrong amount — the amount must be the exact raw-wei value from the tree, not a rounded or re-derived number.
- Wrong drop or chain — same list deployed on two chains means two different drops; use the claim link's chain and address.
- Manual proof construction — if you rolled your own tree, remember the double-hashed leaf:
keccak256(bytes.concat(keccak256(abi.encode(address, amount)))), via OpenZeppelinStandardMerkleTree.
The claim page handles all of this automatically — manual proofs are only needed for custom integrations.
Is Droppie custodial? Where do my tokens actually sit?
Non-custodial, always. You deploy the escrow contract from your own wallet, and your budget moves directly from your wallet into it via a plain transfer you send. There is no shared pool, no Droppie-owned wallet in the path, and no admin key over the escrow — the only outflows are valid claims and your own sweep. Details.
What if the distribution file becomes unreachable?
The on-chain drop is unaffected — the root, funds, and claim logic don't depend on the file's availability. Claimers just need some copy of the distribution JSON to compute proofs: the claim page accepts a manual file upload, and any copy can be verified against the on-chain root, so it doesn't matter who hosts it. Creators: keep a copy of your distribution JSON, and consider pinning it in more than one place.
Should I self-host or use the hosted app?
The hosted app at droppie.notcool.in is the same open-source code deploying the same permissionless contracts — there's no feature gap and no fee either way. Self-host if you want your own domain and branding, your own WalletConnect/Pinata keys, your own chain list, or zero reliance on Droppie's infrastructure. The self-hosting guide takes about ten minutes.
Can someone claim my allocation?
No. A claim pays out only to the address proven in the leaf — claim(account, amount, proof) transfers to account regardless of who submits it. Nobody can redirect your tokens; the worst a stranger can do is pay your gas for you.
Something not covered here? Open an issue — FAQ entries start life as questions.