Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Installation

There are multiple ways to install the zallet binary. The table below has a summary of the simplest options:

EnvironmentCLI command
DebianDebian packages
UbuntuDebian packages

Help from new packagers is very welcome. However, please note that Zallet is currently BETA software, and is rapidly changing. If you create a Zallet package before the 1.0.0 production release, please ensure you mark it as beta software and regularly update it.

Choosing a chain backend

Zallet supports two chain backends. Each is a separate binary (built from its own cargo workspace, so the two can track different zebra releases), and the zallet command is a small launcher that runs whichever backend your config file names:

# zallet.toml — the default if the key is absent is "zebra"
backend = "zaino"
BackendDefaultPlatformReaches the chain viaRequiresRegtest
zebraYesLinux onlyco-located zebrad’s state database (ReadStateService)zebrad built with the indexer feature + [indexer.read_state_service] config + shared state dirNo
zainoNoLinux, macOS, Windowsco-located zebrad’s JSON-RPC endpoint (optionally reads state directly when [indexer.read_state_service] is set)co-located zebrad JSON-RPC endpointYes

The zebra backend is the default. It reads finalized chain state directly from a co-located zebrad’s state database and is the recommended choice for production mainnet use on Linux. It only works against a zebrad built with the non-default indexer feature.

The zaino backend fetches chain data over JSON-RPC. It is the only backend that supports regtest and non-Linux platforms, and it does not require the zebrad indexer feature — so it is the right choice when Zebra and Zallet run as separate services/containers over JSON-RPC (for example, the stock zfnd/zebra images or the z3 stack), or when you need regtest.

Pre-compiled artifacts (Docker image / Debian package)

The official Docker image and Debian package ship the launcher and both backends:

BinaryRoleNotes
zalletlauncherthe default command / image ENTRYPOINT; dispatches on the config’s backend key
zallet-zebrazebra backenddirectly runnable
zallet-zainozaino backenddirectly runnable

All three share the same CLI surface, config format, and subcommands; only the chain-data backend differs, and you can bypass the launcher by running a backend binary directly (it will refuse to run against a config whose backend key names the other backend). The GitHub Releases page ships one signed tarball per platform, zallet-<version>-linux-<arch>.tar.gz, containing all three binaries (zallet, zallet-zebra, zallet-zaino) side by side — extract it and run whichever one you need directly, or run zallet for config-driven dispatch.

Building from source with a chosen backend

Each backend is its own package in its own cargo workspace, so you install the one you want by name (plus the launcher, if you want config-driven dispatch):

# The zebra backend (Linux only, reads zebrad's state database)
cargo install --locked --git https://github.com/zcash/zallet.git zallet-zebra

# The zaino backend
cargo install --locked --git https://github.com/zcash/zallet.git zallet-zaino

# The launcher (optional; dispatches to whichever backend the config names)
cargo install --locked --git https://github.com/zcash/zallet.git zallet

Backend-independent features such as rpc-cli and zcashd-import are enabled per backend package with --features as usual.

Pre-compiled binaries

WARNING: This approach does not have automatic updates.

Executable binaries are available for download on the GitHub Releases page.

Build from source using Rust

WARNING: This approach does not have automatic updates.

To build Zallet from source, you will first need to install Rust and Cargo. Follow the instructions on the Rust installation page. Zallet currently requires at least Rust version 1.88.

WARNING: The following does not yet work because Zallet cannot be published to crates.io while it has unpublished dependencies. This will be fixed before the 1.0.0 release. In the meantime, follow the instructions to install the latest development version.

Once you have installed Rust, the following command can be used to build and install Zallet:

cargo install --locked zallet

This will automatically download Zallet from crates.io, build it, and install it in Cargo’s global binary directory (~/.cargo/bin/ by default).

To update, run cargo install zallet again. It will check if there is a newer version, and re-install Zallet if a new version is found. You will need to shut down and restart any running Zallet instances to apply the new version.

To uninstall, run the command cargo uninstall zallet. This will only uninstall the binary, and will not alter any existing wallet datadir.

Installing the latest development version

If you want to run the latest unpublished changes, then you can instead install Zallet directly from the main branch of its code repository:

cargo install --locked --git https://github.com/zcash/zallet.git