Zebra Onboarding
This is a code-anchored onboarding course for Zebra, the Rust implementation of a Zcash full node maintained by the Zcash Foundation. The course exists to take a reader from "opened the repo" to "can plausibly open a PR" in days rather than weeks, in the order that the dependency graph of the code itself dictates.
The course is written in an impersonal, technical voice. When the prose addresses the reader directly, it uses "the reader" or the imperative, not "I" or "we".
This entire site was auto-generated using Claude Code by reading the Zebra source tree, the Zcash protocol specification, and a stack of audit reports. Errors will have been introduced.
The code in ZcashFoundation/zebra is the law. When this site disagrees with the source, the source wins.
Authoritative references:
- The source tree at
ZcashFoundation/zebra, pinned in this course to tagv4.4.1. - The Zcash protocol specification (PDF), latest version.
- The ZIPs index for all protocol-level changes.
- The Halo 2 book for the Orchard proving system.
- Published audits: NCC Group 2020, Trail of Bits 2021, and the Zcash Foundation security index.
Corrections belong on the onboarding branch of the fork as a normal issue or PR. The "Edit this page" link at the bottom of each chapter jumps straight to the Markdown source.
Notation
The course reuses the same notation across chapters. Once is enough.
- : a prime field of order . For Zcash, is the base field of either Jubjub (Sapling), Pallas (Orchard), or BLS12-381 (Groth16).
- : a cyclic group of prime order , written additively.
- : scalar multiplication of point by scalar .
- : a hash with -bit output (Blake2b for most KDF/PRF paths, Pedersen for fixed-domain commitments, Sinsemilla for the Orchard tree, Poseidon for in-circuit).
- : the BLS12-381 pairing , used by Groth16.
- : a commitment to message with randomness . In Sapling, is a Pedersen commitment; in Orchard, the value commitment uses Pallas and the note commitment uses Sinsemilla.
- / : symmetric encryption (ChaCha20-Poly1305 in Sapling note encryption).
- : uniform random sampling.
- : byte-string concatenation.
How to Read This Course
The chapters are ordered as the dependency graph of the codebase: you cannot understand chapter without chapters through . The two load-bearing chapters are:
- Workspace, Dependency Graph, and Build - the crate map and the build commands you will run every day.
- Testing, Build, and CI - what every PR must pass locally before it goes anywhere.
Contribution Gate (Read Before Opening a PR)
The upstream
CLAUDE.md
enforces a contribution gate: no PR before issue discussion with a Zcash
Foundation team member. The detail is in the upstream
CLAUDE.md.
Skipping it gets the PR closed regardless of how good the code is.
License Note
This course quotes Zebra source code under its MIT or Apache-2.0 license. The course prose itself is personal notes and carries no separate license: if you want to reuse it, ask first.