How to make an airdrop claim sybil-proof
You are launching a token and do not want farmers taking the majority of the supply.
The problem
Most drops lose the majority of allocation to multi-wallet farmers. CAPTCHAs stop nobody who is motivated, and KYC drives away exactly the users you wanted while creating a data-breach liability.
Step by step
1. Decide the threshold
Model it against your snapshot first: run the eligible list through the API in batches and look at the distribution before you pick a cutoff.
for a in $(cat snapshot.txt); do curl -s https://api.trstlyr.com/v1/verify -H "x-api-key: $TRUSTLAYER_KEY" \ -H "content-type: application/json" -d "{\"address\":\"$a\"}" \ | jq -c '{a:"'$a'",s:.trust_score,u:.unique_interactions}' done > scored.jsonl2. Gate the claim API
Reject below-threshold claims server-side before you ever sign a claim voucher.
const { trust_score } = await tl.verify({ address }); if (trust_score < 45) { return new Response(JSON.stringify({ error: "reputation_too_low" }), { status: 403 }); }3. Or gate on-chain
Read the anchored score straight from the registry inside your claim function.
interface ITrustRegistry { function scoreOf(address) external view returns (uint256); } require(registry.scoreOf(msg.sender) >= 45, "reputation too low");4. Give rejected users a path
Link them to their profile so they can earn vouches and re-qualify. This turns a hard rejection into onboarding instead of churn.
Share the proof
Once you are live, show it. This badge stays up to date on its own and links visitors back to the verifiable profile behind the score.
<a href="https://trstlyr.com/u/your-handle">
<img src="https://trstlyr.com/badge/your-handle.svg" alt="Verified on TrustLayer" height="28" />
</a>Frequently asked questions
Next recipes
All 6 recipes are on the API recipes index.