开发者指南 · 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-gtk

Linux 上的系统文件对话框走桌面门户,所以运行时要有 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/。