Daniel Pyrathon

Airdropping to Thousands Without Breaking the Bank

Daniel Pyrathon5 min read
Software Engineer at Farcaster • Founder of Bountycaster

Airdropping to Thousands Without Breaking the Bank

We were able to run multiple Solana airdrops and reduced costs by 99%—from ~$1,800 to ~$160 for 3,100+ users—using ZK compressed tokens.

TL;DR:

  • Solana airdrops cost ~$20K in rent for 50K users due to rent.
  • ZK compression eliminates rent. We paid $160 instead of $1,800 (and could have paid way less too).
  • Smart decompression = cost savings + good UX

The Problem

Every Solana token account needs rent—about 0.002 SOL ($0.40 when we ran our last airdrop) per recipient. Doesn't sound like much until you do the math. At Farcaster, we run campaigns that reward users with tokens. Airdropping to 50k users is 100 SOL ($20,000) in rent alone. Before transaction fees. We needed a way to airdrop at scale without burning money.

The Solution

Thanks to @slokh for recommending Light Protocol uses ZK compression to store token state in Merkle trees instead of individual accounts (no accounts = no rent).

Solana Airdrop: Traditional vs ZK Compressed ❌ TRADITIONAL SPL AIRDROP Escrow Wallet Create ATA for each user 💸 0.002 SOL rent Transfer SPL + tx fees User Wallet 3,100 USERS ~$1,800 rent + fees ✓ ZK COMPRESSED TOKEN AIRDROP Escrow Wallet Compress & Transfer No rent needed! ZK Merkle Tree State proof storage User Owns Compressed Tokens 3,100 USERS ~$160 priority fees only Optional: Decompress when user is ready Decompress → SPL User pays rent when ready 💰 99% COST SAVINGS $1,800 → $160 for 3,100 users Powered by Light Protocol ZK Compression

The numbers:

ApproachCost per user3,100 users50,000 users
Traditional SPL~$0.40 (rent)~$1,800~$20,000
ZK Compressed~$0.05 (fees only)~$160~$2,500

That's a 90-99% reduction depending on scale.

The UX Dilemma

Here's the catch: most Solana wallets don't support compressed tokens too well, and neither does Farcaster's wallet. Users need to "decompress" them into standard SPL tokens before trading or using DeFi - which creates a lot of confusion and friction for users.

  • Force users to decompress themselves? creates an extra step that is confusing and creates friction for users.
  • Leave them compressed forever? creates a bad UX because user's can't send/swap/stake the tokens until they decompress them.

We needed a smarter approach.

Adaptive Decompression

We check the user's wallet balance and adapt:

if (walletBalance >= RENT_THRESHOLD) {
  // Power user - decompress now for seamless UX
  await decompressTokens({ wallet, mint, immediate: true });
} else {
  // New user - they'll decompress when they fund their wallet
  await notifyUserOfCompressedTokens(wallet);
}

Power users (wallets with SOL) get decompressed tokens right away. New users get their tokens too—they just decompress later when they're ready. We pay no rent at all and let the user decompress on their schedule. The key insight: compressed tokens are fully owned by the recipient. They decompress on their schedule, not ours.

Making It Reliable

Production systems need more than clever compression. We built in:

Idempotency: Deterministic workflow IDs mean the same airdrop request always maps to the same execution. Click "claim" 10 times? You still get one airdrop.

Retry logic: Exponential backoff + jitter handles RPC outages without hammering providers.

Simulation: We simulate every transaction before submission.

Results

After deploying this system:

  • 3,102 users received tokens across 4,539 transactions
  • $160 total cost vs ~$1,800 with traditional methods
  • Zero duplicates despite network issues and retries
  • Sub-second claims for users with funded wallets

The system survived campaign launches with thousands of concurrent claims, RPC outages, and deployments—without losing track of a single airdrop.

What We Learned

Cost optimization ≠ bad UX. Adaptive decompression gives you both. Don't accept the tradeoff.

Idempotency is non-negotiable. In airdrop systems, duplicates are unforgivable. Build deterministic IDs from day one.

Simulate before you send. Catching errors before on-chain submission saves money and gives better error messages.


If you're building on Solana and airdrop costs are killing your margins, compressed tokens are worth exploring. Light Protocol has been pretty easy to use in production thanks to Helius's RPC (not Helium lol), and the savings change what's economically viable.


For implementation details, check out the Light Protocol docs.