Skip to content
Testnet

Protocol

Privacy pools

A privacy pool is an AuthScript contract that holds coins as encrypted notes. Inside it, payments hide the amount and the parties; the chain only checks a zero-knowledge proof with OP_ZKVERIFY. Proofs are built in your browser, and your keys never leave the device.

Experimental, test only

The pools use proving keys from an un-audited TEST setup, and their parameters may change with the next testnet reset. Use them to learn and to test, never with anything of value.

Deposit

Move XNA or a supported asset from a transparent address into the pool as a private note.

Assign

Pay all or part of a note to a tnzk1… address. Amounts and parties stay hidden.

Consolidate

Merge notes into one (C6 J2) to keep the wallet light.

Withdraw

Send a note back out to a Legacy, post-quantum or ECDSA address.

Use it

From the web wallet

  1. Open a testnet wallet in the web wallet and fund it from the faucet.
  2. Go to Privacy Pool and press Open private wallet. It is derived from the same recovery words, with an optional ZK passphrase and account number, so it needs no extra backup.
  3. Pick a pool, deposit, and share your tnzk1… address to receive private payments. Addresses rotate after use.
  4. Every transaction is shown for review before it is published. A running proof can be cancelled.
Open the Privacy page

The private wallet keeps an encrypted scan checkpoint in the browser, so reopening it only reads new pool activity. A benchmark in the same page measures proof times on your device.

Deployed on testnet

Public pools

Each pool is a separate instance with its own balances; moving to a newer pool does not migrate notes.

PoolGenerationHoldsBorn atContract address
C6TEST261004A#POOL Current C6 · portable proofs XNA 22,121 tnc1pw933xtnhdzm4mmgw2agnk06nfuy5lddap3xr9zcmxfc06h5c3kxsjrz24f
C6ASSET261004A#POOL Current C6 · portable proofs Asset C6ASSET261004A 22,240 —
C5TEST261001#POOL C5 · public-tree transitions XNA 14,298 tnc1pymrr03uj3wq0224ura2zh2h2tm552m28l8t9dzmjywp56a6r3h9szm0kh4
C4TESTX260930A#POOL C4 · Groth16 forms XNA 11,540 tnc1p5cn7433mpqt6h6wswkzxjr2tgxpjtmgqmuy0tuvw9tq2kk8lttjqxvdz4w

C6 pool fees are 0.1, 0.2 or 0.5 XNA per operation, paid from the private notes. The asset pool charges no private fee; an XNA sponsor coin pays the network fee.

Consensus

ZK profiles

getblockchaininfo reports zk_public_tree and zk_portable_tree with their activation heights.

ProfilePoolsEnablesHeight
1 C4 Groth16 deposit, transfer and withdrawal forms 10
2 C5 Public-tree transitions 10
3 C6 Portable proofs: XNA and ordinary assets, up to three output notes, consolidation 100

OP_ZKVERIFY verifies Groth16 proofs over BN254, only inside AuthScript, and counts as 280 sigops.

For developers

neurai-privacy

@neuraiproject/neurai-privacy derives private wallets from the wallet words, encodes tnzk1… addresses, builds proofs in a Web Worker and scans the pool. The node needs -txindex and -spentindex; the public RPC proxy has both.

JavaScript (worker)
// pool.worker.js
import * as snarkjs from "snarkjs";
import { startPoolWorker } from "@neuraiproject/neurai-privacy/worker";

startPoolWorker({
  scope: self,
  snarkjs,
  artifactBaseUrl: new URL("/privacy-c4/", self.location.origin).href,
});

Proving parameters for each pool are public files that the wallet serves next to its pages. Source and docs.