Zcash Developer Program
v0.1 · 2026

Learn to build on
Zcash. Ship real apps.

A 40-hour, 8-week program across 4 progressive stages — from blockchain fundamentals to shipping production apps on the Zcash network. Hands-on labs, real mainnet deployment, open-source contribution.

Start building now View curriculum
zk-SNARKs Halo 2 Orchard Selective Disclosure Shielded by default Unified Addresses No trusted setup Privacy is a human right zk-SNARKs Halo 2 Orchard Selective Disclosure Shielded by default Unified Addresses No trusted setup Privacy is a human right

Start building today.

Public endpoints and tools. You don't need to join the cohort to use them — this is the Zcash developer commons. Sync is already done for you.

01 · Node · Mainnet
Live

zebrad · Mainnet

Full Zcash Foundation node with synced chain, ready for RPC queries. Block height and Orchard pool balance updated in real time.

https://zebra-mainnet.builders.z.cash
02 · Node · Testnet
Live

zebrad · Testnet

Testnet node for safe experimentation. Use this for all labs. Pairs with lightwalletd at testnet.zec.rocks:443.

https://zebra-testnet.builders.z.cash
03 · gRPC API
Live

Lightwalletd · gRPC

Lightwalletd-compatible gRPC endpoint for wallet operations: compact block streaming, transaction broadcast, address queries. Compatible with all Zingolib and Wallet SDK integrations.

testnet.zec.rocks:443
04 · Testnet Faucet
Live

TAZ Faucet

Testnet ZEC (TAZ) faucet. Rate limited to prevent abuse. Supports transparent and Unified Addresses. See zechub.wiki/using-zcash/testnet for current faucet URLs.

zechub.wiki/using-zcash/testnet
05 · Cloud Sandbox
Soon

Codespaces Devcontainer

GitHub Codespace with zebrad + lightwalletd + Zingolib pre-installed. Spin up a full dev environment in under 60 seconds — no local setup required.

github.com/builders-zcash/devcontainer
06 · Progress Dashboard
Preview

Builders Dashboard

Track your progress through the curriculum. Submit labs, get peer and mentor reviews, showcase shipped projects. Verifiable on-chain certificates.

Your first shielded
transaction in 10 minutes.

Run the full Zcash developer stack on your own machine. Copy, paste, ship.

zebrad + zaino — quickstart
# Run the official Zebra node (Zcash Foundation)
# Docs: https://zebra.zfnd.org
docker run -d \
  --name zebra \
  -p 8232:8232 \
  -p 8233:8233 \
  -v zebrad-cache:/home/zebra/.cache/zebra \
  zfnd/zebra:latest

# Follow sync progress
docker logs -f zebra

# ⚠ Initial sync downloads ~250 GB — use testnet for development
# For testnet: add -e ZEBRA_NETWORK=testnet and use port 18232/18233

# Once synced — install lightwalletd (Zaino gRPC compatible)
git clone https://github.com/zcash/lightwalletd.git
cd lightwalletd && go build && make install

# Connect lightwalletd to Zebra
lightwalletd \
  --zcash-conf-path ~/.config/zcash.conf \
  --data-dir ~/.cache/lightwalletd \
  --no-tls-very-insecure

# Your gRPC endpoint is now live at localhost:9067
# Get TAZ: https://zechub.wiki/using-zcash/testnet
// Cargo.toml
[dependencies]
zingolib = "*"  // ZODL · github.com/zodl-inc/zingolib
tokio    = { version = "1", features = ["full"] }

// src/main.rs — connect, sync, get balance
use zingolib::config::load_clientconfig;
use zingolib::lightclient::LightClient;
use zingolib::wallet::WalletBase;

async fn main() -> anyhow::Result<()> {
    // Connect to your lightwalletd/Zaino endpoint
    let cfg = load_clientconfig(
        "http://localhost:9067".to_string(),
        None,
        zingolib::config::Network::TestNet,
        true,
    )?;

    // Create a new wallet (or restore from seed)
    let client = LightClient::create_from_wallet_base(
        WalletBase::MnemonicPhrase("your twelve word seed phrase here".to_string()),
        &cfg, 0, false,
    ).await?;

    // Sync the wallet (scans compact blocks)
    client.do_sync(true).await?;

    // Print balance
    println!("{}", client.do_balance().await);

    // Get your Unified Address
    println!("{}", client.do_addresses().await);

    Ok(())
}
// Install grpc-js for lightwalletd / Zaino
npm install @grpc/grpc-js @grpc/proto-loader

// get-block.ts — query chain tip via lightwalletd gRPC
import * as grpc from '@grpc/grpc-js';
import * as protoLoader from '@grpc/proto-loader';

const pkgDef = protoLoader.loadSync('lightwalletd/walletrpc/compact_formats.proto');
const proto  = grpc.loadPackageDefinition(pkgDef) as any;

