Live gate · Sui testnet · checked in your browser

This airdrop only
pays humans.

Below is a demo airdrop claim gated by PoR. The check is real — your browser asks the Sui blockchain whether the claiming address holds a valid Proof-of-Real credential. Bots get a wall. Humans walk through.

DemoDrop
a pretend token with a very real gate
1,000 $DROP
per verified human
⛩️ Gate: require_verified(L0+) — genuine device + live human, unexpired
What just happened

The gate is three lines.

This page runs the same check your app would. Off-chain for UX, on-chain for enforcement — same credential, same registry.

your-claim-endpoint.ts · por-sdkoff-chain gate
const por = new PorClient();                          // testnet defaults bundled
if (!(await por.isVerified(address, Level.DeviceHuman)))
  throw new Error('claim denied — no proof of real');
your_module.move · on-chain enforcementaborts the tx if not verified
credential::require_verified(&cred, /* min_level */ 0, &clock);
01

Browser → Sui RPC

This page queries the address's owned objects for a RealHumanCredential — straight from a public fullnode, no backend.

02

Level + expiry check

The credential must meet the required assurance level and be unexpired. Soulbound — it can't be bought or moved to a farm wallet.

03

Pass or wall

Humans claim with one passkey tap (gasless, seedless). A farm pays a real cost per credential — climbing with the assurance level you require. That's the point.

Honest demo notes: $DROP is pretend — no tokens move when you claim. Everything else is real: the credential type, the on-chain registry, the level/expiry rules, and the RPC reads your browser is making right now against Sui testnet. The "verified human" example address holds a genuine L0 credential minted through the live passkey flow. The same contracts are live on Sui mainnet — pilots run there.

Want this wall around your airdrop?

Gate a claim, a quest, a vote, or a signup in a few lines. We'll help you integrate — it takes an afternoon.

Mint your own credential → Read about PoR