How Zcash works Sources ↓
Interactive · source-backed

How Zcash works.

Build a working model of Zcash from the privacy goal and shared chain to private notes, wallet behavior, proofs, settlement, privacy boundaries, and future protocol work.

Interactive guide: Reader or Reading mode may omit diagrams, controls, and demonstrations. Open this page normally or exit Reader mode to use them.

Start with the big idea
01 / PRIVACY + POOLS

Verification does not have to mean visibility.

A transparent chain lets everyone verify by exposing the transaction history. Its addresses are pseudonymous, not automatically anonymous: they omit names, but their public payment graph can be followed and may later be connected to real identities. Zcash keeps public verification and replaces the exposed facts with cryptographic evidence. The network can reject counterfeits and double-spends without receiving the sender, recipient, or shielded amount.

Live comparison Same payment, different ledger

What the people know

AAlice sends 5 ZEC
BBob receives 5 ZEC
Payment detailsKNOWN
Authority to spendKEYS

What a chain observer gets

◎A complete public trail
Transparent verification is simple because the ledger publishes the facts being checked.
The missing link

Privacy is the outcome. A receiver—the payment destination inside an address—is how the wallet gets there.

The comparison above asks what the ledger reveals after a payment is made. Before building that payment, the wallet must choose which Zcash transaction system to use. Transparent value and shielded value live in separate pools, and the recipient’s address tells the wallet which receiver types that destination accepts.

First: what is a pool?

A pool is a protocol-defined way of representing and moving the same ZEC. Each pool has its own transaction format, receiver type, and on-chain data structures. It is not a separate coin, account, or wallet.

Z One ZEC asset The value is the same whichever pool holds it.
Transparent pool Bitcoin-like outputs with public addresses, amounts, and transaction links.
Shielded pools Private notes, encrypted outputs, nullifiers, and proofs replace a public payment trail.
SAPLING · EARLIER ORCHARD · RESTRICTED IRONWOOD · ACTIVE
Transparent → shielded Shielding

Move ZEC from the transparent pool into a shielded pool. The net value crossing the boundary is public; the new shielded note is private.

Shielded → transparent Deshielding

Move ZEC from a shielded pool into the transparent pool. The net value crossing the boundary becomes public along with the transparent destination.

Moving between two shielded pools—such as Orchard → Ironwood—is a shielded-pool migration, not shielding or deshielding.

Ironwood is now the destination for new Orchard-protocol shielded payments. It activated with NU6.3 at block 3,428,143 on July 28, 2026. Ironwood reuses Orchard’s receiver, paired Action structure, and Halo 2 proving system, but it is a separate pool with its own commitment tree, nullifier set, and value balance. It also launches with machine-checked supply assurance: more than 2,700 Lean theorems connect the deployed verifier, Action circuit, and ledger rules to a formal balance-integrity claim under named cryptographic assumptions.

Legacy pool Orchard restricted · no net inflow
Pool boundary Turnstile net amount is public
Current pool Ironwood fresh shielded state

Orchard balances were not moved automatically, do not expire, and remain under their owners’ control. But existing Orchard value must leave that pool—normally through a wallet-managed migration to Ironwood—before it can participate in ordinary cross-address shielded payments. No new value may enter Orchard, and cross-address transfers within it are disabled. The net amount crossing pools is public; senders, recipients, addresses, and note contents stay cryptographically hidden on-chain, although amount, timing, or network metadata can still create correlation risk.

01 Choose the privacy outcome Should payment details be public or shielded?
02 Read the destination The address advertises one or more supported receiver types.
03 Route to a pool The wallet selects the best mutually supported transaction system.
The next demo shows that routing decision—and how a Unified Address lets the wallet make it quietly.
Pool router One address can carry several receiver types
sender wallet Choose a supported receiver

The wallet compares the destination’s receiver types with the transaction systems it supports.

destination Unified Address

A single encoded address can contain multiple receiver options.

selected pool Ironwood shielded pool

Private notes, commitments, nullifiers, ciphertexts, and validity proofs.

Inside a shielded pool

Individual note values and ownership links are hidden. Proofs enforce balance for each state transition.

At a pool boundary

Value crossing between transparent and shielded pools contributes to a public net-flow tally—the “turnstile”—while transfers within the shielded pool remain private.

