Hi everyone,
It’s been a while since our last update but we’ve been making some big changes. We’re transitioning to a lean approach for managing our work and away from sprints, so now these will no longer be sprint updates but general updates about what we’ve been working on.
We have release Zebra v2.5.0. For details on this please see the release notes. We had to deal with a database upgrade bug that was introduced in our Zebra v2.4.0 release, but that was resolved with the v2.4.2 release. Thanks to the team for their quick work fixing this and getting a new release out.
We prepared Zebra for NU6.1 on Testnet and participated in private Testnet testing with zcashd nodes. This involved adding a one-time lockbox disbursement mechanism, updating how funding streams work in Zebra, and updating the relevant parameters to align with the specification and what’s implemented in zcashd.
We have made some performance improvements by adding caching for sighash contexts, and we are in the planning stage for some big performance and benchmarking work soon.
We have primarily focused on preparing for the deprecation of zcashd. Zebra now accepts shielded addresses in its mining config, whereas before it only accepted transparent addresses. To support block explorers, we have continued implementing various RPC methods, and added some missing fields in TransactionObject, which we are continuing to work on. To ensure the tests we’re porting from zcashd can still run, we’ve implemented the addnode RPC method. We resolved a bug which violated a consensus rule, although this issue only occurred in regtest scenarios. IPV6 is now configured by default. We’ve almost finished the work for supporting invalidating and reconsidering blocks in the NonFinalizedState via RPC methods, all that’s remaining is to cover edge cases. RPC clients are now notified when there has been a change to the mempool with information about which transactions were added or removed. We have been working on making zebra-rpc usable for implementing JSON-RPC clients downstream. Zebra-scan is no longer useful so we have removed it. For coinbase transactions, Zebra will now determine the version based on the network and height. Finally, we’ve updated TrustedChainSync
to sync all non-finalized blocks from the connected Zebra node instead of only syncing blocks from the best chain.
We have also implemented support for a Zcash dashboard and made Prometheus a default compilation feature. Additionally, we included a commented-out metrics configuration in our Docker image, which can be enabled if the feature is not explicitly selected. This enhancement allows Zebra operators to enable metrics more easily within the Docker environment.
Huge thanks to @dmidem and @PabloK for your ZSA work, @pacu for the work on the block explorer, and to @elijahhampton for adding missing fields to TransactionObject. Thank you as well to @nachog00 and @dorianvp for the PRs and issues they’ve created with some great ideas. And to @nuttycom, @str4d and @daira for all their help with reviews in Zebra.
Thank you for reading!