Nullark keeps ETH, settlement state, and encrypted recovery records in a public contract. A wallet-derived key decrypts matching bundle records in the browser. You may export a bearer recovery note as an independent fallback.

Protocol map

Five records, five jobs

Each layer has one job. The pool anchors ciphertext and settlement, the wallet-derived key unlocks matching records locally, the bearer note preserves an independent recovery path, and the runtime keeps every piece pointed at the same deployment.

Value lifecycle

  1. The client verifies one wallet unlock signature and derives a chain-and-pool-bound recovery key.
  2. It prepares a template, child secrets, fixed-size encrypted recovery record, encoded recovery entry, and deposit proof. Wallet-derived recovery material is required. The client exposes it only after confirmation; exporting the bearer fallback is optional.
  3. The wallet deposits the template’s parent amount with one bundle commitment and encrypted recovery record.
  4. The pool inserts that commitment and accepts a new root.
  5. A later wallet connection scans public records, decrypts matching bundles locally, and selects no note automatically.
  6. The user selects one unspent child; the client proves ownership and membership without publishing the witness.
  7. The pool records that child’s nullifier, accrues the fee, and sends net ETH.
  8. Any sibling remains available under the original bundle commitment.

Read by question

Core invariants

  • Each bundle commitment is inserted once.
  • Each child nullifier is spent once.
  • Parent value equals the sum of its two child slots.
  • Proof inputs bind the intended root, child, destination, amount, fee, chain, pool, context, and payload.
  • Pool accounting and ETH balance cover allowed exits without double-counting fees.
  • Encrypted recovery records are public; wallet unlock signatures, derived keys, bearer notes, and decrypted secrets stay out of RPC requests, analytics, logs, and public support channels.
These are design rules, not a blanket security claim. Read What a Groth16 proof proves and Security status for the current scope.