This Unified Address contains an Orchard-protocol receiver, which a supporting wallet now routes into Ironwood.
READ Perfect Money, ch. 1, PDF pp. 12–21 frames the contrast between traceable and shielded ledgers. Mastering Zcash, §§3.2–3.3, PDF pp. 7–8 explains pools and private verification; §§6.1–6.2, PDF pp. 25–26 describes Orchard’s place among pool generations and public pool turnstiles. Perfect Money, PDF p. 209 explains how Unified Addresses hide pool-selection complexity from the user. The Zcash Protocol Specification, §§3.2–3.4, PDF pp. 15–20 defines shielded pools, notes, transactions, treestates, and anchors; §5.6.4, PDF pp. 121–123 specifies Unified and Orchard address encodings. For the current network, ZODL’s activation notice confirms Ironwood is live, ZIP 229 specifies the version 6 transaction fields illustrated above, the Ironwood transaction-format chapter explains how those fields are grouped and hashed, and ZIP 258 defines Orchard’s post-activation restrictions and Ironwood’s separate pool state, and ZIP 318 explains receiver routing and privacy-preserving migration. ZODL’s migration guide explains the current wallet behavior and user choices. Track aggregate movement on the Ironwood migration dashboard.
02 / SHARED ORDER

The chain is an ordered history and a shared clock.

Transactions propagate to nodes, wait in local mempools, and become settled history when miners include them in blocks. Each block points to the previous block. Its height is its position in the one agreed sequence; later blocks add confirmations and make reversal harder.

Chain clock Mine and test linked blocks

Current tip

height 3,500,004

Our transaction

Not yet included.

Every visible block stores the previous block’s digest. The links currently agree.
READ Mastering Zcash, §3.1, PDF pp. 4–7 introduces blocks, hashes, mining, and public consensus; §§4.8–4.9, PDF pp. 17–19 follows broadcast through inclusion and confirmations. The Zcash Protocol Specification, §§3.3–3.4, PDF pp. 19–20 defines the block chain, transactions, treestates, and consensus state.
03 / PRIVATE VALUE

A shielded balance is a collection of notes.

Wallets do not update a private “account balance” on-chain. They control discrete notes. Think of a shielded note as a private Bitcoin unspent transaction output (UTXO): a discrete chunk of value consumed whole and replaced by new notes for the recipient and change, but with its value and owner hidden on-chain rather than published. Your displayed balance is a wallet-side sum of the unspent notes it can decrypt.

Note selector Build Alice’s 5 ZEC payment

Alice’s unspent notes

Click notes until inputs cover 5 ZEC + a 0.001 ZEC illustrative fee.

New notes

Nothing is carved out of an old note. New private records replace it.

Select enough value to fund the payment and fee.
READ Mastering Zcash, §3.4, PDF pp. 8–9 defines shielded notes and their consume-and-create model; §§4.1–4.5, PDF pp. 13–15 walks through selection, change, and fresh outputs. Perfect Money, PDF p. 182 gives the same note-level account in narrative form. The Zcash Protocol Specification, §§3.2–3.2.2, PDF pp. 15–17 defines notes, note plaintexts, and commitments; §§3.6–3.7, PDF pp. 21–22 specifies consume-and-create shielded transfers.
04 / SEALED RECORDS

The note stays private. Its commitment and ciphertext go public.

A note contains an address, value, and randomness. The chain records a binding commitment to those contents and an encrypted payload for the recipient—not the plaintext note. Alice encrypts that payload using the public receiving key in Bob’s shielded receiver. Bob later combines the incoming viewing key (IVK) introduced above with the transaction’s public ephemeral key to decrypt it. The commitment and encryption do different jobs. The next section opens that encrypted delivery to show where an optional memo fits.

Commitment lab Seal and inspect a note

Private note plaintext

u1bob…4r9k
5.00000000 ZEC
7ab94c…e112
cf29d1…0a7e
pk_d · 91ab42…7e03
Same fields + same hiding randomness → same cmx. Change either one → a different commitment, while the original private fields remain unrecoverable from the new fingerprint.

Public cryptographic package

cmx

Press “Seal note” to derive an illustrative commitment and ciphertext.

01 · ALICE SEALS Bob’s public receiving key pk_d · 91ab42…7e03

Alice uses this public key to derive a one-time shared secret and encrypt the note.

02 · CHAIN CARRIES ephemeralKey + ciphertext epk · waiting

These public bytes let the intended recipient derive the same secret—not an observer.

03 · BOB OPENS Bob’s incoming viewing key (IVK) ivk_Bob · 84ac…991e

Bob combines this private key with the ephemeralKey to decrypt and recover the note.

