We’re excited to announce the release of Zebra 3.0.0—the most feature-rich Zebra release ever! In addition to supporting NU6.1, the latest network upgrade, we’ve also focused on making Zebra easier to run in production, faster to sync, and available on more platforms.
Zebra 3 at a Glance
Here’s what’s new in this release:
- NU6.1 Network Upgrade – Activates the latest Zcash protocol upgrade on Mainnet
- Health Check Endpoints – Built-in HTTP endpoints for monitoring node health and readiness in production deployments
- ARM64 Support – Native support for Apple Silicon Macs (M1/M2/M3), Raspberry Pi, and ARM cloud servers
- Dramatically Faster Initial Sync – Full blockchain sync from genesis now takes 15-16 hours in CI and less than 9 hours on some machines, down from 24+ hours (representing a 35-65% reduction in initial sync time)
- Enhanced Security – Docker images now include software bill of materials (SBOM) and build attestations
- Easier Configuration – Configure Zebra using environment variables without editing config files
- Improved Network Infrastructure – Zcash Foundation now runs highly-available Zebra nodes to better support the ecosystem
- New RPC Methods – Three new methods for network info, mempool stats, and side chain queries plus several new fields on the outputs of existing RPC methods.
- Faster Testing – Modernized test infrastructure for quicker development cycles
New Versioning approach – Major version numbers now indicate breaking changes, not just network upgrades. This helps you understand when updates need extra attention.
What This Means for You
If you run Zebra in production
You can now set up health monitoring with load balancers and orchestration tools like Kubernetes. ARM64 support opens up more hardware options including cost-effective ARM cloud instances. The Zcash Foundation is also now running highly-available infrastructure which benefits the entire ecosystem.
If you’re setting up Zebra for the first time
Zebra is now easier to configure, allowing you to set environment variables instead of editing config files. Initial sync is dramatically faster (15-16 hours instead of 24+ hours)—and if you’re on an Apple Silicon Mac, you’ll get native ARM64 performance without any extra steps.
If you build tools that use Zebra
Three new RPC methods provide better access to network information, mempool data, and side chain queries. We’ve also improved transaction validation performance and made many enhancements to existing RPC methods.
If you contribute to Zebra
Our modernized testing infrastructure means faster CI runs and quicker feedback on pull requests. The codebase also benefits from numerous code quality improvements and better documentation.
The Details
Want to know more? Here’s a deeper look at what’s in this release.
Network Upgrade & Protocol Changes
NU6.1 Network Upgrade
Zebra 3.0.0 activates NU6.1 on Mainnet, which includes:
- Extended funding streams for network development (1,260,000 additional blocks)
- One-time lockbox disbursements
- The latest network protocol version (170_140)
Operational Excellence
This release includes several features specifically designed to make running Zebra in production easier and more reliable.
Health Check Endpoints for Production Operations
One of the standout features is the addition of HTTP health check endpoints. These simple HTTP endpoints make it straightforward to integrate Zebra with production monitoring and load balancing systems.
Two endpoints are available:
/healthy– Returns 200 when Zebra is running and has active peer connections, 503 otherwise/ready– Returns 200 when Zebra is fully synced and ready to serve requests, 503 otherwise
The difference matters for production deployments: use /healthy for basic liveness checks (is the process running?) and /ready to ensure you only send traffic to fully synchronized nodes with active peer connections.
Enable the health check server by adding a [health] section to your configuration:
[health]
listen_addr = "0.0.0.0:8080"
min_connected_peers = 1
ready_max_blocks_behind = 2
The endpoints are disabled by default and designed for internal infrastructure use (no authentication). They return simple plain-text responses like “ok” or brief explanations when checks fail.
ARM64 Support: Native Performance Everywhere
Zebra now runs natively on ARM64 platforms, which means:
- Apple Silicon Macs (M1, M2, M3) – No more emulation or Rosetta overhead
- ARM cloud instances – AWS Graviton, Google Cloud Tau T2A, and other ARM servers
- Single-board computers – Raspberry Pi and similar devices
Docker automatically handles platform detection:
docker pull zfnd/zebra:latest
# Automatically gets the right version for your platformThis change takes advantage of GitHub’s free ARM64 runners for open source projects, so we can build and test ARM64 releases without additional infrastructure costs. The result is native performance on ARM platforms without any setup complexity.
Enhanced Docker Image Security
For organizations that need to audit their software supply chain, Zebra’s Docker images now include provenance attestations and Software Bill of Materials (SBOM).
What this means:
- Provenance attestations track exactly how the image was built, where, and by whom
- SBOM provides a complete inventory of all software components in the image
- Both enable security scanning, vulnerability tracking, and compliance reporting
These features integrate with tools like Docker Scout, Snyk, and other security platforms that can automatically scan for known vulnerabilities.
Improved Network Infrastructure
The Zcash Foundation has upgraded its deployment infrastructure to run long-lived, highly-available Zebra nodes. These improvements directly benefit the Zcash ecosystem:
- DNS Seeder Support – Long-lived nodes with static IP addresses provide reliable peer discovery for the network
- Multi-zone High Availability – Running 2-3 instances across availability zones ensures consistent uptime
- Automatic Health Monitoring – Uses the new
/healthyendpoint with auto-healing to maintain service reliability - Persistent Storage – Disk reuse between deployments eliminates lengthy re-syncs, ensuring nodes stay current
These long-lived nodes with static IP addresses help support the broader Zcash ecosystem by providing stable infrastructure for DNS seeders and improving overall network reliability. While this work is specific to the Foundation’s infrastructure, the underlying improvements to Zebra’s deployment tooling are available for anyone running production nodes.
Performance Improvements
Dramatically Faster Initial Sync: From 24+ Hours to Under 16 Hours
This release delivers a significant performance achievement: full blockchain synchronization from genesis now completes in 15-16 hours, down from 24+ hours in previous versions. This represents a 35-40% reduction in sync time.
The improvement comes primarily from PR #9973, which fixed a regression in how Zebra updates address balances in the database. The fix avoids expensive RocksDB merge operations when the database format is already up-to-date, dramatically improving write performance during initial sync.
This is combined with batch validation improvements for both Orchard and Sapling proofs, which reduce computational overhead during block validation.
Real-world impact: Our continuous integration tests show consistent sync times of 15-16 hours for full Mainnet sync from genesis, compared to 20-28 hours before these optimizations. If you’re running a new Zebra node or syncing from scratch, you’ll see this improvement immediately.
Better Performance Through Batch Validation
Transaction validation is now more efficient thanks to:
Batch validation reduces computational overhead during block processing by validating groups of proofs together, which is more efficient than individual verification. The batch size for Orchard validation increased from 2 to 64 actions per batch.
Developer Experience
Easier Configuration with Environment Variables
Zebra now uses a layered configuration system that makes it easier to configure through environment variables:
export ZEBRA_NETWORK__NETWORK=Mainnet
export ZEBRA_STATE__CACHE_DIR=/var/cache/zebra
export ZEBRA_RPC__LISTEN_ADDR=0.0.0.0:8232
zebrad startThe configuration loads in layers: built-in defaults, then optional TOML file, then environment variables. This means you can:
- Run Zebra with zero configuration files for simple setups
- Use a base configuration file and override specific values via environment variables
- Keep secrets in environment variables instead of config files
The pattern for environment variables is ZEBRA_SECTION__KEY, matching the TOML structure. For example, [network] section’s network = "Mainnet" becomes ZEBRA_NETWORK__NETWORK=Mainnet.
Important: This change includes breaking updates to environment variable names. See the Migration Notes section below.
New RPC Methods
Three new RPC methods improve compatibility with existing tools:
RPC Improvements
Many existing RPC methods received enhancements:
Faster Development with Improved Testing
This release includes a complete modernization of the testing infrastructure using cargo-nextest:
- Faster test execution – Better parallel test running
- Centralized test configuration – 17 specialized test profiles in
.config/nextest.toml - Clearer test results – Better progress reporting and timeout handling
- Simplified CI workflows – Reduced complexity in GitHub Actions
For contributors, this means quicker feedback on pull requests and less time waiting for CI to complete.
New Versioning Strategy
Starting with Zebra 3.0.0, we’re changing how we version releases. Previously, major version bumps were primarily tied to network upgrades. Going forward, we’ll release a new major version whenever there are breaking changes, which includes:
- Changes to the Zebra API
- Changes to operational requirements (like configuration format)
- Other modifications that require action from node operators or developers
This approach gives us a clearer way to communicate impact. When you see a major version bump, review the release notes carefully and plan for potential updates to your deployment or integration. Minor version bumps will continue to be backward compatible.
Migration Notes
If you’re upgrading from Zebra 2.x, please note these breaking changes.
Environment Variable Changes
The environment variable naming scheme changed. Key updates:
| Old Variable | New Variable |
|---|---|
ZEBRA_CACHE_DIR | STATE_CACHE_DIR |
ZEBRA_FORCE_USE_COLOR | FORCE_USE_COLOR |
RUST_LOG or ZEBRA_RUST_LOG | ZEBRA_TRACING__FILTER |
For configuration values, use the pattern ZEBRA_SECTION__KEY:
ZEBRA_NETWORK__NETWORK=MainnetZEBRA_RPC__LISTEN_ADDR=0.0.0.0:8232ZEBRA_STATE__CACHE_DIR=/var/cache/zebra
Docker Entrypoint Changes
The Docker entrypoint no longer generates TOML configuration files automatically. Instead:
- Configure using environment variables (recommended)
- Mount a configuration file into the container
- Use a combination of both approaches
Acknowledgments
A big thank you to all the contributors who made this release possible: @arya2, @oxarbitrage, @conradoplg, @gustavovalverde, @syszery, @upbqdn, @str4d, @nuttycom, @zancas, @natalieesk, @gap-editor, @elijahhampton, @dorianvp, @AloeareV, @sashass1315, @radik878, @GarmashAlex, @Galoretka and @Fibonacci747.
Special recognition goes to Least Authority for the security audit of the NU6.1 implementation which provided valuable suggestions for improvements.
Thank you to everyone who filed issues, tested release candidates, and provided feedback throughout this release cycle.
The Bigger Picture
The Z3 Stack
Zebra 3.0.0 is designed to integrate seamlessly with the other Z3 components. We’ve been developing the Z3 stack, which is a complete deployment solution for Zcash infrastructure. The stack includes:
- Zebra – The consensus node (this release)
- Zaino – The indexer for address and transaction data
- Zallet – The CLI wallet service
These components work together to provide a complete, production-ready Zcash infrastructure that you can deploy with a single configuration.
Zebra 3.0.0 represents a significant step forward in making Zebra production-ready. The features in this release—health checks, ARM64 support, and improved configuration—provide a strong foundation for reliable node operations.
We’re continuing to develop the Z3 stack to provide a complete, easy-to-deploy solution for Zcash infrastructure. We’re also working on future network upgrade support, including early implementations of proposals for NU7.
Get Involved
Questions or feedback? We’d love to hear about your experience with Zebra 3.0.0. Share your thoughts on the Zcash Community Forum, connect with us on Discord, or open an issue in the Zebra repository:
