Academy

How to Run an Airdrop That Doesn't Get Farmed

For the team running the airdrop: what farming detection actually catches, what paraphrasing walks past, and how to design rewards farmers stop wanting.

Zealy article cover on a dark textured background reading: The airdrop farmers came anyway — what catches them, and what does not.
On this page

Who this is for: the team distributing the tokens, not the person farming them. Search "airdrop platform" and the whole first page is written for the hunter — upcoming drops, guides to farming them, wallets to farm with. Almost nothing is written for the project on the other end, which is the side that has to decide who gets paid.

Short answer: You will not out-detect the farmers. Optimism and LayerZero spent more on that problem than you will and both arrived late. What works is changing the shape of the reward so grinding it stops paying — gates, caps, floors, and payouts that favour depth over volume. Detection is the backstop, not the plan.

Disclosure: Zealy publishes this and Zealy sells a quest platform used to run campaigns like these. Every claim about what Zealy does was read out of Zealy's own source code on 15 August 2026, not from Zealy's marketing pages. That includes the parts where Zealy's controls do nothing, and one page in Zealy's own documentation that is wrong. It is corrected below.

Last verified: 15 August 2026.

Can you catch airdrop farmers before the tokens go out?

Not reliably. Optimism removed 17,000 addresses from an airdrop it had announced with 250,000 eligible, and called that one more pass rather than the last. LayerZero, working with Chaos Labs and Nansen, still needed an amnesty and a paid bounty to reach 803,093 flagged addresses. Those are the best-resourced anti-sybil operations in crypto, and detection still arrived late and partial.

The Optimism number comes from The Block's May 2022 report, which says Optimism "has removed 17,000 addresses that it thinks were traders trying to deliberately game the system." The same article notes that on 26 April Optimism "announced its airdrop, saying that 250,000 addresses were eligible," and that "the tokens that would have been sent to these wallets will be redistributed among the remaining eligible wallets." Resist dividing one number by the other anyway: the report never states a post-removal total, describes this as removing 17,000 more addresses in an ongoing process, and does not say how any of them were identified.

LayerZero is the more instructive case because LayerZero published its method. In a LayerZero post quoted by crypto.news in May 2024, the figure came from "the sybil self-report and analysis by LayerZero, @chaos_labs, and @nansen_ai." LayerZero had initially flagged over 2 million addresses before applying stricter criteria, and described the result as preliminary rather than final. Self-reporters were offered 15% of their intended allocation to come forward, with the other 85% returning to qualified users. The bounty paid 10% of a reported sybil's allocation, to the first eligible reporter of each address, for submissions of at least 20 addresses supported by what LayerZero called "a transparent and robust methodology."

Read that structure again. A protocol with two specialist analytics firms on the job still paid farmers to identify themselves, and paid other people to identify them. The Block reported that up to 100,000 addresses self-reported, against a snapshot that found 6 million unique wallet addresses had interacted with LayerZero.

Resist the urge to turn any of this into a percentage. 803,093 against 6 million interacting wallets and 803,093 against the final qualified set are different denominators, and neither source prints the ratio. Every "X% of airdrop claimants are sybils" figure you have read was probably assembled the same way — a numerator from one page, a denominator from another.

Why airdrop farming pays in the first place

Farming pays because the token is liquid the moment it lands. In an academic study of nine airdrops, Lido had the highest liquidation rate at 65.75%, followed by 1inch at 58.67% and Optimism at 48.21%. For most of the protocols studied, the median span between a recipient's first and last token transfer was zero days.

Those figures come from "Airdrops: Giving Money Away Is Harder Than It Seems" by Johnnatan Messias, Aviv Yaish and Benjamin Livshits, which analysed distributions by 1inch, Arbitrum, Arkham, DYDX, ENS, Lido, Optimism, Tornado Cash and Uniswap. The paper finds that "most of the funds received through these airdrops are sold on exchanges in the first airdropped token transfer," and that "on average, tokens were typically sold on exchanges within 1.17 to 2.76 transfers after being received, with a median of 1 to 2 transfers." Those are per-protocol averages of the graph distance from a recipient to an exchange, so read them as how few steps the tokens took, not as a range any single person sat in.

