Verify proof
Trust the math, not the wallet.
Verification checks a BN254 pairing equation, the snapshot attester's Ed25519 signature, expiry, a single-use challenge and an app-scoped nullifier. Nothing here ever sees a wallet address.
Ghost Gate
demo relying partyA token-gated “club” that admits holders without learning who they are. It uses GhostVerifier with persistent challenge and nullifier stores — exactly what an external app would run.
No snapshot with configured mints yet.
Inspect any proof
Paste a GHOST proof bundle to verify it against this deployment's trusted attesters — on the server, or entirely in your browser with snarkjs.
Stateless verification confirms the proof and statement but cannot stop replays: only the app that issued the challenge can consume it. Production verifiers must use
GhostVerifier.verify().Device self-test
Generate and verify a real Groth16 proof in this browser using throwaway keys and a throwaway signed snapshot. Measures how long proving takes on your device. No wallet needed; nothing is registered.