Key Managment

Our Approach:

Phase 1 (Current): Launch with Hybrid model

  • Optimized for Stacks/Clarity

  • Fast iteration, proven UX

  • Escrow contracts mitigate trust issues

Phase 2 (Planned): Migrate to Fully On-Chain

  • Fully on-chain re-encryption proofs on networks that support them

  • Backwards-compatible: same NFT IDs, new verification layer

  • Optional: users choose Hybrid (cheaper) or Fully On-Chain (trustless)

Design principle: Build modular from day one so migration doesn't break existing assets.


Key Management:

Wallet-derived keys (recommended):

  • Encryption key derived from wallet seed via BIP-32 path

  • No extra seed phrases to manage

  • Import wallet → encryption key auto-restored

  • Path example: m/44'/5757'/0'/0'/1' (Stacks coin type 5757)

Key server (for zkLogin/Multisig):

  • Third-party holds encryption keys

  • Authenticated via wallet signature

  • User signs challenge → server decrypts → returns plaintext

  • Trust trade-off for convenience

Client-side (maximum security):

  • Generate encryption keypair locally

  • Store in browser secure storage or hardware wallet

  • Full control, but key loss = cannot decrypt


Security Model:

Threats:

  • Server compromise (Hybrid model)

  • Front-running (transfer races)

  • Seller withholding re-encryption

  • Buyer claiming "secret was wrong" post-purchase

Mitigations:

  • Hybrid: Escrow smart contract (seller must provide valid ciphertext or payment refunded)

  • Fully On-Chain: ZK proofs eliminate trust (contract verifies consistency)

  • Front-running: Time-locked commits (commit txn, reveal after block confirmation)

  • Disputes: Hash(secret) published at mint, verifiable post-decrypt

Disclosure by choice: Players can share secrets voluntarily. This is intentional:

  • Teams can pool information

  • Markets emerge for "leaked" secrets

  • Social dynamics (who do you trust?) become part of gameplay

Not a bug, a feature: Information markets require voluntary disclosure.


Why This Matters:

eNFTs are the first practical way to run honest incomplete-information games on-chain. Prior attempts:

  • Dark Forest (zk-SNARKs) → bot wars, too complex

  • Traditional NFTs with "hidden traits" → revealed on-chain, not truly hidden

  • Off-chain game servers → not verifiable, requires trust

Last updated