Skip to main content

Phantom Identity vs. Phantom Keys

Phantom Keys and Phantom Identity share the same cryptographic foundation — Poseidon commitments, Merkle tree membership proofs, and Groth16 on BN254 — but they serve fundamentally different purposes. Phantom Keys are one-time bearer instruments designed for send-and-forget data operations. Phantom Identity is a persistent pseudonymous identity designed for long-term, repeated data access.

This page provides a detailed side-by-side comparison to help determine which mechanism is appropriate for a given use case.

Feature Comparison

PropertyPhantom KeyPhantom Identity
On-chain storageCommitment deleted on reveal (nullifier spent)Commitment persists indefinitely (never consumed)
Access modelOne-time: reveal consumes the keyUnlimited: each connect is independent
Nullifier behaviorSpent on access (commitment consumed)Spent only on revocation (optional, irreversible)
Primary use caseSend-and-forget: transfers, one-time sharing, gift cardsLong-term identity: accounts, recurring access, workflows
ZK circuitRedemption Circuit (8 public inputs)Access Proof Circuit (4 public inputs)
Bearer formatNumeric key (24-30 digits) or NFC tagPNG with embedded keypair + secrets
Transaction signingN/A (key is redeemed, not used for signing)Direct secp256k1 signing from recovered private key
Quantum protectionOptional (quantumSecret in V4+ keys, not enforced)Built-in rotation (quantum commitment rotated on every access)
Anti-replay mechanismNullifier (permanent, one-time)accessTag (session-scoped, per-access)
Key recoveryDecode numeric key, derive secrets from seedUpload PNG, generate Access Proof, recombine split key
Passphrase protectionNot supported (key is a number)Optional AES-256-GCM encryption of PNG metadata
On-chain key materialNone (Standard) or one-time retrieval (Open Ghost)Persistent split key in PersistentKeyVault
RevocationAutomatic on reveal (nullifier spent)Explicit revocation required (separate transaction)
Anonymity setAll commitments in the Merkle treeAll commitments in the Merkle tree

Circuit Comparison

The two systems use different ZK circuits optimized for their respective access patterns.

Redemption Circuit (Phantom Keys)

8 public inputs. Designed for one-time reveal with front-running protection and value accounting.

#Public InputPurpose
0rootMerkle tree root
1nullifierHashDeterministic nullifier (spent on-chain, prevents double-reveal)
2recipientBinds proof to recipient address (prevents front-running)
3withdrawAmountAmount being withdrawn
4changeCommitmentCommitment for remaining balance (partial withdrawals)
5tokenIdIdentifies the token type
6policyIdPolicy binding (compliance, time-locks, etc.)
7policyParamsHashHash of policy parameters

Access Proof Circuit (Phantom Identity)

4 public inputs. Designed for repeatable authentication with no value fields and no nullifier.

#Public InputPurpose
0rootMerkle tree root
1dataHashGeneric data identifier (credential, key, image, etc.)
2sessionNonceFresh random value per session (prevents proof reuse)
3accessTagAnti-replay binding: Poseidon2(nullifierSecret,sessionNonce)\text{Poseidon}_2(\text{nullifierSecret}, \text{sessionNonce})

Vault Comparison

PropertyCommitRevealVault / OpenGhostKeyVaultPersistentKeyVault
Key storageOne-time (deleted after retrieval)Persistent (returned without deletion)
Access authorizationNullifier spent in registryAccess Proof verified + accessTag recorded
Quantum commitmentNot storedStored and rotated on every access
RevocationAutomatic (nullifier spent = key gone)Explicit (revokeKey deletes entry)
Anti-replayNullifier registry (permanent)accessTag registry (per-session)

When to Use Phantom Keys

Phantom Keys are the right choice when:

  • The operation is inherently one-time. Sending tokens to someone. Sharing a secret once. Delivering a sealed document. Gift cards, one-time access passes, whistleblower drops.
  • Simplicity matters. A numeric key is easy to dictate over the phone, write on paper, or encode in a QR code. No file management, no passphrase to remember.
  • No ongoing identity is needed. The sender and recipient do not need a persistent relationship. The key is the entire interaction — share it, reveal it, done.
  • Value transfer is involved. The Redemption Circuit supports token amounts, partial withdrawals, and change commitments. Phantom Identity does not handle value directly.

Example: Private Token Transfer

Alice wants to send 100 GHOST to Bob without linking their addresses on-chain:

  1. Alice vanishes 100 GHOST into a commitment.
  2. Alice encodes the commitment secrets as a Phantom Key: 9473 0018 7376 9372 0484 1273.
  3. Alice hands Bob the number on a slip of paper.
  4. Bob reveals the commitment. 100 GHOST is minted to his address.
  5. The key is consumed. No ongoing relationship.

When to Use Phantom Identity

Phantom Identity is the right choice when:

  • The interaction is ongoing. A user needs to authenticate repeatedly. A credential needs to be verified over time. A subscription needs to be checked on every access.
  • Signing authority is needed. The user needs to sign transactions from a persistent pseudonymous address. Phantom Identity provides a full secp256k1 keypair; Phantom Keys do not.
  • Multi-step workflows span multiple sessions. Commit data in one session, verify it in another, update it in a third — all from the same identity, all unlinkable to the real user.
  • Stronger security is required. Split-key storage, optional passphrase protection, and quantum-resistant commitment rotation provide defense-in-depth that a simple numeric key cannot offer.

Example: Persistent Anonymous Account

A user wants to participate in an on-chain governance system without revealing their real identity:

  1. The user generates a Phantom Identity (downloads a PNG).
  2. The user seals the identity on-chain (commitment + split key stored).
  3. Before each governance vote, the user connects: uploads the PNG, enters the passphrase, generates an Access Proof, recovers the signing key.
  4. The user signs and submits a vote from the pseudonymous address.
  5. The user disconnects. The signing key is zeroed from memory.
  6. Over months, the pseudonymous address builds a voting history — but it is never linked to the user's real identity.

Decision Matrix

ScenarioPhantom KeysPhantom Identity
Send tokens privatelyBest fitOverkill
One-time secret sharingBest fitOverkill
Gift card / event ticketBest fitOverkill
Credential issued once, verified onceBest fitOverkill
Credential verified repeatedlyNot possible (consumed on first use)Best fit
Persistent pseudonymous accountNot possible (no signing key)Best fit
Recurring API authenticationNot possible (consumed on first use)Best fit
Long-term encrypted data accessNot possible (key deleted on retrieval)Best fit
Multi-step privacy workflowNot possible (identity doesn't persist)Best fit
Subscription/membership keyNot possible (consumed on first use)Best fit
Physical bearer instrument (NFC card)Best fitNot ideal (PNG format)
Offline, air-gapped sharingBest fit (numeric format)Possible (file transfer)

Using Both Together

Phantom Keys and Phantom Identity are complementary. A common pattern is to use a Phantom Identity as the persistent account and Phantom Keys for individual transactions within that account:

The identity persists. The keys are ephemeral. The identity issues keys; the keys are consumed by recipients. This separation keeps the persistent pseudonym clean while enabling one-time sharing operations.