The zero-days median is the part worth sitting with. For most recipients across most of those protocols, the entire relationship with the token started and ended on the same day. Farmers did not invent that behaviour. They are just better resourced than everyone else at doing it.

So the question stops being "how do I identify the farmers" and becomes "why is the first thing my token does after landing worth more than anything else it could do." Everything below follows from that.

Design the reward so farming stops paying

The design that survives farming does not out-detect farmers. It changes the payoff. Zealy communities have published five shapes that work: a quest board that rewards a hunter less the further they go, an XP-weighted raffle, per-hour and per-user volume caps, a hard engagement floor with human review, and paying nothing at all early.

Make the board get worse for hunters as it goes. The clearest statement of this in Zealy's case-study library comes from DEN, whose team describes building a board that is not spam- or airdrop-hunter-friendly, so that "the more you proceed, the less being an airdrop hunter benefits you." The mechanic is ordinary: early quests are cheap and open, later quests demand time, judgement or a reviewed submission. The farmer's cost per unit of reward climbs while the contributor's falls.

Weight the draw instead of ranking it. DIA DAO runs monthly sprints with eight token rewards and does not hand them to the top eight. Its team counts "every XP point as the imaginary entry ticket for a raffle. So more XP — the better chances, but even if you have completed only one Quest in the sprint, you still have a chance to win the reward." This kills the specific incentive that produces industrial farming: a hard leaderboard cutoff pays you to run more accounts, because rank 51 gets nothing and two accounts at rank 40 beat one at rank 20.

One honest caveat, because it matters if you try to copy it. Zealy's built-in raffle reward method is a uniform random draw over successful claims — every successful claim carries the same weight — and sprint payouts are rank-based or XP-proportional with no raffle option. DIA DAO's ticket-per-XP draw is a design its team describes, not a switch you flip in the Zealy dashboard. If you want it exactly, you export the leaderboard and draw it yourself.

Cap the metric you are paying on. RIZE ran a trading campaign whose published spec lists, under fair play, "Volume caps enforced per hour and per user to limit abuse." A per-hour cap is the underrated half. A per-user cap tells someone to run more accounts; a per-hour cap makes every account slower at once, which is the harder constraint for a farm to buy its way around.

Put a measured floor under the reward. TokenForge required creators to hold at least 1,000 followers, paid only for posts that achieved at least 750 impressions and 30 likes, and reviewed submissions for originality using AI tools plus human verification, rejecting low-effort and AI-generated content. The generalisable part is not the numbers. It is that the bar was written down before anyone submitted, as a figure both sides could check. (The creator-campaign version of this argument, including what bought engagement does and does not clear, is in how to grow followers on X for a crypto project. This post stays on the distribution side of it.)

Consider paying nothing yet. ArcherSwap offered whitelist spots rather than money or tokens, and says so directly: "One of our strategies is not to offer such prizes to Users at an early stage." An airdrop that has not been announced cannot be farmed. Until you have committed to a number, a date and a formula, there is nothing for anyone to farm toward, and giving that position up should be a decision rather than a default.

Two more patterns worth naming. $WALLET's MEXC campaign carried no social tasks at all and rewarded trading only — if the behaviour you want is on-chain and measurable, quests that pay for tweets are just a second surface to farm. And Sturdy Finance reports 250 submissions with about 80 contributors continuing to participate in its first month, which is the number most teams should want. Eighty people who stayed is a better distribution list than eight thousand who claimed once.

What Zealy's anti-farming controls actually catch, and what leaks through

Zealy catches duplicate answers by exact match after normalisation, flags identical text and file submissions to reviewers, enforces per-quest claim limits and X engagement minimums, and restricts accounts that reuse the same email, wallet or social account. None of the controls a community can configure looks at IP address, device fingerprint or submission timing.

Here is the control-by-control version, read from the code rather than the docs.

