跳到主要内容

Zebra 节点入门:Zcash 下一代共识客户端

Zebra 是 Zcash Foundation 用 Rust 从零开发的共识节点客户端,设计目标是取代运行了近十年的 zcashd。NU7 升级后,Zebra 将成为 Zcash 网络的唯一节点实现。如果你在运行 zcashd 节点,现在是开始规划迁移的时候了。

为什么要换掉 zcashd

zcashd 基于比特币核心代码(Bitcoin Core)分叉而来,从 2016 年 Zcash 上线起一直是网络的唯一节点软件。它能用,但有几个根本性的问题:

技术债务严重。 zcashd 继承了比特币核心的 C++ 代码库,加上多年的 Zcash 特有修改,代码复杂度很高。每次协议升级都需要在老代码上打补丁,维护成本越来越大。

性能瓶颈。 zcashd 是单线程设计,区块验证和网络通信无法并行处理。在高负载时,同步速度和交易处理效率都受限制。

安全隐患。 2026 年 3-4 月连续暴露的节点漏洞Sprout 验证绕过问题,部分原因就是 zcashd 代码库过于庞大,审计覆盖不足。

Zebra 的优势

Zebra 是一个完全独立的实现,不是在 zcashd 基础上改写的。

性能

Zebra 使用异步、并行化的架构,区块验证和网络请求可以同时处理。实测初始同步速度比 zcashd 快很多——主要归功于 Rust 的内存安全特性和多线程设计。

安全性

Rust 语言在编译时就能排除内存越界、空指针等常见安全漏洞。zcashd 使用的 C++ 没有这些保护,历史上多次出现内存相关的安全问题。

模块化

Zebra 的代码结构清晰分层:网络层、状态层、共识层各自独立。开发者可以只调用需要的组件,钱包和应用可以更容易地集成 Zcash 功能。

可观测性

Zebra 4.1.0(2026 年 2 月发布)加入了 Prometheus 指标和 Grafana 面板支持。节点运营者可以实时监控同步状态、内存占用、连接数等关键指标。

zcashd 和 Zebra 的对比

对比项zcashdZebra
语言C++(Bitcoin Core 分叉)Rust(从零构建)
并发模型单线程异步并行
内存安全手动管理编译时保证
内置钱包无(配合 Zallet 使用)
NU7 支持不支持支持
维护状态将停止维护活跃开发

需要注意的一点:Zebra 本身不包含钱包功能。zcashd 自带钱包,但 Zebra 采用了节点和钱包分离的设计。钱包功能由独立的 Zallet 项目提供。

迁移时间线

时间事件
2025 年 4 月Zcash 宣布 zcashd 弃用计划
2026 年 2 月Zebra 4.1.0 发布,新增监控功能
2026 年 4 月Zebra 4.3.1 修复共识一致性问题
NU7 激活前所有节点必须迁移到 Zebra
NU7 激活后zcashd 将无法跟随新链

关键信息:NU7 的共识规则变更不会在 zcashd 中实现。 升级激活后,还在运行 zcashd 的节点会停留在旧链上,无法参与新的网络共识。

安装 Zebra

系统要求

  • 操作系统:Linux(推荐 Ubuntu 22.04+)、macOS、Windows
  • 内存:8 GB 以上(推荐 16 GB)
  • 磁盘:100 GB 以上 SSD
  • 网络:稳定的宽带连接

使用 Docker 安装(推荐)

docker pull zfnd/zebra:latest
docker run -d --name zebra \
-p 8233:8233 \
-v zebra-data:/home/zebra/.cache/zebra \
zfnd/zebra:latest

从源码编译

# 需要 Rust 1.75+
git clone https://github.com/ZcashFoundation/zebra.git
cd zebra
cargo build --release

编译完成后,运行 ./target/release/zebrad start 即可启动节点。首次同步需要几个小时到一天,取决于网络速度和硬件配置。

从 zcashd 迁移

如果你正在运行 zcashd 节点,迁移步骤如下:

  1. 安装 Zebra: 按照上面的方法安装
  2. 启动 Zebra: 让 Zebra 完成初始区块同步
  3. 验证同步: 确认 Zebra 的区块高度与网络一致
  4. 切换服务: 将依赖 zcashd RPC 的应用切换到 Zebra 的接口
  5. 停止 zcashd: 确认一切正常后关闭 zcashd
RPC 接口差异

Zebra 的 RPC 接口和 zcashd 不完全兼容。如果你的应用依赖 zcashd 的特定 RPC 调用,需要检查 Zebra 的 RPC 文档确认支持情况。部分 zcashd 专有的 RPC 方法在 Zebra 中没有对应实现。

钱包怎么办

zcashd 自带钱包功能,但 Zebra 不包含钱包。Zcash 现在推荐的方案是节点和钱包分离:

  • 节点: 运行 Zebra 处理共识和区块数据
  • 钱包: 使用 Zallet(轻量级钱包后端)或 Zodl 钱包

对于普通用户来说,不需要自己运行节点。Zodl 钱包 通过轻客户端协议连接网络,不依赖本地节点。

谁需要关注这个迁移

  • 矿池运营者: 必须在 NU7 前完成迁移,否则无法出块
  • 交易所: 需要更新节点软件和 RPC 集成
  • 节点运行者: 业余爱好者和独立验证者需要切换
  • DApp 开发者: 需要适配 Zebra 的 API 接口

普通钱包用户(Zodl、YWallet 等)不受影响,钱包开发者会在后台完成适配。

相关资源