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.
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
- Open a testnet wallet in the web wallet and fund it from the faucet.
- 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.
- Pick a pool, deposit, and share your
tnzk1…address to receive private payments. Addresses rotate after use. - Every transaction is shown for review before it is published. A running proof can be cancelled.
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.
| Pool | Generation | Holds | Born at | Contract 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.
| Profile | Pools | Enables | Height |
|---|---|---|---|
| 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.
// 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.