Zebra 5.1.0: Sync Stall Fix and Extended Peer Diagnostics
We are releasing Zebra 5.1.0 today. This release resolves a long-standing genesis-to-tip sync stall that could leave nodes stuck mid-sync, raises the minimum network protocol version to NU6.2, and extends the getpeerinfo RPC with additional peer metadata. All node operators are encouraged to upgrade.
Breaking Changes
Minimum Network Protocol Version Raised to NU6.2
Zebra now requires all peers to negotiate at least the NU6.2 protocol version (170150). Peers advertising an older version will be rejected at connection time. This ensures Zebra only connects to nodes that support the rules introduced with the NU6.2 network upgrade, and reflects the current state of the Zcash mainnet peer population. (#10692, #10704)
deferred_pool_balance_change Removed from Block Types
The deferred_pool_balance_change field has been removed from ContextuallyVerifiedBlock, SemanticallyVerifiedBlock, and CheckpointVerifiedBlock. The value is now calculated on demand rather than stored on the block struct. Code that accessed this field directly will need to be updated. (#10392)
New Features
Extended getpeerinfo RPC
The getpeerinfo RPC response now includes additional peer metadata, giving node operators and mining software richer diagnostic information about connected peers. (#10443)
Bug Fixes
Genesis-to-Tip Sync Stall Resolved
A long-standing bug (#5709) could cause Zebra to stall part-way through an initial sync from genesis. The stall occurred because repeated tip-reset events were not handled correctly, leaving the node waiting indefinitely for blocks it would never receive from the current peer set. This release tackles the symptoms of the underlying timing issue, allowing a full initial sync to complete reliably. (#10679)
getrawmempool Performance
The getrawmempool RPC previously rebuilt the mempool transaction index once per transaction when formatting the response. The index is now built a single time per call, which meaningfully reduces response latency on nodes with large mempools. (#10599)
State: dequeue_children Index Handling
A bug in the non-finalized state’s dequeue_children by-height index could produce incorrect index entries under certain block sequencing conditions. This has been corrected. (#10604)
Internal Improvements
This release includes several improvements to Zebra’s CI pipeline that strengthen the reliability of the development workflow:
- Required status checks can no longer pass before all tests have finished running. Previously, the Mergify merge queue could advance PRs before unit tests completed, allowing failing tests to slip through undetected. (#10637)
- Fixed a block-tip race condition in the
getblocktemplateintegration test that had been causing intermittent CI failures since late May. (#10702) - Restored main branch CI checks that had been broken. (#10700)
Upgrading
We encourage all Zebra node operators to upgrade to 5.1.0. The sync stall fix is particularly impactful for operators running a full initial sync — if your node has ever stalled before reaching the chain tip, this release addresses the underlying cause. You can find the release on GitHub, crates.io and Docker Hub.
Thank You to Our Contributors
This release was made possible by the work of @conradoplg, @gustavovalverde, @judah-caruso, @oxarbitrage, @syszery, and @upbqdn. Thank you for your continued contributions to Zebra.
Zebra is the Zcash Foundation’s independent, Rust-based implementation of the Zcash protocol. Learn more at github.com/ZcashFoundation/zebra.