const client = new proto.cash.z.wallet.sdk.rpc.CompactTxStreamer(
  'localhost:9067',
  grpc.credentials.createInsecure()  // use SSL in production
);

// Get the latest block height
client.GetLatestBlock({}, (err: Error, resp: any) => {
  if (err) return console.error(err);
  console.log('Chain tip:', resp.height, resp.hash?.toString('hex'));
});

// Stream compact blocks for wallet scanning
const stream = client.GetCompactBlocks({
  start: { height: 2500000 },  // wallet birthday
  end:   { height: 0 },          // 0 = chain tip
});
stream.on('data', (block: any) => console.log('block:', block.height));
stream.on('end',  () => console.log('Scan complete'));
# Install grpcio for lightwalletd / Zaino
pip install grpcio grpcio-tools

# Generate Python stubs from the lightwalletd proto files
git clone https://github.com/zcash/lightwalletd.git
python -m grpc_tools.protoc \
    -I lightwalletd/walletrpc \
    --python_out=. \
    --grpc_python_out=. \
    lightwalletd/walletrpc/service.proto

# query_chain.py — get chain tip
import grpc
import service_pb2, service_pb2_grpc

# Connect to your lightwalletd / Zaino endpoint
channel = grpc.insecure_channel("localhost:9067")
stub    = service_pb2_grpc.CompactTxStreamerStub(channel)

# Get latest block height
tip = stub.GetLatestBlock(service_pb2.ChainSpec())
print(f"Chain tip: {tip.height}")

# Broadcast a raw signed transaction
# tx_bytes = ... (construct with Zingolib or wallet SDK)
# result = stub.SendTransaction(service_pb2.RawTransaction(data=tx_bytes))
# print(f"txid: {result.errorCode} {result.errorMessage}")

What graduates ship.

Completion requires three tangible outputs — not a certificate of attendance. This is what makes a Zcash developer.

Output · 01 Mainnet

A project running on mainnet

Your own wallet UI, payment gateway, or shielded tool — deployed with real value. Minimum $5 in ZEC transacted. No simulators. No tutorials. Real users welcome.

Output · 02 Writing

A technical blog post

Written documentation of what you built and why, with code walkthroughs. Published on your own channel or on the builders.z.cash blog. Becomes part of the permanent Zcash learning corpus.

Output · 03 Open Source

An open-source contribution

A pull request in an official Zcash repository — Zebra, Zaino, zcash-wallet-sdk, zallet, or zcash-migrate. Reviewed by maintainers. Merged or under active review by demo day.

Common questions.

Everything you need to know before applying to the Zcash Builders program.

Do I need prior Zcash or crypto experience?
+
No. The program assumes solid programming fundamentals (at least one year of experience in any language) but no blockchain or Zcash-specific knowledge. Week 1 builds everything from scratch. You will, however, move fast — it's a hands-on engineering program, not an intro course.
What languages and stacks does the program use?
+
The core SDK labs use Rust (Zingolib (maintained by ZODL, github.com/zodl-inc/zingolib)). The chain layer uses TypeScript / Next.js or Rust. The quickstart environment uses Docker and docker-compose. For your capstone project in Stage 02–03, you choose your own stack — Tauri, Python, Go, or anything else that runs on mainnet.
How much time do I need per week?
+
Each week is designed for approximately 5 hours: 3 hours of self-paced material (video + reading + reference docs) and a 2-hour mandatory lab session. Office hours are optional but recommended. The capstone weeks (6–8) typically run longer as you build and ship your project.
Is this free? Is there any cost?
+
The program materials, infrastructure (testnet node, gRPC endpoint, TAZ faucet), and mentorship are free. The only real cost is the Stage 03 mainnet deployment — which requires a minimum of $5–10 in real ZEC to complete the capstone. This is intentional: shipping with real value is what makes it real.
What do I get when I finish?
+
Three tangible outputs: a project running on Zcash mainnet, a published technical blog post, and a merged (or actively-reviewed) PR in an official Zcash repository. You also receive a verifiable on-chain certificate minted to your Zcash address — not a PDF, a real on-chain credential.
Can I use the infrastructure without joining the cohort?
+
Yes. The developer infrastructure (zebrad nodes, lightwalletd gRPC endpoint, TAZ faucet) is public and free to use by any Zcash developer. You don't need to apply or be part of a cohort to use them. The cohort adds structure, mentorship, peer review, and the on-chain certificate.
Applications open · Spring 2026 cohort

Ready to ship on Zcash?

8 weeks. 40 hours. Real mainnet deployment. An open-source contribution. A published write-up. Apply to the next cohort.

Read the FAQ
Cohort size: 20 developers · Next start: July 7, 2026
Spring 2026 Cohort

Apply to Zcash Builders

20 spots. Starts July 7, 2026. Free.