ControlWhat it catchesWhat passes straight throughWhere it is set
Duplicate-answer rejectionThe identical answer submitted again, after lowercasing and stripping accents, URLs, @mentions and punctuationAny paraphrase. The comparison is a hash of the normalised text, so one changed word is a different answerPer task, on Text, URL, Quote Tweet, and Tweet Reaction with the reply action
Reviewer duplicate alertsAn identical Text or File submission from another member, or a member reusing their own earlier submissionRewritten submissions. There is no similarity scoring, no embeddings and no near-duplicate detectionText and File tasks only, behind a per-community flag
Proof of HumanityAccounts with no Zealy avatar or name, no email, no linked X account, no X avatar, fewer than 50 following or fewer than 10 followers, plus profiles an AI model reads as automatedA warmed X account that clears those bars. It reads no Zealy activity at allPer task
Account-reuse restrictionOne person recycling the same email, wallet or social account across several Zealy accountsOne person operating several genuinely separate identities. It correlates shared identifiers, so it sees recycling rather than multiplicationPlatform-wide, automatic
Required connectionsMembers who have not verified email, wallet, Discord, X, Telegram or X PremiumAnyone willing to do that verification once per identityCommunity security settings
X engagement minimumsPosts below an admin-set floor on likes, impressions, replies or retweetsEngagement bought or traded up to the floorPer X task. Zealy sets no default, so a quest without one has no floor
Quest conditionsX accounts younger than N days or below N followers, members below a level, members without a required roleAnything that satisfies the conditionPer quest
Claim limit and cooldownOne account claiming beyond the cap, or again inside the cooldown windowSeparate accounts each claiming oncePer quest
BanThe banned member, in the community that banned themThe same person everywhere else on Zealy. Bans are per-community and there is no global banPer community

Four things are worth stating plainly, because the table can be read as more reassuring than it is.

Duplicate detection is exact-match. Zealy normalises a submission — lowercase, accents stripped, URLs and @mentions and punctuation removed, whitespace collapsed — then hashes it and compares hashes. That defeats copy-paste and light cosmetic edits. It does not defeat a paraphrase, and it is not meant to. Anyone running an LLM over their own answer before submitting walks past it. If open-ended answers are load-bearing in your distribution, the review queue is doing the real work and you should staff it accordingly.

Reviewer alerts are the same technique with a nicer surface. They tell a reviewer that this exact Text or File submission appeared before, either from another member or from this one. There is no scoring, no threshold, no "82% similar." An alert means identical, and silence does not mean original.

Zealy correlates identifiers, not people. Each email, X, Discord and Telegram account links to exactly one Zealy account — wallet addresses are checked in application code rather than enforced by the database, so treat that one as a speed bump. Signups from known disposable email domains are rejected, and accounts that share identifiers across multiple Zealy accounts get restricted. Every one of those catches the same failure: one person reusing something. None of them catches one person who has genuinely separate emails, wallets and social accounts per identity, which is what a competent farm has. Nothing in the controls you can configure falls back on IP correlation, device fingerprinting or submission timing. Zealy does run internal monitoring over its own platform-level financial activity, but that is Zealy's fraud tooling and not a lever a community operates.

There is no allowlist. No Zealy quest can be limited to a fixed roster of wallets or user IDs, and there is no token-balance condition either. If your airdrop design starts with a snapshot, Zealy is not where you enforce it — you enforce it in your own distribution contract and use Zealy for the part that happens before the snapshot.

One more piece of plumbing, since it changes who is responsible for what. Zealy decides who won; for a project's own token, the project sends. That division, the exports that do and do not carry a wallet address, and what Zealy checks when you record the payment are covered in how to distribute tokens to active members.

Proof of Humanity is a bot filter, not a sybil filter — and Zealy's own docs said otherwise

Zealy's Proof of Humanity task checks that an account has a Zealy avatar, a name, an email address and a linked X account with an avatar, then screens the X profile and its last 10 posts with an AI model. It reads no Zealy activity at all. It is a bot filter, not a sybil filter.

The numeric bars are the two follower checks. An account following fewer than 50 accounts on X fails. An account with fewer than 10 followers fails. Both comparisons are strict, so an account following exactly 50 passes and an account with exactly 10 followers passes.

