ZcashFoundation / zebra

Zcash - Financial Privacy in Rust 🦓
https://zfnd.org/zebra/
Apache License 2.0
412 stars 106 forks source link
rust zcash zcash-node zebra

Zebra logotype


Integration Tests CI OSes Continuous Delivery codecov Build docs License

About

Zebra is a Zcash full-node written in Rust.

Zebra implements all the features required to reach Zcash network consensus, and the network stack is interoperable with zcashd. Here are some benefits of Zebra.

Zebra validates blocks and transactions, but needs extra software to generate them:

Please join us on Discord if you'd like to find out more or get involved!

Getting Started

You can run Zebra using our Docker image or you can build it manually. Please see the System Requirements section in the Zebra book for system requirements.

Docker

This command will run our latest release, and sync it to the tip:

docker run zfnd/zebra:latest

For more information, read our Docker documentation.

Manual Build

Building Zebra requires Rust, libclang, and a C++ compiler.

Zebra is tested with the latest stable Rust version. Earlier versions are not supported or tested. Any Zebra release can start depending on new features in the latest stable Rust.

Around every 6 weeks, we release a new Zebra version.

Below are quick summaries for installing the dependencies on your machine.

#### General instructions for installing dependencies 1. Install [`cargo` and `rustc`](https://www.rust-lang.org/tools/install). 2. Install Zebra's build dependencies: - **libclang** is a library that might have different names depending on your package manager. Typical names are `libclang`, `libclang-dev`, `llvm`, or `llvm-dev`. - **clang** or another C++ compiler: `g++` (all platforms) or `Xcode` (macOS). - **[`protoc`](https://grpc.io/docs/protoc-installation/)** > [!NOTE] > Zebra uses the `--experimental_allow_proto3_optional` flag with `protoc` > during compilation. This flag was introduced in [Protocol Buffers > v3.12.0](https://github.com/protocolbuffers/protobuf/releases/tag/v3.12.0) > released in May 16, 2020, so make sure you're not using a version of `protoc` > older than 3.12.
#### Dependencies on Arch ```sh sudo pacman -S rust clang protobuf ``` Note that the package `clang` includes `libclang` as well as the C++ compiler.

Once the dependencies are in place, you can build and install Zebra:

cargo install --locked zebrad

You can start Zebra by

zebrad start

Refer to the Installing Zebra and Running Zebra sections in the book for enabling optional features, detailed configuration and further details.

Documentation

The Zcash Foundation maintains the following resources documenting Zebra:

User support

For bug reports please open a bug report ticket in the Zebra repository.

Alternatively by chat, Join the Zcash Foundation Discord Server and find the #zebra-support channel.

We maintain a list of known issues in the Troubleshooting section of the book.

Security

Zebra has a responsible disclosure policy, which we encourage security researchers to follow.

License

Zebra is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT.

Some Zebra crates are distributed under the MIT license only, because some of their code was originally from MIT-licensed projects. See each crate's directory for details.