Paste any share link from this demo, or scan a card QR with the in-app camera when your browser supports it. Phone OS camera on a printed QR still works (opens the link) — that is enough if in-app scan is unavailable.
- 1. Card ready — issued with design
- 2. Authenticate — click “Check card now” (stamp check in this browser; not the wallet)
- 3. Free network — Base Sepolia (or Anvil) + Connect + Ensure
- 4. Mint — needs contract address + wallet popup
Happy path: Check card → Connect wallet → Mint badge. Solana Devnet defaults to simple mint mode (no custom program deploy). Badge ≠ authenticity.
Issue an issuer-signed card first (with your card design). Then authenticate (verify gate). Wallet comes last — free demo chain only.
Card front (from issuance)
Card back
2. Authenticate (stamp check — required before Mint)
Must succeed before mint. Uses the simple privacy check by default.
3. Connect wallet
Primary: Phantom on Solana Devnet. Secondary: MetaMask / Phantom EVM on Base Sepolia or Anvil. Badge ≠ authenticity — stamp first.
Solana: mode simple-spl-v1 is applied automatically — no deploy step for the demo.
Fund free SOL at
faucet.solana.com
if mint fails on fees.
Advanced — program / contract & deploys
Only if you need a custom Solana program id or EVM contract. Happy-path Solana mint does not require these buttons.
4. Mint (after authentication)
Wallet only confirms the free practice transaction. Your card design and stamp were already prepared at Create.
Burn list refreshes from your Phantom wallet on Connect wallet (and after a successful mint). Named badges (Metaplex) and bare SPL both appear. Ghost mints are pruned when the wallet scan finds them gone. Paste mint base58 if needed. Same Phantom (Devnet) that holds the token.
Admin — pick a goal
Browser-local demo tools only (not a cloud admin console). Start with a goal below — we open the right section for you.
Active card: (none)
Quick facts (expiry vs cancel vs badge)
- Expiry is automatic — after Valid until, Verify fails with “expired” without Cancel.
- Cancel — only for early revoke before expiry.
- NFT badge ≠ stamp — authenticity is stamp + dates + not cancelled.
1 · Cancel / revoke a card
Early cancel only — use when a card must fail before Valid until.
Expired cards already fail Verify without this list.
Merkle root:
Next: …
2 · Cards in this browser
Demo multi-card history — not a cloud portal. Status: active / expired / cancelled. On each row: Cancel early · Re-enable (if cancelled) · Remove expired/cancelled card (red) or Remove from browser (asks to cancel first if still valid).
Issued cards
Holder wallet (saved cards)
3 · Trust list
Public company stamps only — never private keys. Export to share across devices.
Common path: Add demo issuer to registry (under Demo company stamp), or Fetch sample list.
4 · Demo company stamp
Private key stays in this browser (localStorage). Never commit keys.
- Issuer ID
- Issuer name
- Public key
5 · Start over / hard refresh
Hard refresh (keep data) only reloads the app and bypasses cache so you get new JS/CSS.
Issued cards stay in localStorage — that is why you still see a card after hard refresh.
To discard the issued card and start clean, use Clear all demo data.
6 · Advanced (JSON, fetch, prover)
Cancel list — import / export / fetch
Trust list — import / clear / custom URL
Primary “Fetch sample” lives under Trust list (section 3). Same URL field is used there.
Honk remote prover
Most demos ignore this. Browser WASM is default.