OtterFi

Verify

Verify grants and removes access to a Telegram group or Discord role/channel based on real, on-chain wallet ownership - no manual review, no custody.

Product overview

A community sets one Access Policy: a rule (or set of rules) describing what a wallet needs to hold. A member proves they control a wallet, Verify checks that wallet's real holdings directly against the chain, and access is granted or denied automatically. Verify never asks anyone to hand over a private key or sign a transaction that moves funds - see Security for exactly how ownership is proven.

Supported platforms

Verify runs as a native bot on both Telegram and Discord. The two are configured and run independently - a community can use either or both.

Desktop and mobile verification

Verification happens in a browser, and works the same on desktop or mobile - the choice of method (connect a wallet vs. verify without connecting) matters more than the device. On desktop, connecting a wallet via WalletConnect is typically the fastest path. On mobile, verifying without connecting is usually smoother, since it avoids app-switching into a wallet app and back.

Wallet ownership verification

Verify offers two ways to prove ownership of a wallet:

  • Connect Wallet - connect your wallet and sign a standard sign-in message. Nothing is moved or spent; the signature only proves you control the wallet.
  • Verify without connecting - send a tiny amount of your chain's native token from your own wallet back to itself. No wallet connection, no signature request - just a transaction that proves you hold the private key.

Both methods only ever prove ownership. Neither one gives OtterFi custody of anything.

Live Membership

With Live Membership enabled, access updates automatically as ownership changes, instead of waiting for the next scheduled check. A qualifying purchase or a disqualifying sale is picked up from on-chain activity and triggers an immediate re-check.

DirectionTypical timeWhy
Access removed~1 minuteDispatched immediately - a false removal self-corrects on the next check anyway.
Access granted~3-20 minutes, depending on chainWaits for the chain's own confirmation depth first, so a purchase that gets reversed by a chain reorg never briefly grants access it shouldn't have.

Note

Live Membership is opt-in per community and off by default. Discord admins turn it on with /live_membership enabled:true; Telegram admins turn it on from the Community Console. Turning it off never revokes anyone - it only stops the faster, event-driven checks.

Automatic role assignment and removal

Whenever a wallet is checked - on a schedule, on a manual re-check, or via Live Membership - and it satisfies the Access Policy, Verify grants the configured Grant Target: a Discord role, a Discord channel, or a one-time Telegram group invite. If a wallet no longer satisfies the policy (the member sold or transferred out), access is removed the same way, automatically, without an admin doing anything.

Supported chains

Chain
Robinhood Chain
Base
Ethereum
Polygon

Coming Soon

Solana support is planned.

Community Console

On Telegram, every admin action - editing your Access Policy, pausing or resuming verification, deleting the community, and toggling Live Membership - lives in one place: the Community Console, reached from the bot's DM. Telegram has no typed admin commands beyond starting a chat with the bot; everything is a button tap.

Commands

Discord uses real slash commands. Telegram is entirely button-driven (a deliberate design choice - see Administration), so the table below covers Discord; the equivalent Telegram action is the corresponding Community Console button.

CommandWhoWhat it does
/communityAdminRegisters this server as a Verify community.
/policyAdminOpens the Access Policy builder and sets the Grant Target.
/portalAdminPosts the standing verification message to a channel.
/verifyAny memberStarts wallet verification - works in a server or by DM to the bot.
/reverifyAny memberRe-checks the caller's own wallet right now.
/pause / /resumeAdminFreezes or reactivates access checks for the community.
/live_membership enabled:true|falseAdminTurns Live Membership on or off.

Access Policies

An Access Policy is one or more requirement groups, combined with OR logic - a wallet qualifies if it satisfies any one group. Within a group, every requirement listed must be true (AND logic) - so you can express things like "hold this NFT AND that token", or "hold this NFT OR at least 100 of that token", in one policy. Each individual requirement is either:

  • An NFT requirement - hold at least a minimum quantity of a specific collection.
  • A token requirement - hold at least a minimum balance of a specific token.

A community has exactly one Access Policy at a time; editing it updates every future check immediately.

Reverification

Beyond Live Membership's event-driven checks, every wallet is re-checked on a regular schedule automatically, and any member can trigger an immediate re-check themselves with /reverify on Discord or the equivalent Community Console action on Telegram - useful right after a purchase if you don't want to wait.

Verification flow

  1. A member taps Verify (the portal message, or a command).
  2. They're taken to a page to prove ownership - connect a wallet, or verify without connecting.
  3. Verify independently re-checks that wallet's real, current holdings on-chain.
  4. If the Access Policy is satisfied, the Grant Target is applied automatically.
  5. If not, the member sees why, and can try again with a different wallet at any time.

Security model

Verify never takes custody of funds and never asks for a private key. Read the full Security page for exactly how both verification methods work and what data is stored.

FAQ

Can a member link more than one wallet?

Not today - each member has one verified wallet at a time. Verifying again with a different wallet replaces the previous one.

What happens if I turn off Live Membership?

Nothing is revoked. The community falls back to scheduled re-checks and manual reverification only.

Does Verify support ERC-1155 collections?

Not currently - collection auto-detection is scoped to ERC-721 and ERC-20 today.

Is there a cost to verify?

Verifying without connecting a wallet involves sending a tiny, self-transfer transaction, so the only cost is your own chain's network fee for that transaction - never a fee to OtterFi.