Zakura is a fully consensus compatible Zcash full node written in Rust, built for scale. We dream of the future where Zcash can power the worlds payments. Mastercard and Visa give a lower bound, we have to first hit 50k TPS of capacity. With ongoing cryptographic optimizations to the Zcash protocol, from Project Tachyon and Valargroup, this implies consensus must be capable of at least 100MB/s of block data. The starting point today is 28 KB/s. Zakura builds for this future.
Zakura is forked off of Zebra. This first release brings major improvements over existing Zcash node software:
- Performance: Blockchain sync is nearly 5× faster than Zebra. Block execution is notably faster than Zebra, especially on worst case sandblast attacks.
- Pruning and snapshots: Native block pruning with configurable retention cuts disk usage substantially. We also publish snapshots (~11 GB pruned) that let you bootstrap a node 680× faster than syncing over the standard P2P network. See here
- zcashd compatibility: A compatibility mode reproduces the legacy zcashd RPC interface, so existing wallets and integrations keep working.
- Experimental P2P v2: We are building a new P2P transport layer for Zakura nodes, currently off by default on Mainnet. The goals are sub-500ms worst-case block propagation, mempool aggregation (used in Tachyon), sync at the speed of your bandwidth, and a future-proofed gossip protocol. The v2 stack has known DoS risks and is not yet production-hardened; see its current tradeoffs and production readiness criteria.
Getting Started
There are several ways to install the node software. Install from an interactive installer which downloads the binary, Docker, source or crates.
Installer
The simplest way to install Zakura on a new machine, is using the interactive installer:
curl -fsSL https://raw.githubusercontent.com/zakura-core/zakura/main/scripts/install-zakura.sh | bash
The installer can set up either standard Zakura or its zcashd-compatible variant.
Docker
You can run Zakura using our Docker image or install it manually.
This command will run our latest release, and sync it to the tip:
The -p 8233:8233 flag exposes the P2P port so other Zcash nodes can connect to
yours, and -v persists the chain state across restarts (use port 18233 for
Testnet). For more information, read our Docker
documentation.
Manual Install
Building Zakura requires Rust, libclang, and a C++ compiler. Below are quick summaries for installing these dependencies.
General Instructions for Installing Dependencies
- Install
cargoandrustc. - Install Zakura's build dependencies:
- libclang, which is a library that comes under various names, typically
libclang,libclang-dev,llvm, orllvm-dev; - clang or another C++ compiler (
g++,which is for all platforms orXcode, which is for macOS); protoc(optional).
- libclang, which is a library that comes under various names, typically
Dependencies on Arch Linux
Note that the package clang includes libclang as well. The GCC version on
Arch Linux has a broken build script in a rocksdb dependency. A workaround is:
Once you have the dependencies in place, you can install Zakura with:
Alternatively, you can install it from GitHub:
You can start Zakura by running
Refer to the Building and Installing Zakura and Running Zakura sections in the book for enabling optional features, detailed configuration and further details.
Documentation
The Zakura maintainers provide the following resources:
-
The documentation of the public APIs for the latest releases of the individual Zakura crates.
-
The documentation of the internal APIs for the
mainbranch of the whole Zakura monorepo.
User support
If Zakura doesn't behave the way you expected, open an issue. We regularly triage new issues and we will respond. We maintain a list of known issues in the Troubleshooting section of the book.
If you want to chat with us, use the github issues for now.
Security
Zakura has a responsible disclosure policy, which we encourage security researchers to follow.
License
Zakura is distributed under the terms of both the MIT license and the Apache License (Version 2.0). Some Zakura 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.
See LICENSE-APACHE and LICENSE-MIT.