Start with “Seal note.” Alice already has Bob’s public receiving key from his shielded receiver.
READ Mastering Zcash, §§3.4–3.5, PDF pp. 9–10 distinguishes encrypted notes from on-chain commitments; §3.6, PDF pp. 11–12 explains receiving and incoming-viewing capabilities; §4.5, PDF pp. 14–15 explains output construction and ciphertexts. Perfect Money, PDF p. 182 calls the commitment the public cryptographic seal for a private note. The Zcash Protocol Specification, §§3.2.1–3.2.2, PDF pp. 16–17 defines note plaintexts and note commitments; §5.4.8.4, PDF pp. 101–102 specifies Orchard’s Sinsemilla-based note-commitment construction that Ironwood reuses, and §4.20, PDF pp. 70–74 specifies encrypted note delivery and viewing-key decryption. ZIP 2005 changes how Ironwood derives commitment randomness for quantum-recoverable notes; it is a future-recovery hook, not a claim that the deployed shielded protocol is post-quantum.
05 / ENCRYPTED MEMOS

A shielded output can carry a private memo.

After Alice creates Bob’s note, her wallet can place up to 512 bytes of text or application data in that output’s memo field. The memo is encrypted with the note, stored on-chain as ciphertext, and recovered when Bob’s wallet decrypts the output. It belongs to one shielded output—not to the transaction as a whole—and it does not change the note’s value, commitment, or tree position. Transparent outputs do not have this shielded memo field.

Memo envelope Compare the chain and recipient views
UTF-8 capacity, not character count 0 / 512 bytes
Attaches toOne shielded output
Plaintext slotAlways 512 bytes
ChangesCiphertext, not cmx

What the chain carries

Privacy boundary: a memo is encrypted, not ephemeral or automatically authenticated as a real-world identity. Its ciphertext remains on-chain. The recipient—and anyone later given the relevant viewing capability—can read what the sender chose to include, so a memo can deliberately reveal an invoice number, name, reply address, or other identifying context.
READ The Orchard Book’s Action design assigns one memo field to each output side of an Action; Ironwood reuses that Action encoding under ZIP 229. ZIP 302 defines the 512-byte text, no-memo, and application-data encodings, while ZIP 321 limits payment-request memos to destinations that support shielded memos. ZIP 307 explains how compact wallet scanning can detect a note before fetching its full encrypted memo, and the Ironwood transaction-format chapter shows memo ciphertext in the current Ironwood-pool bundle digest.
06 / MEMBERSHIP

Every commitment joins one append-only tree.

Nodes append note commitments in chain order and hash upward to a compact root. A wallet can prove one commitment belongs to that tree using only its Merkle path. The root used by a transaction is its anchor: a public fingerprint of a particular tree state, not an identifier for the hidden note.

Where does the tree live? Blocks carry the new note commitments, not a serialized copy of the whole tree. Each validating node appends those commitments in order and normally saves a compact representation of the resulting tree in its own database, so it can resume without rebuilding from genesis. The storage format is an implementation choice; every node must derive the same root from the validated chain. Block headers also commit to chain history that includes the shielded pools’ recent roots, with the newest root appearing one block later.
Chain → tree Mine blocks, append commitments, and inspect a path
3 blocks · 5 commitments / 32 Each shielded output contributes one commitment; transparent-only blocks leave this tree unchanged.

The same append-only tree sits below every block. Leaves are note commitments; each internal node hashes an ordered left/right pair in a level-specific domain. Empty regions use protocol-defined empty roots.

Anchor (current root)

root · waiting

Click a block above to reconstruct the tree state at that height.

Membership proof

Choose “Show Merkle path” to highlight the minimum sibling data needed.

Heights 101–103 are preloaded. Block 102 has no shielded outputs, so it inherits block 101’s root.
READ Mastering Zcash, §3.5, PDF p. 10 explains roots, paths, and anchors; §4.3, PDF pp. 13–14 applies the path to spending. Perfect Money, PDF pp. 182–183 connects the tree to membership proofs and the whole pool’s privacy set. The Zcash Protocol Specification, §3.8, PDF p. 23 defines the incremental note-commitment tree; §4.9, PDF pp. 52–53 specifies level-aware Merkle hashing and path validity, and §5.4.1.3, PDF pp. 79–80 defines Orchard’s Sinsemilla-based tree hash that Ironwood reuses. Zebra’s tree-state design shows one node implementation deriving trees from commitments and persisting the latest finalized state. ZIP 221 specifies how the block-header chain-history commitment binds Sapling and Orchard roots one block later; ZIP 258 extends the same mechanism to Ironwood.
07 / NO REPLAY

A nullifier says “spent” without saying which note.

To spend a shielded note, its owner proves authorization and derives that note’s unique nullifier with a keyed pseudo-random function: secret nullifier key material plus note-specific data produces a deterministic, one-time-looking serial. It is not a raw public hash of the commitment. The spend publishes the nullifier, so accepting it marks the note as spent without removing—or publicly identifying—its commitment in the tree. Nodes reject any later transaction that publishes the same nullifier, while observers cannot reverse the nullifier to discover which commitment was spent. The chain exposes commitments when notes are created and nullifiers when notes are spent, but no public field joins a nullifier back to the earlier commitment it consumes.

Double-spend guard Publish and replay a nullifier
Commitment tree leaf
cmx_A = 7f2a91…d084
secret nk
+ note data
→ keyed PRF
Nullifier set entry
no nullifier published
Spending note A will leave its commitment in the tree and publish its unique nullifier.
READ Mastering Zcash, §3.5, PDF pp. 10–11 introduces nullifiers and the append-only nullifier set; §4.4, PDF p. 14 derives them during a send. Perfect Money, PDF pp. 182–183 describes “dead serials” that prevent replay while linking to no public note. The Zcash Protocol Specification, §3.2.3, PDF p. 18 defines nullifiers; §3.9, PDF p. 23 requires uniqueness to prevent double-spends, and §4.16, PDF pp. 60–61 specifies their keyed computation and domain separation. §5.4.2, PDF pp. 89–90 gives the Orchard-protocol nullifier derivation and its circuit-oriented Poseidon construction.
08 / CAPABILITIES

Keys separate spending, seeing, and receiving.

Zcash key material is a hierarchy of capabilities. A spending key authorizes value movement. Viewing keys are wallet secrets by default: they reveal selected transaction information but never authorize spending. An owner can voluntarily disclose a viewing key when they want another party to receive that key’s read-only access. Diversified addresses let one wallet receive at many unlinkable-looking destinations.

Capability explorer Hand someone the minimum key
Spending key · keep secret
Viewing keys · read only Secret by default. The owner may voluntarily share one for scoped disclosure; none can spend.
Full viewing key
Incoming view
Outgoing view
u1q9…7cm4
d = 12af…08c1 · gd = DiversifyHash(d)
pkd = [ivk]gd · receiver = (d, pkd)

Share an address

Someone can pay this destination. It does not give them a view of your wallet.

CapabilityAllowed?
READ Mastering Zcash, §3.6, PDF pp. 11–12 maps spending, viewing, and diversified-address capabilities. Perfect Money, PDF p. 171 and pp. 183, 213–214 explains owner-controlled disclosure to an auditor, tax authority, or other chosen party. The Zcash Protocol Specification, §3.1, PDF p. 14 maps receiving, viewing, and spending capabilities; §4.2.3, PDF pp. 40–42 defines the Orchard key components that Ironwood reuses. The Zcash Protocol Specification, §5.4.1.6, PDF pp. 81–82 specifies diversifier hashing and transmission-key derivation; ZIP 316 explains how Unified Addresses package shielded receivers with other receiver types.
09 / DISCOVERY

A wallet finds money by trying to decrypt outputs.

Shielded outputs contain no searchable plaintext address. A wallet downloads compact chain data and attempts trial decryption with its incoming viewing key. Almost every attempt fails. A success reveals the private note, which the wallet verifies against the public commitment and records with its position for a future Merkle path. Full output decryption also recovers that output’s memo; a light wallet may first detect the compact note data and fetch the full transaction afterward.

Wallet scan Find Bob’s incoming note

Incoming viewing key

ivk_bob · 84ac…991e

0 decryption attempts

Wallet state

No owned note found yet.

Every ciphertext looks alike until the correct key makes decryption succeed.
READ Mastering Zcash, §4.2, PDF p. 13 explains how prior scans populate a wallet’s spendable notes; §4.10, PDF p. 19 follows recipient detection, note recovery, and commitment verification. The Zcash Protocol Specification, §4.20.2, PDF pp. 71–73 specifies trial decryption with an incoming viewing key, and §4.22, PDF pp. 75–76 defines Sapling and Orchard block-chain scanning. ZIP 326 explains how Ironwood keeps the Orchard protocol’s incoming-viewing-key scanning capability, while ZIP 307 distinguishes compact note detection from full memo retrieval.
10 / ZERO KNOWLEDGE

The proof compresses a private valid story.

The wallet’s secret inputs—notes, keys, Merkle paths, and randomness—are collectively called the witness. Zcash checks them with a circuit: not electronic hardware, but a fixed mathematical rulebook for a valid shielded transaction. That rulebook checks that inputs exist, the spender controls them, nullifiers are correct, and value balances. A compact proof convinces nodes that a valid witness exists while the witness itself stays private.

