Run Zebra for consensus/p2p and zcashd for wallet API

zebra-zcashd-compat

Alpha

Integration Summary

This is a Zebra binary that manages a zcashd child process. Zebra is responsible for consensus and P2P. zcashd is kept for wallet and zcashd-compatible RPC surfaces. zcashd ingests chain and mempool data from Zebra over authenticated RPC. The primary purpose of this integration is to allow exchanges to smoothly migrate to Zebra node without disrupting their existing zcashd setup.

  • Trust boundary: zcashd trusts the configured Zebra node for block source and transaction forwarding.
  • Transport: zcashd talks to Zebra over RPC only (no zcashd P2P in compat mode).
  • Auth: keep Zebra cookie auth enabled and avoid exposing RPC publicly.
  • Deployment: deploy zcashd and Zebra on the same machine.
  • Lifecycle: supervised mode manages zcashd process lifecycle at runtime. For container builds, zcashd artifact fetch and SHA verification happen outside the Dockerfile before image build.

Pre-requisites

Since alongside your zcashd wallet API there is also a Zebra node, the hardware requirements are increased. Please ensure that you provision the recommended hardware before restarting from the updated binary.

Hardware requirements

  • CPU: 8 logical CPUs available to the process.
  • RAM: 32 GiB effective memory.
  • Disk: at least 1 TiB combined capacity across the filesystems used by Zebra state and zcashd datadir.

Startup fails below the minimums: 4 logical CPUs, 16 GiB RAM, 300 GiB per data volume (600 GiB if Zebra state and the zcashd datadir share a filesystem). Bypass only with --unsafe-low-specs. Linux x86_64 only.

Downloads

Binaries:

Snapshots:

Configuration

  1. Start Zebra In zcashd-compat Mode

    Default path: one Zebra binary. Zebra resolves a hash-pinned compatible zcashd build, starts it as a child process, and supervises restarts.

    zebrad start --zcashd-compat
  2. Minimal Config

    Keep supervision enabled so Zebra manages install + lifecycle.

    [zcashd_compat]
    enabled = true
    manage_zcashd = true
    zcashd_source = "managed"
    
    # Optionally, customize zcashd data directory.
    zcashd_datadir = "/path/to/zcashd/datadir"
    
    # Optionally, propagate zcashd CLI arguments via env var.
    ZEBRA_ZCASHD_COMPAT__ZCASHD_EXTRA_ARGS='["-printtoconsole"]'

    For full configuration reference, see full documentation.

FAQ

  • How do I preserve my original zcashd configuration?

    Point Zebra at your existing zcashd data directory with zcashd_datadir, and pass any required zcashd CLI arguments through zcashd_extra_args. These settings can be provided in Zebra configuration, or through equivalent runtime overrides where supported. See the full instructions for details. Remove peer-directing options (bind=, whitebind=, connect=, addnode=, seednode=) from your existing zcash.conf first. Startup fails validation if they are present.

  • If my original hardware is below the recommended specification, do I have to provision more resources?

    Yes. Because this mode runs Zebra alongside the zcashd wallet API, nodes below the minimum specification fail startup preflight; between minimum and recommended, Zebra starts with warnings but is not supported for production. Provision hardware that meets the requirements in this guide before restarting with the updated binary.

  • I have a restricted setup that does not allow IPC and also restricts networking. What do you recommend?

    Build from source and configure the components manually. This gives you direct control over how Zebra and zcashd communicate in your restricted environment.

  • How is my old zcashd config managed?

    Even if present, the system force-disables the following zcashd config parameters: p2p, listen, dnsseed, listenonion, as p2p is unused. Otherwise, zcashd would fail to start.

  • What happens if I do not have a prior config?

    A default one with sane defaults is created for you. See the full instructions for details about location.