We released Zebra 7.0.0 on October 22, the first stable Zebra release that supports NU7 on Mainnet, which activates at height 3,543,405, planned for around November 5 per the NU7 timeline. From October 27 to 29 the team was at Zcon7 in Cancún, taking part in workshops, panels and debates and helping to facilitate small group discussions at the end of each day. Miners there told us Zebra was too slow at building templates, accepting blocks and relaying them. In response, we published Zebra 7.1.0-alpha.0, which we call Zebra Ándale, an alpha release for miners and mining pools built from our new next branch. You can read more in the Zebra 7.0.0 release post and the Zebra Ándale post.
Security
Zebra 7.0.0 fixes seven security issues. Six of them were ways a peer could stall a node’s syncing, keep its verification busy, or get honest peers banned, and one could crash zebrad.
CI / DevOps
We added a next branch where we can merge larger changes quickly and run them on their own test nodes, so we can compare them with the main branch before they go into a stable release. Its documentation is published separately at zebra.zfnd.org/next. Our own nodes now report release health, chain height and the cause of each crash to Sentry, the error tracking service we use, and record each deploy there, so we can quickly see whether a new release crashes or stalls. We also made the test suite faster and more reliable: unit tests on CI now take about 260 seconds instead of about 430, tests wait for events instead of sleeping for a fixed time, and mocked services now fail the test when they lose a request. We also fixed three tests that were passing without testing anything. Finally, we enrolled Zebra in Anthropic’s OSS Scanner, a free service that regularly scans open source projects for security problems and reports what it finds privately to our security contact.
Other Zebra work
We set the NU7 activation height on Mainnet in Zebra 7.0.0, which is supported for 8 weeks instead of the usual 12. Zebra now announces new blocks to busy peers without waiting for them. Nodes that don’t use Sentry no longer carry its overhead when they verify and store blocks. Network metrics no longer have a label for each peer, so operators with their own dashboards should check the release notes. Operators who run zcashd beside Zebra through the zcashd-compat sidecar now get a build that follows NU7.
We also implemented the z_converttex RPC method, which turns a transparent address into a TEX address, as specified in ZIP 320.
On the main branch, Zebra now sends small messages to peers without delay, which removes delays of 40 milliseconds or more when it relays transactions to other peers.
Work in progress
NU7 activates on Mainnet around November 5, and we are tracking the last items in the readiness issue. After that, we will bring the next branch changes into a stable release, shaped by what miners report from Zebra Ándale. We are also reviewing optional block pruning, which lets a node delete old block data to save disk space. Nodes will still keep the full chain by default.
Work on other repositories
Zeeder. Our DNS seeder v1.8.0 supports NU7 on Mainnet. It builds on the Zebra 7.0.0 crates and advertises the NU7 protocol version, so upgraded nodes keep accepting it after activation. It also reports whether it has seen NU7 activate in its metrics. Seeder operators should deploy it before activation.
zcashd. We released zebra-compat-v1.3.0, the zcashd build Zebra uses as its zcashd-compat sidecar, updated to follow NU7.
Thanks to external contributors
Thanks to @DrVelvetFog for capping transaction requests, @Anirudh-712 for fixing how Zebra displays TEX addresses, and @kriss39 for making sure Zebra no longer loses reports about misbehaving peers while it is busy.
Thanks to the security researchers who reported the issues fixed in Zebra 7.0.0: @saxenism, @SphereDonout, @x15-eth, @asafmod and @janneh2000. Thanks also to @manus-pi, @ouicate and @Nathanbyarugaba, who found one of the same issues independently.