That is the whole of it. A cheap automated account fails. An aged X account that clears those bars passes, and nothing downstream re-examines it, because Proof of Humanity never looks at what the account did on Zealy — not claims, not quests, not XP, not timing, not velocity. Whatever the account does after passing, the task has already finished having an opinion about it.

One more property worth designing around: the X-facing checks fail open. If the X profile cannot be fetched, or the timeline lookup errors, the account is treated as human rather than held back. That is a defensible default for a task nobody wants blocking real people on a bad API day, and it does make this a filter rather than a gate.

Which brings us to a correction we are publishing about ourselves. Until this post went out, Zealy's own Proof of Humanity documentation stated that the task "analyzes both the user's Zealy activity patterns and their Twitter account authenticity," and described a Zealy Activity Analysis reviewing activity patterns across all communities. The code does none of that. The service reads the Zealy profile picture, the display name, the email row and the X account, and nothing else. That page has been rewritten in the same change as this post. If you chose Proof of Humanity because the old wording said it inspected behaviour, re-read your design.

What a dedicated sybil-resistance tool looks like, for comparison. Human Passport describes itself as "an identity verification application and Sybil resistance protocol," aggregating "KYC, biometrics, web3 activity, web of trust, and web2 activity Stamps" into a score. That is a different order of thing from two follower-count thresholds and a model reading ten tweets. Zealy's Proof of Humanity is not in that category and nobody should deploy it as though it were. If sybil resistance is the requirement rather than bot filtering, use something built for it. LayerZero's answer was Chaos Labs and Nansen, and even that needed an amnesty.

How to set up an airdrop on Zealy so farming does not pay

Build the airdrop as a set of gated quests rather than one open claim. Gate on X account age, follower count or a completed prior quest. Cap claims per quest. Add cooldowns and recurrence limits. Require a verified email, wallet and social account before anyone can claim. Then price the reward so grinding is not worth it.

1. Turn on required connections first. In community security settings you can require a verified email, a blockchain address, Discord, X, Telegram or X Premium before anyone claims anything. Each of those accounts links to exactly one Zealy account, so every requirement you add multiplies the cost of an extra identity. It is the cheapest place in the product to raise the price of a second identity, which is why it belongs before the quest design rather than after it.

2. Gate the quests that carry real reward. Zealy accepts seven condition types — completed quest, level, role, date, NFT holding, X follower count and X account age — combined with AND or OR. For an airdrop the two that bite are X account age and a completed prior quest. Age is expensive for a farm to fake retroactively; a prior-quest condition forces sequence, which is how you express DEN's "the more you proceed, the less it benefits you" idea in Zealy's own settings. Level conditions accept above-or-below only, and NFT gating is Polygon-only. Zealy's docs listed six of these until this post went out — X account age was missing — and that page has been corrected in the same change.

3. Set claim limits, recurrence and cooldowns deliberately. A claim limit is an integer where 0 means unlimited, and it is enforced in the database rather than the interface. Recurrence is once, daily, weekly or monthly — there is no hourly option. Cooldowns come from a fixed list running from none up to 30 days, plus a never option. Recurrence plus a cooldown is the closest thing Zealy has to RIZE's rate limit: it slows every identity down at once, without handing anyone a reason to go and get more of them.

4. Put a number on every X task. Zealy's Tweet, Quote Tweet and Tweet Reaction tasks each accept a minimum on likes, impressions, replies or retweets, and Zealy ships no default. A quest without one accepts any post that exists. Whatever you set will be gamed at the margin; the point is that it stops being free.

5. Choose the reward method for the incentive it creates. Zealy offers five reward methods set per reward: All, First Come First Served, Raffle, Top and Vote. First Come First Served and Raffle cap at 1,000 winners, Top caps at 1,000, and Vote has no upper bound. All plus an engagement minimum gives you TokenForge's shape — a fixed price for anything that clears the bar. Raffle removes the rank cliff that pays farmers to run parallel accounts, at the cost of a uniform draw rather than a weighted one. Top is the one to think hardest about, because a hard cutoff at rank N is precisely the structure DIA DAO decided against.

