开发者指南 · Zikaron
从源码构建
一个 Rust 工作区:一条命令构建,一条命令测试,各平台用各自的脚本打包。
环境要求
- Rust
- stable 版,2021 edition,用 rustup 安装。
- C 工具链
- TLS 用到的加密库
ring要为本机编译一段 C 代码。在 macOS 上装 Xcode 的命令行工具即可。 - Linux 的系统库
- 窗口、键盘与文件对话框所需的开发包,见下文。
- Python 3
- 运行法的冻结核与一致性比对,只用标准库。
- Foundry
- 测试登记合约、重算代码哈希时使用。
在 Debian 或 Ubuntu 上,先装构建依赖:
sudo apt install build-essential pkg-config libxkbcommon-dev libxkbcommon-x11-0 \
libwayland-dev libx11-dev libxcursor-dev libxrandr-dev libxi-dev libgl1-mesa-dev \
xdg-desktop-portal xdg-desktop-portal-gtkLinux 上的系统文件对话框走桌面门户,所以运行时要有 xdg-desktop-portal 和一个后端;缺少门户时,把文件直接拖进窗口即可。
构建与测试
tar -xzf zikaron-0.1.0-src.tar.gz
cd zikaron-0.1.0
cargo build --release --locked
cargo test --workspace--locked 让构建严格使用 Cargo.lock 锁定的依赖版本,发布包也这样构建。产物:
| 程序 | 是什么 |
|---|---|
target/release/app | 桌面窗口,在 macOS 上打包为 ZIKARON.app,在 Linux 上为 zikaron-desk |
target/release/zikaron | 命令行,见命令行 |
zk1、zkk、zks、zka、zkg | 供测试与一致性比对用的辅助程序 |
打包
| 脚本 | 产出 |
|---|---|
packaging/macos/build.sh [--identity NAME] | ZIKARON.app,装在 .dmg 和 .pkg 里(macOS) |
packaging/linux/build.sh | .deb 与 AppImage,在 Linux 上原生构建 |
packaging/linux/cross-build.sh | 在别的主机上用 zig 与 cargo-zigbuild 打出同样的 Linux x86_64 包 |
包落在 dist/,每个平台附一份 SHA256SUMS-<系统>-<架构>.txt。macOS 脚本省略 --identity 时做临时签名(-);发布包用 Kaptonia 的证书签名,见发布。
合约测试
cd base/zikaron-core/contracts
forge test法的核
cd base/zikaron-conformance
./criterion-digest.sh
./criterion-digest-kit.sh用候选实现跑一致性语料的方法,见测试一份实现。
用独立数据试用
应用从 HOME 找机器目录,密钥库也只住在那里。把 HOME 指向一个空目录后启动,机器目录、密钥库与账本都落在其中,与日常数据隔离:
T=$(mktemp -d)
HOME=$T ./target/release/app试用时先在向导里选「自定义」,接 Sepolia 测试网,见 Wiki 的网络。测试用的密钥用 zikaron keygen 现场生成,用后即弃。
内嵌字体
界面的西文字体 Inter 与等宽字体 JetBrains Mono 内嵌于应用;中文在 macOS 上取自系统的苹方,在 Linux 上用随应用内嵌的 Noto Sans SC。三种内嵌字体都以 SIL OFL 1.1 发布,许可文本在 crates/zikaron-ui/fonts/。