The core idea, in one picture
You pay someone. The chain keeps a record that proves the payment was valid without publicly revealing who paid whom or how much.
Neptune Cash keeps payments private and proves them valid with post-quantum zero-knowledge proofs. This page explains how, in plain terms. The documentation and whitepaper linked at the bottom go deeper.
You pay someone. The chain keeps a record that proves the payment was valid without publicly revealing who paid whom or how much.
The same steps the cards below explain in detail, in the order they happen:
How a payment sits on a public ledger without naming its sender, its receiver, or its amount.
Every spendable coin on the chain is a UTXO (unspent transaction output). The mutator set is the structure that holds them, and the foundation of Neptune's transaction privacy: transactions do not name the coins they touch. A coin they create arrives as an addition record: a commitment, meaning a sealed, tamper-proof envelope that pins the coin down without revealing it. A coin they consume leaves as a removal record: a scatter of marks on a big shared checklist. Unlike an addition record, it never identifies the coin: the marks are provably tied to some sealed envelope in the set, without revealing which.
every entry is an unreadable commitment, and they all look alike
What the mutator set achieves is unlinkability: a spend cannot be connected to the coin it consumes, or to the transaction that created that coin, and double-spending is still caught. An observer sees entries added and entries consumed, and cannot determine which entry a spend touched, whose it was, or what it held. What a removal record does reveal is roughly when the spent entry was created, so each spend hides among the entries created around the same time: a creation window the protocol picks for you.
How your wallet discovers it was paid, given that transactions name no addresses. A payment carries an announcement: a public note with a receiver identifier on the outside and a sealed message inside. The sealed part holds the coin's full description and the sender randomness, the sender's half of the secret the commitment was sealed with. The other half is baked into the recipient's address. The recipient needs the announcement's half, together with keys only they hold, to recognize the payment and later spend it.
Both halves together are the deliberate exception to the mutator set's unlinkability, and they open different doors. The recipient, who also holds the private key behind the address, can connect the coin to its entry in the set and produce the removal record that spends it. The sender can watch the coin confirm, but without that key cannot recognize the removal record, so they cannot even tell whether the coin has since been spent. The commitment is the payment and nobody can read it; the announcement is the notice about it, and with the strongest address format exactly one person can. The addresses card covers the formats that widen that circle.
The identifier on the outside is a deliberate trade-off. It lets your wallet spot payments meant for it instead of trial-decrypting every announcement on the chain. The cost: two payments to the same address carry the same identifier and can be linked to each other, which is the mechanism behind the advice to use a fresh address per payment, or to notify the recipient directly off-chain instead.
What you get: payments that find their recipient without putting either of you on the chain.
Neptune has three shareable address formats because different situations call for different trade-offs: address length, post-quantum strength, and what the holder gets to see.
| Format | Prefix | Length |
|---|---|---|
| Generation | nolgam1 | 3,482 chars |
| EC hybrid | nechm1 | 168 chars |
| Viewing | nviewm1 | 116 chars |
The m in each prefix marks mainnet.
Generation is the strongest, and the enormous one: it encodes a lattice-based public key, built on mathematics resistant to quantum attacks, and that key is what a sender uses to encrypt the announcement from the previous card. The length is the price of post-quantum privacy.
EC hybrid is the compact option. Its key exchange uses an elliptic curve, the one piece here a quantum computer could break. Even a successful attack would require the address itself, which never appears on the chain, and would only reveal what that address received; spending would remain out of reach.
A viewing address gives away your incoming payments: anyone holding it can see every payment announced to you on-chain and its amount, though they cannot spend anything. That is useful when the transparency is the point: an accountant, an auditor, or a donation page can verify incoming payments with no power to move them.
What you get: control over the trade: the strongest post-quantum privacy when you can share a long address, a compact option when you cannot, and a watch-only format whose holder can see your payments but never spend them.
Rules are programs: running one yields a proof that anyone can check, and one proof covers a whole block.
Neptune's rules are small programs attached to coins, and they come in two kinds. They run in Triton VM and are proven with STARKs, the next two cards. This is what "programmable" concretely means here.
A lock script decides who may spend a UTXO. Usually it checks knowledge of a secret key, but it can be arbitrarily complex: shared ownership, quorums, or conditions unrelated to keys entirely.
A type script decides how a kind of coin may behave: the native currency type script is what enforces that a transaction's inputs cover its outputs plus its fee, so no coins appear from thin air. The three-year timelock on half of every mining reward is a type script too: the rule lives on the coins themselves, not in anyone's policy.
What you get: ownership and money rules enforced by proofs rather than policy, and the foundation Neptune's programmability builds on.
Think of Triton VM as the computer Neptune's transaction rules run on: a simulated machine that every node can run identically. The interesting part is what it is used for. Most chains use their VM to replicate state, so every node re-executes everything and ends up holding the same data. Neptune uses Triton VM to validate updates to a state commitment instead: one sealed fingerprint of the whole ledger, a chain-sized sibling of the per-coin commitments in the last section. Nodes agree on that fingerprint, and that it changed correctly, without needing to see the private data behind the change.
Verifying proofs instead of replaying data is what lets a chain be both verifiable and private. Programs for it are written in its own low-level language, tasm.
The proof system Triton VM ships with. The zk stands for zero-knowledge: a proof that convinces you a program ran correctly without showing you what it ran on. The rest of the acronym, Scalable Transparent ARgument of Knowledge, matters here for two reasons: transparent means there is no trusted setup ceremony to take on faith, and the proofs are built out of hash functions, the next card's subject, not out of math a quantum computer can break. Validating a Neptune transaction largely means verifying such proofs.
checking the proof is cheap, so every node does it
The cost is asymmetric by design: proving is expensive, verifying is cheap. That asymmetry is why composing a block needs serious hardware while checking one does not, and it is why STARKs sit at the center of the design: the network verifies private computation without ever seeing it. Who does that expensive proving, the last card in this section explains.
A hash function turns any data into a short fingerprint that cannot feasibly be run backwards. Tip5 is Triton VM's built-in hash, co-designed by one of Neptune's founders for recursive STARK machines like this one: cheap to reason about inside the VM rather than merely fast on a CPU. It seals the commitments in the hiding half of this page, and it is the hash the mining race is run with.
That is why the GPU miner lists its Neptune algorithm as tip5 rather than neptune: the algorithm is the hash, and the coin is one thing that uses it.
A block does not carry a bundle of separate transactions. The composer merges the block's payments into one aggregate transaction, inputs, outputs, and announcements shuffled together, and produces one proof for all of it. The merge is packaging, not a mixer: every record survives it unchanged, and the payments circulated separately in the mempool first. Hiding stays the mutator set's job.
That merge is the kind of expensive proving the zk-STARKs card describes, and it is not the first proof in a payment's life: the sending node proves the payment valid when it creates it. Powerful nodes can then upgrade and combine those proofs for a share of the fees before a composer builds the block.
a Tip5 hash lottery decides which guesser appends it
Appending the block is the cheap half. A proof-of-work lottery of Tip5 hashes decides which guesser, the role most people call the miner, earns the right, and every node then verifies the block's one proof rather than re-running everyone's payments. Mining splits exactly along the proof system's asymmetry: composing is the heavy proving, guessing is hash after hash.
The composer never opens anyone's payment to do its job: it merges sealed transactions by verifying and combining their proofs, learning no more about them than any other observer. And that is how private payments become a chain everyone can trust.
Two headline claims come with details worth knowing before you repeat them.
Spending is hash-based. Lock scripts and the key derivation behind them, how your seed phrase becomes spending keys, run on Tip5. Authority over your coins rests on hash functions, which a quantum computer does not meaningfully weaken. That is the heart of Neptune's post-quantum claim, and it holds.
Encryption is not all hash-based. A generation address carries a lattice-based public key, used to encrypt the announcement, the payment notice, for its recipient. An EC hybrid address uses secp256k1, an elliptic curve, for that key exchange instead. Elliptic curves are exactly what a large quantum computer is expected to break; lattices, like hashes, are believed to resist one. So the curve appears in one optional address format, for confidentiality rather than custody: a break there would let an attacker read what you received, but only if they also hold the address, which never appears on the chain, and it would still not let anyone spend it.
| Component | Built on | Post-quantum? |
|---|---|---|
| Spending and ownership | Hash functions (Tip5) | Yes |
| Proofs (zk-STARKs) | Hash functions | Yes |
| Generation address encryption | Lattices | Yes |
| EC hybrid address encryption | secp256k1 curve | No: a break plus the address risks reading, never spending |
Neptune does not have this yet; it is on the roadmap and in active development. The aim is that verifying the whole chain takes only a small amount of work regardless of how much history exists, instead of downloading and checking every block one by one. The mechanism is recursive block validation: every block carries a STARK proof, the same kind built in the section above, that its predecessor was valid, so checking the newest block transitively checks the chain.
each block proves its predecessor valid ยท not shipped
The whole system at a glance: each row pairs a part with its job and its payoff, and links back to its card above.
| Component | What it does | What you get |
|---|---|---|
| Mutator set | Holds every coin as an indistinguishable commitment and takes spends without naming the coin | Spends that cannot be linked to the coin they consume or the transaction that created it |
| Announcements | Carry an encrypted notice that leads the recipient's wallet to its payment | Private payments that still arrive |
| Addresses | Three shareable formats trading length, post-quantum strength, and visibility | Privacy you can match to the situation |
| Lock and type scripts | Small programs setting the conditions to spend and how coins behave | Rules enforced by code, and programmability |
| Triton VM | Executes the transaction rules so the execution itself can be proven | Rules verified while your data stays with you |
| zk-STARKs | Prove a program ran correctly without revealing anything else | Proof the rules were followed, verifiable by anyone |
| Tip5 | Seals the commitments and powers the mining race | One quantum-resistant hash behind commitments, proofs, and mining |
| Block pipeline | Merges a block's payments into one transaction covered by one proof | Cheap verification for every node regardless of how many payments a block holds |
This page stops where the real documentation starts. The docs cover the full technical detail; the whitepaper covers the vision and the reasoning.