Skip to content

zakura-core/zakura

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6,381 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zakura logo


Unit Tests Lint codecov Build docs License

Zakura is a consensus-compatible Zcash full node written in Rust, built for scale. Supporting payments at global scale requires on the order of 50k TPS, which translates to consensus processing at least 100 MB/s of block data. Today's chain peaks at 28 KB/s. With cryptographic optimizations to the Zcash protocol underway in Project Tachyon and at Valargroup, Zakura is the node implementation built to close that gap.

Zakura is forked from 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 lets you operate a full node with substantially less disk space. We also publish snapshots (~11 GB pruned) that let you bootstrap a node 680× faster than syncing over the standard P2P network. See the snapshots page.
  • 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: an interactive installer that downloads the binary, Docker, or building from source or crates.io.

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. The zcashd-compatible split-container mode uses the zakuracore/zcashd:v1.0.0 image.

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

docker run -d \
  --name zakura \
  -p 8233:8233 \
  -v zakurad-cache:/home/zakura/.cache/zakura \
  zakuracore/zakura:latest

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

  1. Install cargo and rustc.
  2. Install Zakura's build dependencies:
    • libclang, which is a library that comes under various names, typically libclang, libclang-dev, llvm, or llvm-dev;
    • clang or another C++ compiler (g++, which is for all platforms, or Xcode, which is for macOS);
    • protoc (optional).

Dependencies on Arch Linux

sudo pacman -S rust clang protobuf

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:

export CXXFLAGS="$CXXFLAGS -include cstdint"

Once you have the dependencies in place, you can install Zakura with:

cargo install --locked zakura

Alternatively, you can install it from GitHub:

cargo install --git https://github.com/zakura-core/zakura --tag v1.0.0 zakura

You can start Zakura by running

zakurad start

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:

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.

About

Zcash full node, built for scale.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Contributing

Security policy

Stars

17 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors