Release: Zakura 1.7.0


We have released Zakura 1.7.0. This release activates NU7 on Zcash's Mainnet at height 3,543,405, expected around 00:50 UTC November 6.
Every Mainnet node must update. Earlier releases of Zakura will halt in the days prior to NU7's activation, but users are encouraged to update now rather than close to the deadline.
The release also removes a long list of dependencies from the node, makes pruned nodes sync substantially faster, replaces random mempool eviction with deterministic fee-based eviction, and moves our experimental P2Pv2 stack onto our own QUIC transport.
NU7 on Mainnet
The long-awaited NU7 is now slated to activate at height 3,543,405 on Mainnet. Among other things, this network upgrade brings 25-second blocks to Zcash. Issuance is unaffected and other parts of the protocol, such as funding streams, are modified to correspond with the new block interval.
Our team led the development and specification of ZIP 218 and performed extensive stress testing in anticipation of this upgrade. All of our Zakura releases have incrementally addressed network health, node performance and security over several months. These have minimized the impact on orphan rates and reduced other risks in anticipation of NU7.
NU7 has already activated on Testnet, and we have a dashboard you can use to view its current status. This dashboard will track the Mainnet activation of NU7 as well.
zcashd compatibility mode
If you run zcashd compatibility mode, the embedded zcashd automatically updates to a build that supports NU7. If your zcashd runs as a separate process from Zakura, update zcashd manually to the v1.3.0 release. Older sidecars stop following the chain at activation. Consider using our interactive installer, which can set up Zakura and zcashd together.
Fewer Dependencies
Much of this release removes code. Every dependency we drop is code Zcash users no longer have to trust:
- Transparent scripts are verified by the Rust
zcash_scriptinterpreter alone. Zakura no longer builds zcashd's C++ script interpreter. - The JSON-RPC server is now in-tree, replacing
jsonrpsee. The wire format is unchanged, and batch requests are capped at 1,000 entries. - Telemetry is gone. Sentry, OpenTelemetry trace export, and journald logging are removed, along with the terminal progress display and built-in flamegraphs. Logs and local panic diagnostics are unchanged.
- Small in-tree replacements retire
bincode,reqwest,tempfile,humantime,der, and others, and release binaries are about 5% smaller from fewer codegen units alone. - Dependency security updates.
quinn-protoandrustlsmove past their recent advisories, and the TLS validation guarding managed zcashd downloads distrusts the compromised eMudhra CA keys.
Mempool & Mining
When the mempool fills, eviction now removes the transactions paying the lowest fee for their size instead of random ones, and a newcomer must outbid everything it evicts. Selecting the victims is also thousands of times faster than the previous selector. Each connected group of unconfirmed transactions is limited to three members, which still permits parent-child-grandchild chains.
- Peers cool down instead of being banned. The mempool bans a peer only for transaction failures that cannot depend on the node's chain tip. Failures that can, such as v4 signature checks, now cause the node to ignore the peer's transactions for ten minutes, doubling up to two hours.
- Mined blocks relay sooner. The new
submitsolutionRPC submits a prepared block byworkidand solved header, repeatedgetblocktemplatepolls of unchanged content reuse the candidate the node already verified, and peers can pull a mined block while its final contextual checks run. - New blocks spread with less upload contention. Announcing a mined block to every peer at once can cause too many peers to download it from the miner simultaneously. Zakura now paces these announcements and prioritizes peers with lower measured latency, allowing other nodes to help distribute the block sooner.
- Equal-work ties break by arrival. When two chain tips have equal work, the node now stays on the one it received first instead of choosing by block hash.
- Two new RPCs.
getstandardfeereports the recommended fee per logical action, 400 zatoshis, andpreciousblocktells the node to prefer one tip among equal-work forks.
P2Pv2 Improvements
Our experimental P2Pv2 stack now runs on zakura-quic, our own QUIC transport built on the upstream quinn-proto crate, replacing the Iroh library. Node IDs, key files, and bootstrap entries carry over unchanged. Owning the transport puts admission control ahead of the cryptography: connection attempts beyond the per-IP and pending-handshake limits are refused before any TLS work begins, so floods of spoofed packets that previously could occupy every handshake slot now hold none.
The native protocol version advances, so 1.7.0 reaches earlier releases only over the legacy Zcash protocol, and handshakes and discovery records now leave room to extend the protocol without another clean break. This release also extends the resource budgets we recently wrote about across the stack:
- Connections fit in a memory budget. Each native connection's QUIC windows can hold 64 MiB that the node cannot reclaim, so the connection count now derives from
peer_memory_budget_bytes, 8 GiB by default, instead of a bare cap. The defaultmax_connectionsdrops from 256 to 92, and startup lowers an oversized configured value with a warning. - Block sync bounds every queue. Serving limits the requests each peer keeps in flight, queued block bodies are capped per connection, and a peer that has sent nothing but a status can no longer inflate the download queue.
- Header sync becomes a subscription. Renewable credit replaces per-page header requests, and the node acknowledges headers only once it has applied them. Peers whose headers fail difficulty or time validation are disconnected, and one peer rewriting its own sync target can no longer force a rescan of every idle offer. Profiling this path also turned up needless copying and reallocations; removing them raises sync throughput by about 12%.
- Discovery gets the same treatment. Each discovery message gets its own frame type and size limit, peer samples and service summaries are answered through the regulated serving path, record signatures are verified outside the address book lock, and what any one relay can add to the address book is capped.
Other Changes
- Pruned databases drop the transparent address and spender indexes, and sync substantially faster for it. Our benchmarks measured about 35% higher sync throughput with the dual stack and 49% higher with P2Pv2 alone. Pruned checkpoint-sync state stops maintaining the indexes and upgrades in place without a resync; the RPCs that need them return an explicit unavailable error, and validation and mining are unaffected. The database format advances to 30.0.0.
- Sapling miner rewards are removed, along with the bundled Sapling proving parameters. Sapling-only mining addresses now get an explicit
getblocktemplateerror; Sapling transaction validation is unchanged. - Configs fail fast. Durations no longer accept week, month, or year units (write days instead), a section written as a TOML array is rejected with its field path, and
nat_traversal = truefails at startup: QUIC NAT traversal is removed, and without relays it never gave a node new inbound reachability. - The Common libraries are updated to 4.0.0, carrying the full Mainnet schedule.
End of Support
Mainnet zakurad nodes running 1.7.0 halt at height 3,640,098 (estimated 2026-12-04, about four weeks after NU7 activates); upgrade warnings begin three days earlier.
Updating
You can update using our signed release binaries or by upgrading the zakura crate to 1.7.0 via Cargo. See the download page for installation and verification instructions.