6. Staff the review queue, or don't ask open questions. Duplicate rejection catches copies and the reviewer alert catches identical text. Everything else — a paraphrase, a plausible-but-empty answer, a translated copy — is caught by a person reading it or by nobody. Zealy's review docs cover the queue, the verdicts and bonus XP. If you cannot staff it, use tasks with a verifiable outcome instead of tasks with an opinion in them, the way $WALLET's campaign did. And before you hand the queue to a community member, read what the Reviewer role costs you in how to run a crypto ambassador program — it comes with the member list attached.

7. Decide who you are actually paying, before you announce. This is a distribution-design question rather than a filtering one, and each answer breeds its own farm. A rank cutoff pays people to run parallel accounts, because the marginal account can always be worth more than the marginal effort. A flat per-claim payout pays for volume instead, so you get breadth and very little depth. A weighted draw gets a milder version of both, which is the honest case for it.

The honest summary is that none of this makes an airdrop farm-proof, and any vendor telling you otherwise is describing a product that does not exist. Optimism removed 17,000 addresses after the fact. LayerZero paid people to confess. What you can do is make your airdrop the least profitable one on the farmer's list that week, and make sure the people who stayed after the token landed are the ones holding most of it. If you are working out who those people are, finding quality contributors for web3 projects is the companion piece.

FAQs

You limit what farming earns rather than trying to identify every farmer. The controls that work are structural: gate rewarding quests on X account age or a completed prior quest, cap claims per quest, add cooldowns so each identity moves slower, put a measured floor under any social task, and prefer a weighted draw over a hard leaderboard cutoff. A rank cutoff pays a farmer to run more accounts; a draw does not. Detection is the backstop.

Zealy detects identifier reuse, not sybil networks. Each email, X, Discord and Telegram account links to exactly one Zealy account, disposable email domains are rejected at signup, and accounts sharing identifiers across several Zealy accounts get restricted. That catches one person recycling accounts. It does not catch one person operating genuinely separate identities, and no control a community can configure looks at IP address, device fingerprint or submission timing. For dedicated sybil resistance, use a protocol built for it such as Human Passport.

No. Proof of Humanity is a bot filter. It checks for a Zealy avatar, a name, an email address and a linked X account with an avatar, then screens the X profile and its last 10 posts with an AI model. Accounts following fewer than 50 on X fail, as do accounts with fewer than 10 followers; both comparisons are strict, so exactly 50 and exactly 10 pass. It reads no Zealy activity at all, and its X-facing checks fail open when the X API errors. Zealy's documentation used to say it analyses Zealy activity patterns; that page has been corrected.

It stops copies, not paraphrases. Zealy normalises a submission — lowercase, accents stripped, URLs, @mentions and punctuation removed, whitespace collapsed — then compares hashes, so the match has to be exact after normalisation. Rewriting an answer in different words produces a different hash and passes. It is an optional per-task setting covering Text, URL, Quote Tweet and Tweet Reaction with the reply action. Reviewer alerts work the same way on Text and File tasks, with no similarity scoring behind them.

Optimism removed 17,000 addresses in May 2022 from an airdrop it had announced with 250,000 eligible, redistributing their tokens to remaining eligible wallets. The reporting gives no post-removal total and does not say how the addresses were identified. LayerZero combined its own analysis with Chaos Labs and Nansen, offered self-reporting sybils 15% of their intended allocation, and paid a bounty of 10% of a reported sybil's allocation to anyone reporting at least 20 addresses. It reached 803,093 addresses flagged as potential sybils after narrowing an initial pool of over 2 million, and called that result preliminary rather than definitive.

No. Zealy has no member allowlist or whitelist on a quest, and no token-balance condition you can set. Quest conditions cover completed quests, level, role, date, NFT holding on Polygon, X follower count and X account age. If your distribution starts from a snapshot or a holder list, enforce that in your own distribution contract and use Zealy for the participation that happens before the snapshot. Note also that for token rewards Zealy records the winner and the address to pay but does not send the token; you send from your own wallet and paste the transaction hash back in.