跳到主要内容

构建二进制文件

三个独立的代码仓库分别生成节点、钱包和矿工的二进制文件。

构建产物代码仓库用途
epicEpicCash/epic验证和中继链。所有组件都需要它
epic-walletEpicCash/epic-wallet密钥、余额及构建转账
epic-minerEpicCash/epic-miner生成区块。仅用于本地链或实际挖矿

如果不想自行构建,下载页面列出了发布版本的归档文件。

一项前置条件

安装rustup。两个Rust仓库均在仓库中固定了工具链版本,rustup会自动选择正确的版本。不要传入+toolchain,也不要自行安装特定版本。

以上就是Linux和macOS上的全部依赖。两个项目均可在标准ubuntu-latestmacos-latest CI运行器上构建,无需额外的系统软件包。

Windows还需要两项额外依赖

LLVM,用于libclang.dll randomxprogpow crate会运行bindgen,后者在构建时加载libclang。Visual Studio"使用C++的桌面开发"工作负载中的LLVM组件仅附带clang-format.execlang-tidy.exe。需单独安装LLVM,并将LIBCLANG_PATH指向其bin目录。

# 仅在libclang不在默认位置时需要。
export LIBCLANG_PATH=/path/to/llvm/lib

Windows SDK 10.0.20348或更高版本。 croaring-sys使用-std:c11编译,MSVC的C11模式需要该SDK引入的UCRT <stdalign.h>。若仅安装了旧版SDK,构建将因fatal error C1083: Cannot open include file: 'stdalign.h'而中止。

节点和钱包在Windows上不需要opensslstrawberryperl。TLS在Windows上通过SChannel处理,因此openssl-sys不会被编译。矿工则两者都需要。

节点

git clone https://github.com/EpicCash/epic.git
cd epic
cargo build --release

二进制文件位于target/release/epic,Windows上为target\release\epic.exe

如果只需要节点,Docker是一种替代方案:

docker build -t epic-mainnet -f etc/Dockerfile .
docker run -d --name epic-mainnet -p 127.0.0.1:3413:3413 -p 3414:3414 epic-mainnet

3413仅发布到回环地址,与节点在Docker外部使用的绑定方式一致。节点与钱包设置包含完整的端口列表。

docker compose up -d同样可用。docker-compose.yml将链数据映射到./target/下,因此后续执行cargo clean会删除已同步的链数据。

钱包

git clone https://github.com/EpicCash/epic-wallet.git
cd epic-wallet
cargo build --release

二进制文件位于target/release/epic-wallet,Windows上为target\release\epic-wallet.exe

矿工

在Linux和macOS上,矿工的构建方式与其他组件相同:

git clone --recursive https://github.com/EpicCash/epic-miner.git
cd epic-miner
cargo build --release

--recursive不可省略,因为RandomX和ProgPow的实现是子模块。二进制文件位于target/release/epic-miner

Windows: build from the patched fork

Windows构建来自blacktyger/epic-miner,该仓库是上游代码加上适配当前MSVC工具链所需的修复。

git clone --recursive https://github.com/blacktyger/epic-miner.git
cd epic-miner
cargo build --release

二进制文件位于target\release\epic-miner.exe,为x86_64-pc-windows-msvc构建。

请克隆该fork,而非将其作为远程仓库添加到上游的检出中。.gitmodules使用相对子模块URL,因此RandomX和ProgPow子模块会相对于所克隆的仓库进行解析,克隆上游仓库则会拉取上游的子模块。

PATH上还需要安装Strawberry Perl。矿工依赖带有vendored特性的openssl,因此需要从源码编译OpenSSL,而OpenSSL的Configure会拒绝Git for Windows附带的msys perl。

标准Windows构建仅挖RandomX。该平台不构建任何cuckoo插件,ProgPow需要openclcuda特性。

确认三个构建产物

将三个二进制文件放入PATH中的某个目录,或记录其所在位置。节点和钱包均优先从当前工作目录解析配置,然后才回退到~/.epic/<network>,因此运行它们时所在的目录比二进制文件的存放位置更重要。这也是一个钱包二进制文件可以管理多个钱包的原因。

将它们加入PATH后:

epic --version
epic-wallet --version
epic-miner --version

在单一仓库中构建并测试所有内容

两个仓库均可作为工作区进行构建和测试:

cargo build --workspace --all-targets
cargo test --workspace -- --nocapture --test-threads=1

--test-threads=1不可省略,因为多个测试使用共享的数据目录。节点的集成测试位于一个特性参数后面:

cargo test --features cucumber-tests

下一步