The part nobody warns you about: deciding who gets tokens is easy. Actually delivering them to thousands of wallets without running out of gas, paying someone twice, or funding an army of fake accounts is the entire engineering problem.
Push or claim — decide this first
Every airdrop is one of two shapes, and the choice determines your cost, your risk and your code.
| Push (you send) | Claim (they collect) | |
|---|---|---|
| Who pays gas | You, for every recipient | The recipient |
| Cost at 10,000 wallets | Ten thousand transfers | One contract deployment |
| Unclaimed tokens | Impossible — everyone gets them | Typically 40–70% go unclaimed |
| Failure mode | A batch dies halfway and state is unclear | People miss the window and complain |
| Feels like | A gift | A task |
| Right when | Small lists, or the gesture matters | Large lists, or gas cost is prohibitive |
Most large airdrops use claim with a merkle proof: publish a root on-chain, give each eligible wallet a proof, and let them collect. It moves the cost to the recipient and scales to any list size. Push is warmer and simpler, and it is the right answer for a few hundred people.
The five stages of a distribution
| 1 | Snapshot Freeze the eligibility data at a fixed block or timestamp and publish that fact. Anything you compute later is contestable. |
| 2 | Eligibility rules Write them before you look at the data. Rules invented after seeing who qualifies always look self-serving, because they are. |
| 3 | Sybil filtering Cluster wallets by funding source, timing and behaviour. Expect to remove a substantial share of the list. |
| 4 | Distribution Push in batches with idempotency, or publish a merkle root and let people claim. |
| 5 | Reconciliation Prove afterwards that what left the treasury matches what the rules said. Without this you cannot answer a single dispute. |
Where distributions actually break
The first row is the one that ruins projects. A distribution script must be able to answer “has this wallet already been paid?” before every single transfer, and answer it from persisted state rather than from memory. Any script that loops through a list and sends will eventually be re-run after a failure and pay a chunk of the list twice.
Sybil resistance, realistically
Published analyses of major airdrops routinely find that a large share of claimants are linked wallets rather than distinct people. You will not eliminate this. What you can do is make it expensive enough that the return is not worth it.
The signals that work in combination: funding source (many wallets funded from one address), timing clusters (accounts created within minutes), behavioural sameness (identical transaction patterns), and interaction depth (one qualifying action versus sustained use). None is conclusive alone. Scored together they remove most of the cheap farming while keeping false positives low enough to handle by appeal.
Where ShipWeb3 fits
ShipWeb3 does not sell a token-distribution contract. What it sells is the layer around it — the thing that decides who earned an allocation and pays them.
The Instant USDT Paying Telegram Bot is a working mass-payout pipeline: BEP-20 USDT sent from a wallet you own, key encrypted at rest, with batching and per-user records. The referral bot contributes the sybil scoring — account age, device fingerprint and joining velocity, with a held-for-review queue. The play-to-earn app gives you the qualifying activity itself, so allocations reflect participation rather than a wallet snapshot.
All unobfuscated PHP 8 and MySQL, one-time purchase, free lifetime updates.
Common questions
The payout layer, already built Mass USDT payouts from your own wallet, with batching and per-user records. See the USDT payout bot |