Keep bots and sybils out
Keep bots and multi-account farmers out of a Discord, Telegram group, airdrop or allowlist by combining wallet history, account age, World ID, attestations, scores and the Verified person badge.
To keep bots and multi-account farmers (sybils) out of a Discord server, Telegram group, airdrop or allowlist with Guild, put the reward behind a role whose requirements are hard to fake together: wallet history (a first transaction long ago, a transaction count, a balance held without a break), the age of the member's X, Discord or GitHub account, a World ID, an EAS attestation, a Community Intelligence score, or the Verified person badge, which a person at Guild grants after reviewing an account by hand. Guild checks members against those requirements, and only members who meet them get the role and what it unlocks. You decide how strict to be.
What is hard to fake
A fresh wallet or social account costs a farmer almost nothing. History, real activity and proof of one human cost much more. These requirements ask for them:
| Signal | Requirement to add | Details |
|---|---|---|
| Wallet age | Onchain activity, First transaction before a date | Wallet activity |
| Real onchain use | Onchain activity, Transaction count or Contract call on a chain | Wallet activity |
| Long-term holding | Held continuously for a number of days, or Held at a past block (Ethereum and Base only) | Holding history |
| Social account history | X Created At or Followers Count, Discord Account age, GitHub Account age or Commit count | X, Discord, GitHub |
| One unique human | World ID Profile, Verification Level Orb | World ID |
| Your own checks | Be attested by: an EAS attestation from your verifier's or KYC partner's address | Attestations |
| Reputation | Community Intelligence Score, Trust Score, read for the member's X account | Scores |
| History on Guild | Be a verified person, Be a Guild user since, Profile level | Guild activity |
A wallet or social account can be linked to only one Guild account at a time, so one aged X or GitHub account can't make several Guild accounts qualify at once.
Set up a gated role
- Create a guild, or open your guild's admin panel.
- Open Spaces & roles, choose New role and pick Empty role. A new role is open to everyone who joins until you add its first requirement.
- Under Who gets it, press Requirement, pick a type from the table above, fill in its form and press Add requirement. Repeat for each check.
- Above the list, set Members should meet. All is the strictest. Some, for example 3 of 5, lets a real person who lacks one signal still qualify.
- For "World ID Orb, or an old wallet and an old X account", press Group, put the requirements in groups and set Members should meet inside each group and once more at the top.
- Under Unlocks, press Add reward and pick a Discord role, a Telegram group, points, an NFT or another reward. See Rewards.
- Press Save.
Members who don't meet a requirement see it marked Not met on the role card. When a member later stops meeting the role's requirements, Guild takes the role away, with its Telegram group and its Discord role, unless that reward has Keep role once earned on.
Block wallets you already know
To keep out a list of known farmer wallets or email addresses, add an Allowlist requirement, upload a .txt or .csv file with one wallet or email address per line, and choose Should not satisfy. It then works as a blocklist: everyone except the people on the list meets it. A member matches with any wallet or email connected to their Guild account. See Allowlist.
One filter for many rewards
Put the checks on one role, for example "Eligible", and make your other roles require it with Have a role from the Guild group. Change the filter once and every role that depends on it follows.
On a paid plan you can set that role to Hidden under Who can see it. Only admins see a hidden role, so members can't read your filters and work around them.
Airdrops, allowlists and referrals
- Snapshots. Held at a past block checks a balance at a block or moment you choose. Buying after the snapshot doesn't help.
- Scarce rewards. Under How many get it, Only the first members closes a role once that many members have it. Keep the filters on that role too.
- Export the list. In Members, choose the Roles audience, pick your gated role, press Export audience, then Export CSV. Download it with Download CSV. See Members and analytics.
- Referrals. In Admin, Referrals, switch on Only verified people count when invites earn something worth farming. Who invited whom shows each inviter's invitations and whether they count. See Referrals.
Tune how strict it is
Under Who gets it, Why members miss it shows how many members meet each requirement, how many don't, and how many haven't been checked yet. The one most members miss is marked Most miss: check it isn't keeping out real people too.
Adding a requirement to a role people already hold changes who qualifies: members who no longer qualify lose the role and its rewards when they are next checked. Create a new role or tell your members first.
FAQ
Can Guild stop every bot? No. Each requirement raises the cost of faking an account, and combining several raises it further. Match the strictness to what the reward is worth.
Do members have to go through KYC? Not unless you ask for it. Guild collects no identity documents; the Verified person review looks at account history. If you or a partner verify people and issue EAS attestations, Be attested by turns those attestations into a requirement.
How does the Verified person badge work? A member with Guild Plus asks for a review from Account, Verified person, and a person at Guild reviews the account by hand. Any guild can add Be a verified person to a role; members without the badge see a Get verified link. See Verified person.
Which plan do I need? Discord and Telegram rewards, every requirement in the table above, allowlists, referrals and member exports work on the Free plan. Custom API call and Submitted a form need Pro, and hidden roles need Starter or above. See Plans.
Can I use my own sybil scoring? Yes. On Pro and above, a Custom API call requirement asks your own API about a member, so your own score can decide who gets the role. See Custom API call.