CA
GHOST

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 party

A 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.