Proof rulebook Break a rule, then try to prove
NO PROOF
Private witness not processed

Nodes learn nothing until a valid proof is produced.

The circuit is the protocol’s fixed mathematical rulebook. The sender cannot change it—only prove that private data satisfies it.
READ Mastering Zcash, §§4.6–4.7, PDF pp. 15–17 lists the proof’s claims and describes the circuit—the fixed rulebook used to check them. Perfect Money, ch. 14, PDF pp. 174–183 develops the idea of proof without disclosure, then applies it to notes, roots, nullifiers, and balance. The Zcash Protocol Specification, §4.1.13, PDF pp. 36–37 defines a zero-knowledge proving system; §4.18.4, PDF pp. 66–69 states the Orchard proof relation that Ironwood inherits. ZIP 258 specifies Ironwood as a separate deployment of the corrected Orchard protocol. Project Tachyon’s formal-verification report explains how Ironwood’s deployed verifier, circuit, and ledger-level balance rules are connected by machine-checked Lean proofs.
11 / PUBLIC PACKAGE

Ironwood reuses Orchard’s paired Action structure.

An Ironwood transaction uses the Orchard Action shape: each Action pairs one spend side with one output side. When the real counts differ, dummy components fill the shape. The pairing does not mean one input “became” one output; value conservation is enforced across the whole transaction. The public package contains opaque commitments, nullifiers, randomized authorization data, note and memo ciphertexts, an anchor, a proof, and a binding signature.

Action shaper Change private input/output counts
2 2

Uniform action structure

What an observer sees

Opaque fields prove and deliver the transaction without publishing its note values or addresses.

READ Mastering Zcash, §§4.7–4.8, PDF pp. 16–18 describes Orchard’s 1:1 action shape and the on-chain fields that Ironwood reuses. The distinction between note encryption and proof validation appears on PDF p. 15. The Zcash Protocol Specification, §3.7, PDF p. 22 defines Orchard Action transfers; §4.6, PDF pp. 44–46 specifies their fields and §7.5, PDF pp. 135–136 their pre-Ironwood transaction encoding. ZIP 229 places the same Action encoding in Ironwood’s separate version 6 transaction bundle. The Zcash Protocol Specification, §4.10, PDF pp. 53–54 introduces transaction and signature hashing; ZIP 244 specifies the digest-tree design, while the Ironwood transaction-format chapter explains v6 personalizations and its anchor exception.
12 / END TO END

One send crosses a private lane and a public lane.

Most of the work happens inside the wallet: select notes, fetch paths, derive nullifiers, create outputs, encrypt, and prove. The network never repeats those private computations. It checks the public proof and state rules, orders the transaction, then publishes new commitments and nullifiers for wallets to scan.

Lifecycle stepper Follow Alice → Bob
Private wallet work

Select spendable notes

Public network state

No transaction yet

READ This module follows Mastering Zcash, ch. 4, PDF pp. 13–19 section by section—from setup and note selection through proof, broadcast, inclusion, and recipient detection. Perfect Money, PDF pp. 182–183 provides a compact parallel account. The Zcash Protocol Specification, §§4.6–4.7, PDF pp. 44–48 specifies Action descriptions and Orchard note creation, whose construction Ironwood reuses; §4.18.4, PDF pp. 66–69 and §§4.20–4.22, PDF pp. 70–76 cover proving, encrypted delivery, decryption, and scanning.
13 / SETTLEMENT

Proof creation, broadcast, and confirmation are different events.

Proving is private local computation. Broadcasting sends the finished public transaction to a node. Nodes check it before holding and relaying it; a miner later includes it in a block. Inclusion updates the commitment tree and nullifier set. Confirmations describe how much chain has accumulated above that state change.

Settlement pipeline Move one transaction to finality
The private transaction data has not left Alice’s wallet.
READ Mastering Zcash, §§4.8–4.9, PDF pp. 17–19 separates node validation, mempool waiting, mining, state updates, and confirmations. Perfect Money, PDF p. 16 summarizes what validators learn from the proof. The Zcash Protocol Specification, §§3.3–3.4, PDF pp. 19–20 defines chain and treestate updates; §7.1, PDF pp. 125–128 specifies transaction encoding and consensus validation.
14 / BOUNDARIES

Shielded privacy is powerful, specific, and not magical.

The protocol hides shielded senders, recipients, note values, and the link between a spent note’s commitment and nullifier. The chain still shows that a transaction exists, when it was mined, its public fee, and its opaque fields. Network observers may see traffic outside the cryptographic protocol. Optional viewing keys support selective accountability without making everyone’s ledger public.

