Every bouncer iNFT mints its own seal.
Your project sets the criteria. The bouncer holds a private conversation with each applicant inside a TEE. The bouncer itself is an ERC-7857 iNFT with a generated seal.
Hanami runs the first pass on your whitelist. Your team reviews the borderline cases by hand, then drops the exported root into your existing mint contract on any EVM chain.
Describe the bouncer in your own voice — the values, the criteria, what makes a member. Persona is encrypted-by-tokenURI and stored on 0G Storage.
One on-chain transaction: a new ERC-7857 iNFT on 0G Chain. You get a shareable applicant link and a procedural seal derived from the tokenId.
Each applicant connects their wallet and holds a 3–6 turn private conversation with the bouncer. Inference runs inside a TEE; every verdict is on-chain with its attestation hash.
When you're ready, finalize the campaign. You get a Merkle root + proofs. Drop the root into your mint contract on Ethereum, Base, Arbitrum, OP, or 0G.
The bouncer's reasoning is private but verifiable. The persona is durable. The iNFT is tradable. The Merkle root is chain-agnostic. Each piece sits on the part of 0G that fits.
Every applicant turn is forwarded to a TEE-attested provider. The bouncer's criteria stay private — jailbreak attempts and screenshot leaks don't expose them. We verify the provider signature on every response and reject any reply that didn't pass.
The bouncer's persona prompt and reference lorebook are uploaded to 0G Storage at mint. Every approved decision's reasoning is also pinned. The encryptedPersonaURI on the iNFT points at the storage root.
BouncerRegistry implements ERC-7857 — the iNFT standard. Each bouncer holds a private persona pointer, accumulates a reputation score from approvals, and authorizes campaign contracts to record decisions on its behalf.
The campaign's approved list exports as a Merkle root + per-applicant proofs. Paste the root into your mint contract on Ethereum, Base, Arbitrum, Optimism, or 0G itself. One bouncer, any chain.