New release 5.3.0

As we mentioned in our blog posts regarding releases 5.1.0 and 5.2.0, the Zcash network is processing a significantly increased number of shielded transactions. The network remains stable and secure, transactions are being processed normally, and we are making additional performance improvements in 5.3.0 to reduce concurrent memory utilization during scanning among other memory and performance related optimisations in the zcashd node.

ECC’s No. 1 priority at the moment is updating the Zcash protocol and our wallet SDKs to help third-party providers fix wallet syncing issues. An increased on-chain transaction load has resulted in unacceptable sync times for many everyday users, and ecosystem partners are also affected. We are focused — across teams — on alleviating these issues as soon as possible, so Zcash users have an experience they expect and deserve. Our immediate objectives are centered on working with third-party wallets that are built on the ECC SDKs (Edge, Nighthawk and Unstoppable) as well as continuing to make improvements to node performance and memory usage.

Wallet Performance Improvements

zcashd 5.2.0 improved the performance of wallet scanning with multithreaded batched trial decryption of Sapling outputs. However, for some nodes this resulted in growing memory usage that would eventually cause an OOM abort. We have identified the cause of the growth, and made significant improvements to reduce the memory usage of the batch scanner. In addition, the batch scanner now has a memory limit of 100 MiB.

zcashd now reports the following new metrics when -prometheusport is set:

  • (counter) zcashd.wallet.batchscanner.outputs.scanned
  • (gauge) zcashd.wallet.batchscanner.size.transactions
  • (gauge) zcashd.wallet.batchscanner.usage.bytes
  • (gauge) zcashd.wallet.synced.block.height

RPC Interface

  • The finalorchardroot field in the getblock result and the orchard.commitments.finalRoot field in the z_gettreestate result have been changed to match the byte ordering used for the orchard.anchor field in the getrawtransaction result. These previously produced different hash values from the orchard.anchor field due to having been byte-flipped in their internal representation in zcashd.

The binaries for the 5.3.0 release will be available on our download site shortly and the Zcash Schedule page has been updated to reflect this release.