Privacy set Grow the commitment crowd
72 commitments
Your membership proof says “one of 72” — not which one.

Information boundary

Sender / recipienthidden
Shielded note valueshidden
Commitment ↔ nullifier linkhidden
Memo plaintextrecipient only
Transaction exists / mined timepublic
Fee and opaque protocol fieldspublic
IP / wallet sync behaviornetwork layer
Owner-selected viewing accessselective
Formal assurance map Follow Ironwood’s machine-checked proof chain

The formal model is tied to the verifier Ironwood actually runs.

The Rust verifier’s final multi-scalar multiplication is represented as a symbolic fingerprint. Captured one- and multi-Action executions are checked against that formal object so the proof is about the deployed verification path, not merely a similar protocol sketched on paper.

Machine-checked evidence Verifier fingerprint matches captured executions

Part of a public Lean development containing more than 2,700 theorems.

What this does—and does not prove: under explicit assumptions, the model rules out undetectable counterfeiting in Ironwood’s balance-integrity design. It does not prove privacy, eliminate every implementation bug, or remove assumptions such as discrete-log hardness, signature security, and the random-oracle/algebraic-group models.
READ Perfect Money, PDF pp. 182–183 explains the pool-wide crowd and what the proof omits; ch. 17, PDF pp. 205–214 discusses shielded use, usability, and selective disclosure. Mastering Zcash, ch. 5, PDF pp. 20–25 supplies the broader privacy argument. The Zcash Protocol Specification, §1.2, PDF pp. 9–10 states the protocol’s privacy goals; §§3.8–3.9, PDF p. 23 separates public commitments from the double-spend set, and §4.20, PDF pp. 70–74 specifies encrypted note delivery.
15 / EVOLUTION

The cryptography evolves; the mental model endures.

Zcash moved from research proposals to Sprout, Sapling, Orchard, and now Ironwood as proving became faster, mobile-friendly, and free of trusted setup. Upgrades can change pools, circuits, formats, and proof systems. The durable idea is unchanged: private notes, public commitments, unlinkable nullifiers, encrypted delivery, and proofs of valid state transitions.

Protocol timeline Explore what changed—and what did not

PRIVATE NOTES COMMITMENTS NULLIFIERS VALIDITY PROOFS
READ Perfect Money, chs. 12–13, PDF pp. 152–173 traces Zerocoin and Zerocash; chs. 15–16, PDF pp. 186–202 covers trusted setups, Halo, Halo 2, and Orchard. Mastering Zcash, §6.1, PDF pp. 25–26 compares Sprout, Sapling, and Orchard. The Zcash Protocol Specification, §4.2, PDF pp. 38–42 compares Sprout, Sapling, and Orchard key structures; §5.4.10, PDF pp. 113–115 records their proving systems, and §6, PDF p. 124 onward specifies the network-upgrade mechanism. For the current transition, ZODL’s activation notice records Ironwood’s July 28, 2026 launch, and ZIP 258 specifies its relationship to the restricted Orchard pool. The Project Tachyon announcement thread summarizes the collaboration, while its technical report and the public Ironwood verification book describe the 2,700-plus Lean theorems, proof chain, assumptions, and scope. For the forward-looking timeline, ZIP 2005 and the Ironwood Book’s quantum-recoverability chapter distinguish Ironwood’s deployed note-format prerequisite from the future recovery protocol. An Alex Pruden explainer thread emphasizes the trigger, implementation, and pool-scope caveats, while a Project Tachyon roadmap thread separates near-term recoverability, post-quantum-private payment delivery, and future post-quantum soundness. For scaling, the official Tachyon overview identifies transaction size, verification cost, and unbounded validator state as scaling constraints, while a Zcash Engineering Office Hours description characterizes the design as a path to thousands of shielded transactions per second—not a deployed benchmark.
16 / SCALING

Zcash must relieve several bottlenecks—not chase one TPS number.

Scaling a private payment system is not one line on a chart. Wallets must create proofs and find their funds, blocks must carry and verify transactions, and validators must retain enough state to reject double-spends. Earlier upgrades made shielded payments practical on ordinary devices and removed trusted setup, but today’s protocol still makes every wallet scan public output data and every validator retain revealed nullifiers. The graph below shows qualitative scaling headroom across those separate constraints; it is a sourced direction map, not a synthetic benchmark score.

Scaling profile Follow one bottleneck across protocol eras

Current parameters · estimate ≈2.9 shielded TPS

A draft NU7 analysis estimates the theoretical ceiling for two-Action Orchard-format transactions under today’s 75-second, 2 MB block parameters.

