Skip to content

Zebra 1.4.0

Compare
Choose a tag to compare
@github-actions github-actions released this 07 Nov 01:22
· 213 commits to main since this release
477da1a

Zebra 1.4.0 - 2023-11-07

Zebra's mining RPCs are now available in release builds. Our Docker images are significantly
smaller, because the smaller Zcash verification parameters are now built into the zebrad binary.
Zebra has updated to the shared Rust dependencies from the zcashd 5.7.0 release.

Zebra recovers better from brief network interruptions, and avoids some network and verification
denial of service and performance issues. We have restored our macOS tests in CI, and now support
macOS on a best-effort basis.

We have changed our documentation website URL, and we are considering deprecating some Docker image
tags in release 1.5.0 and later.

Deprecation Warnings

This release has the following deprecation warnings:

Warning: Deprecation of DockerHub Image Tags in a future release

Zebra currently publishes 11 DockerHub tags for each new release.
We want to reduce the number of DockerHub tags we publish in a future minor Zebra release.

Based on usage and user feedback, we could stop publishing:

  • The 1 tag, which updates each release until NU6
  • The 1.x tag, which updates each patch release until the next minor release
  • The 1.x.y tag, which is the same as v1.x.y
  • The sha-xxxxxxx tag, which is the same as v1.x.y (for production releases)

We also want to standardise experimental image tags to -experimental, rather than .experimental.

So for release 1.5.0, we might only publish these tags:

  • latest
  • latest-experimental (a new tag)
  • v1.5.0
  • v1.5.0-experimental

Please let us know if you need any other tags by opening a GitHub ticket.

We recommend using the latest tag to always get the most recent Zebra release.

Warning: Documentation Website URL Change

We have replaced the API documentation on the doc.zebra.zfnd.org
website with docs.rs. All links have been updated.

Zebra's API documentation can be found on:

  • docs.rs, which renders documentation for the
    public API of the latest crate releases;
  • doc-internal.zebra.zfnd.org, which renders
    documentation for the internal API on the main branch.

doc.zebra.zfnd.org stopped being updated a few days before this release,
and it will soon be shut down.

Significant Changes

This release contains the following significant changes:

Mining RPCs in Production Builds

Zebra's mining RPCs are now available in release builds (#7740). Any Zebra instance can be used
by a solo miner or mining pool. This stabilises 12 RPCs, including getblocktemplate, submitblock,
getmininginfo, getnetworksolps, [z_]validateaddress and getblocksubsidy. For more information,
read our mining blog post.

Please let us know
if your mining pool needs extra RPC methods or fields.

Zcash Parameters in zebrad Binary

zebrad now bundles zk-SNARK parameters directly into its binary. This increases the binary size
by a few megabytes, but reduces the size of the Docker image by around 600 MB because
the parameters don't contain the Sprout proving key anymore. The zebrad download
command does nothing, so it has been removed.

Previously, parameters were stored by default in these locations:

  • ~/.zcash-params (on Linux); or
  • ~/Library/Application Support/ZcashParams (on Mac); or
  • C:\Users\Username\AppData\Roaming\ZcashParams (on Windows)

If you have upgraded zebrad to 1.4.0 or later, and zcashd to 5.7.0 or later, you can delete the
parameter files in these directories to save approximately 700 MB disk space.

zcashd have deprecated their fetch-params.sh script,
so it can't be used to retry failed downloads in zebrad 1.3.0 and earlier.

We recommend upgrading to the latest Zebra release to avoid download issues in new installs.

macOS Support

macOS x86_64 is now supported on a best-effort basis. macOS builds and some tests run in Zebra's CI.

Security

  • Reconnect with peers after brief network interruption (#7853)
  • Add outer timeouts for critical network operations to avoid hangs (#7869)
  • Set iterator read bounds where possible in DiskDb, to avoid a known RocksDB denial of service issue (#7731, #7732)
  • Fix concurrency issues in tree key formats, and CPU usage in genesis tree roots (#7392)

Removed

  • Remove the zebrad download command, because it no longer does anything (#7819)

Added

  • Enable mining RPCs by default in production builds (#7740)
  • Re-enable macOS builds and tests in CI (#7834)
  • Make macOS x86_64 a tier 2 supported platform in the docs (#7843)
  • Add macOS M1 as a tier 3 supported platform (#7851)

Changed

  • Build Sprout and Sapling parameters into the zebrad binary, so a download server isn't needed (#7800, #7844)
  • Bump ECC dependencies for zcashd 5.7.0 (#7784)
  • Refactor the installation instructions for the s-nomp mining pool software (#7835)

Fixed

  • Make the latest Docker tag point to the production build, rather than the build with experimental features (#7817)
  • Fix an incorrect consensus-critical ZIP 212 comment (#7774)
  • Fix broken links to zebra_network and zebra_state Config structs on doc-internal.zebra.zfnd.org (#7838)

Contributors

Thank you to everyone who contributed to this release, we couldn't make Zebra without you:
@arya2, @gustavovalverde, @mpguerra, @oxarbitrage, @rex4539, @teor2345, @upbqdn, and @vuittont60.