ZKSync Era 开发环境搭建指南
前言
ZKSync Era 是一个基于零知识证明技术的 Layer 2 扩容解决方案,为开发者提供了高效的区块链扩容能力。本文将详细介绍如何搭建 ZKSync Era 的开发环境,帮助开发者快速上手项目开发。
系统要求
ZKSync Era 目前支持以下操作系统环境:
- 任何基于 Unix 的系统(如各种 Linux 发行版或 macOS)
- Windows 用户需要使用 WSL 2(Windows Subsystem for Linux 2)
- 注意:项目必须放在 Linux 文件系统中,从 WSL 访问 NTFS 分区性能极差
- 使用 ARM 处理器(如 M1/M2)的 macOS 用户
- 确保在原生环境下工作(终端和 IDE 不使用 Rosetta 模拟)
- 工具链也必须是原生版本
基础依赖安装
Docker 安装
Docker 是 ZKSync Era 开发的重要依赖,推荐按照以下方式安装:
-
对于 Linux 用户:
- 避免使用 snap 或默认仓库安装,这可能导致问题
- 推荐安装
docker-ce
包 - 同时需要安装
docker compose
-
常见问题解决:
# 如果遇到 Docker 权限问题 sudo usermod -a -G docker your_user_name
执行后需要重新登录使更改生效,如果问题依旧,可能需要重启系统。
Node.js 和 Yarn
-
安装 Node.js v20:
- 推荐使用 nvm(Node 版本管理器)安装
- 安装命令:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
-
安装 Yarn:
npm install -g yarn yarn set version 1.22.19 # 确保使用指定版本
编译工具链
-
安装 clang 和 LLVM 工具链(用于编译 RocksDB):
sudo apt-get install build-essential pkg-config cmake clang lldb lld
-
macOS 用户:
- 安装最新版 Xcode(包含 Clang 编译器)
- 通过 App Store 安装即可
OpenSSL 安装
-
macOS:
brew install openssl
-
Debian 系 Linux:
sudo apt-get install libssl-dev
Rust 工具链
ZKSync Era 主要使用 Rust 开发,需要安装正确的 Rust 工具链:
-
安装 Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
验证安装:
rustc --version
-
对于 macOS ARM 用户:
- 确保使用
aarch64
工具链 - 检查
rustup show
输出中不应出现x86_64
- 确保使用
数据库相关工具
PostgreSQL 客户端库
开发环境通常只需要客户端库:
-
macOS:
brew install libpq
-
Debian 系 Linux:
sudo apt-get install libpq-dev
测试和数据库工具
-
cargo-nextest(新一代 Rust 测试运行器):
cargo install cargo-nextest
-
SQLx CLI(数据库迁移工具):
cargo install --locked sqlx-cli --version 0.8.1
Foundry ZKSync
ZKSync Era 依赖 Foundry ZKSync(专为 ZKSync 定制的 Foundry 分支):
- 安装命令:
curl -L https://raw.githubusercontent.com/matter-labs/foundry-zksync/main/install-foundry-zksync | bash foundryup-zksync
非 GPU 环境配置
电路证明器通常需要 CUDA 支持,如果开发机没有 GPU:
-
临时启用 CUDA 存根:
export ZKSYNC_USE_CUDA_STUBS=true
-
永久配置(添加到 shell 配置文件):
echo "export ZKSYNC_USE_CUDA_STUBS=true" >> ~/.bashrc
性能优化技巧
使用 mold 链接器
mold 是现代高性能链接器,可显著提升 Rust 项目的构建速度:
- 安装 mold 后配置:
export RUSTFLAGS='-C link-arg=-fuse-ld=/usr/local/bin/mold' export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER="clang"
加速 RocksDB 编译
避免每次重新编译 RocksDB C++ 代码:
- 将编译好的库放在固定位置
- 配置环境变量:
export ROCKSDB_LIB_DIR=<library location> export SNAPPY_LIB_DIR=<library location>
使用 Nix 简化环境配置
Nix 可以精确管理开发依赖,确保环境一致性:
- 安装 Nix 并启用 flakes 功能
- 在项目目录中运行:
这将进入包含所有依赖的 shell 环境nix develop
结语
本文详细介绍了 ZKSync Era 开发环境的搭建过程,涵盖了从基础依赖到性能优化的各个方面。正确配置开发环境是参与 ZKSync Era 开发的第一步,希望本文能帮助开发者顺利开始他们的 ZKSync 开发之旅。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考