NU7 candidate · proposed ≈6.1 shielded TPS

The same draft proposes 25-second blocks plus action limits. This is a separate consensus-capacity step, not Tachyon and not active today.

Tachyon · architectural target ≈100× smaller data

Project Tachyon describes two orders of magnitude less transaction data and a path to throughput in the thousands, pending implementation and review.

These anchors are intentionally not plotted as one continuous TPS series: the first two are block-parameter capacity estimates for the current protocol, while Tachyon is a proposed protocol redesign without a production benchmark or final consensus parameters.

READ Zcash’s Sapling proving retrospective explains the work that reduced proving time and memory costs; ZIP 307 specifies compact wallet scanning, and the Orchard Action design explains paired Actions and proof tradeoffs. The draft 25-second block-spacing ZIP supplies the current 2.9 TPS estimate and proposed 6.1 TPS capacity. Project Tachyon’s homepage and technical overview state the proposed transaction-size and bounded-state goals; the Zcash Engineering Office Hours description characterizes them as a path to thousands of shielded transactions per second.
17 / ROADMAP

Tachyon aims to make private payments scale without giving up privacy.

Tachyon is a proposed new Zcash shielded pool, independent of today’s Ironwood pool—not a feature running on mainnet today. It keeps the durable model of private notes and public validity proofs, but redesigns the protocol around proof-carrying data so prior verified work can be compressed and carried forward. The reason is scale: today’s shielded transactions are large and costly to verify, while every revealed nullifier adds to validator state that grows with the chain. Tachyon targets smaller marginal transaction data, aggregated validation work, and bounded active state without weakening shielded privacy.

Scale target
A path to thousands of shielded transactions per second—not a benchmark.

Project Tachyon describes a proposed two-orders-of-magnitude reduction in transaction data, horizontally scalable proof aggregation, and removal of unbounded nullifier-state growth. Together those changes are intended to make throughput in the thousands plausible. The final rate will depend on implementation performance, consensus parameters, network capacity, and review; no production Tachyon network exists yet.

Proposed
Active development, not an activation promise

As of July 29, 2026, Ragu and the Tachyon protocol are under construction. Testnet work, optimization, security review, a Zcash Improvement Proposal, and community consensus are gates before any mainnet activation.

Bottleneck 01 Large marginal proof data

Fold prior validity into a carried proof instead of repeating independent proof overhead.

Bottleneck 02 Repeated verification

Let block producers aggregate shielded transactions without requiring wallets to coordinate.

Bottleneck 03 Ever-growing active state

Use evolving nullifiers and oblivious synchronization so old nullifier history can be pruned.

Parallel track Private note delivery

Separate payment delivery from the on-chain pool and explore scalable, post-quantum-private options.

PCD folding lab Compress a batch without coordinating wallets
Independent shielded transactions
Before aggregation
Tachyon target

Conceptual demonstration only: it shows the direction of proof aggregation, not final transaction encoding, proof size, throughput, or a production benchmark.

READ The official Tachyon overview describes PCD aggregation at block production and its goal of reducing marginal size and verification cost. The project homepage summarizes the proposed transaction-data reduction as two orders of magnitude, and the Zcash Engineering Office Hours description frames the result as a path to thousands of shielded transactions per second. The Ragu Book is the project’s technical guide to the recursive proving machinery beneath those PCD claims. The Ragu repository documents the under-development, no-trusted-setup PCD framework.
Oblivious sync lab Prove “still unspent” without exposing the coin
01 · WALLET Evolve an unlinkable handle

The wallet’s actual nullifier remains secret while its synchronization handle changes over time.

handle · waiting
02 · SERVICE Process the public ledger

An untrusted service updates proof work without learning the wallet’s note or eventual on-chain nullifier.

ledger delta · waiting
03 · WALLET PROOF Carry validity forward

The wallet receives a succinct proof that the private funds remain valid through a checkpoint.

unspent proof · waiting
04 · VALIDATOR Retire covered history

A later spend carries proof-backed state, allowing old nullifier history to leave the active set.

pruning · waiting
Today’s active nullifier state · illustrative units

Tachyon’s bounded-state target · illustrative units

Service may receiveAn evolving, unlinkable synchronization request and public ledger data.
Service does not learnThe actual nullifier, note contents, or a link to the later transaction.
Wallet may switchThe research model allows changing services without repeating all prior work.

This animation uses checkpoints and state bars as teaching aids. They are not Tachyon parameters or claims about exact retention windows.

READ Bowe and Miers, A Note on Notes, introduces evolving nullifiers and oblivious synchronization; the Tachyon overview explains how the technique targets permanent nullifier pruning while preserving ledger indistinguishability.
Roadmap gate Explore what must happen before activation

