15 个版本 (8 个破坏性版本)

0.10.0 2024 年 7 月 11 日
0.8.0 2024 年 5 月 16 日
0.5.2 2024 年 2 月 21 日
0.2.13 2023 年 11 月 21 日
0.2.9 2023 年 7 月 25 日

#1674 in 神奇豆子

Download history 141/week @ 2024-04-15 303/week @ 2024-05-13 12/week @ 2024-05-20 3/week @ 2024-06-10 43/week @ 2024-07-01 231/week @ 2024-07-08 65/week @ 2024-07-29

每月 332 次下载

Apache-2.0

1.5MB
9K SLoC

chik_rs

GitHub Coverage Status Build Test

PyPI PyPI - Format Crates.io Downloads Docs

一个用于处理 Chik 区块链的 Rust crate 的集合。还包括 Python 的 wheel 形式的绑定。

先决条件

单元测试

运行整个工作区的单元测试

cargo test --workspace

一些慢速测试仅在优化构建中启用,因此也可以在发布模式下运行测试

cargo test --workspace --release

Python 链接

由于 pyo3 依赖项,测试可能需要激活 Python 虚拟环境才能正确链接。

可以使用以下命令设置虚拟环境

python3 -m venv venv

激活虚拟环境

. ./venv/bin/activate

Python 测试

wheel crate 是一个单一的 Python wheel,导出对存储库中各种功能的绑定,主要是从 chik-consensuschik-protocol

它是使用 maturin 构建的,因此需要激活 Python 虚拟环境才能使构建正常工作。

绑定使用 pytest 进行测试。在运行它们之前,安装以下依赖项

pip install pytest maturin typing-extensions chik-blockchain==2.1.2

构建 Python wheel

maturin develop -m wheel/Cargo.toml

最后,您可以运行 Python 绑定测试

pytest tests

请注意,这些测试可能需要几分钟才能完成。

基准测试

在更改之前为特定 crate 运行基准测试

cargo bench -- --save-baseline before

应用更改后,完成基准测试

cargo bench -- --save-baseline after
critcmp after before

您也可以通过包含 --workspace 来运行所有基准测试。

请注意,您必须在 -- 之前包含标志,例如

cargo bench --workspace -- --save-baseline before

提交前钩子

该存储库有一个提交前配置,通过运行

pre-commit install --hook-type pre-commit --hook-type pre-push

它首先运行 Prettier,然后在每次提交时对所有的 crate 运行 cargo fmt。在推送时,它运行 cargo clippycargo testcargo build

要显式运行所有检查(不推送),请运行

pre-commit run --all --hook-stage pre-push

模糊测试

模糊测试不能在整个工作区运行或列出,而只能针对单个 crate。有一个工具可以从区块链数据库生成模糊测试语料库。

它的运行方式如下

cd crates/chik-tools
cargo run --release --bin gen-corpus -- --help

以下 crate 具有模糊测试

  • chik-bls
  • chik-consensus
  • chik-protocol
  • chik-puzzles
  • klvm-utils

列出和运行模糊测试

cargo fuzz list
cargo fuzz run <name-of-fuzzer>

增加版本号

确保您已安装 cargo-workspaces

cargo install cargo-workspaces

要增加所有相关 crate 的版本

cargo ws version --all --no-git-commit

如果没有不兼容的 API 变更,请选择“次要更新”,否则选择“主要更新”。

依赖关系

~10–21MB
~399K SLoC