READ The official Tachyon roadmap sequences Ragu, payment-protocol research, a new shielded protocol and testnet, then ZIP review and community-approved mainnet activation. The protocol repository distinguishes implemented core plumbing from proof, nullifier, and compression work still in progress.

The whole mechanism in six moves.

Zcash is not an invisible ledger. It is a public ledger of cryptographic state transitions whose private facts remain with the participants. A note’s creation and later spend are both public state changes, but their connection is not published.

01Wallets hold capabilities

Keys let a wallet receive, see, disclose, or spend.

02Value lives in notes

Spends create fresh notes; their outputs may also carry encrypted memos.

03A commitment marks creation

A public fingerprint represents a new private note without revealing its contents.

04A nullifier marks a spend

The spent marker stops replay without revealing which earlier commitment it closes.

05A proof enforces the rules

Existence, control, correctness, and balance—without the witness.

06The chain orders the result

New commitments and nullifiers become shared state for the next send.

Sources and reading map

Mastering Zcash

Maxime Desalle · technical overview used for protocol mechanics and the end-to-end transaction walkthrough.

Open the PDF
  • PDF pp. 4–12: ledger basics, pools, notes, commitments, nullifiers, keys
  • PDF pp. 13–19: complete shielded transaction lifecycle
  • PDF pp. 20–25: privacy philosophy and tradeoffs
  • PDF pp. 25–26: Sprout, Sapling, and Orchard evolution

Perfect Money

Frank Michael Porter · historical and conceptual account used for motivation, proof intuition, protocol lineage, and selective disclosure.

Open the PDF
  • PDF pp. 12–21: shielded transaction versus traceable ledger
  • PDF pp. 152–183: Zerocoin, Zerocash, and proof without disclosure
  • PDF pp. 186–202: trusted setup, Halo, Halo 2, and Orchard
  • PDF pp. 205–214: shielded use, usability, and viewing keys

Zcash Protocol Specification

Version v2026.7.0-82-g91698b [NU6.2] · the supplied pre-Ironwood specification used to ground the inherited Orchard-protocol mechanics. NU6.3 additions are cited separately from current sources.

Open the PDF
  • PDF pp. 14–23: keys, shielded pools, notes, commitments, nullifiers, transfers, trees, and treestates
  • PDF pp. 28–37: key agreement, derivation, signatures, and zero-knowledge proving systems
  • PDF pp. 44–76: Actions, note creation, Merkle paths, proofs, encryption, decryption, and scanning
  • PDF pp. 113–136: proving systems, address and key encodings, network upgrades through NU6.2, and transaction encoding

Ironwood · active shielded pool

Current NU6.3 sources for activation, formal balance-integrity assurance, wallet routing, pool state, and migration from the now-restricted Orchard pool.

Open the dashboard Read the launch note Migration guide Formal verification report
  • ZIP 258: separate Ironwood state, inherited Orchard protocol, and Orchard restrictions
  • ZIP 318: receiver routing and privacy-preserving Orchard-to-Ironwood migration
  • ZIP 326: key reuse, decryption, and scanning across the two pools
  • ZIP 2005 and ZIP 229: quantum-recoverable notes and version 6 Ironwood transaction encoding
  • Ironwood verification book: machine-checked proof structure, assumptions, and security definitions

Project Tachyon · current roadmap sources

Primary project material used only for the forward-looking Tachyon chapter; roadmap claims are labeled as proposed rather than deployed.

Open the overview Open The Ragu Book
  • Official overview: scaling limits, PCD aggregation, oblivious synchronization, and payment-layer separation
  • Official roadmap: Ragu, payment and shielded protocols, testnet, ZIP review, and community approval
  • Bowe–Miers preprint: evolving nullifiers and oblivious synchronization
  • The Ragu Book: technical construction and recursive-proof foundations behind Tachyon’s PCD layer
  • Ragu and Tachyon repositories: implementation scope and current development status
The core explainer paraphrases the two supplied books and pairs them with topic-specific citations to the supplied NU6.2 Zcash Protocol Specification, using each PDF’s displayed page numbers. Because that PDF predates NU6.3, current Ironwood pool, routing, and migration statements are grounded in the linked ZIPs and live project sources. The Tachyon chapter additionally reflects the linked official project sources, including The Ragu Book, as of July 29, 2026. This is an educational model, not a substitute for the normative protocol specification. Hashes, addresses, note values, tree sizes, transaction IDs, checkpoints, state units, and timings inside the demos are illustrative.