29个版本 (10个破坏性)

0.12.0 2024年8月14日
0.9.0 2024年5月23日
0.6.0 2024年3月26日
0.3.0 2023年12月6日
0.1.0 2022年2月1日

#337 in 魔法豆

Download history 4/week @ 2024-04-29 122/week @ 2024-05-13 95/week @ 2024-05-20 19/week @ 2024-06-03 3/week @ 2024-06-10 230/week @ 2024-07-01 6/week @ 2024-07-22 87/week @ 2024-07-29 151/week @ 2024-08-05 172/week @ 2024-08-12

每月416次下载

Apache-2.0

1.5MB
8K SLoC

chia_rs

GitHub Coverage Status Build Test

PyPI PyPI - Format Crates.io Downloads Docs

一组用于处理Chia区块链的Rust crate。同时,还提供了Python绑定,形式为wheel。

先决条件

单元测试

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

cargo test --workspace

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

cargo test --workspace --release

Python链接

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

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

python3 -m venv venv

激活虚拟环境

. ./venv/bin/activate

Python测试

wheel crate是一个单独的Python wheel,导出对仓库中各种功能的绑定,主要是从chia-consensuschia-protocol

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

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

pip install pytest maturin typing-extensions chia-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

预提交钩子

此存储库有一个预提交配置,通过运行以下命令将其连接到git:

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

它首先运行Prettier,然后在每次提交时对所有crate运行 cargo fmt。当你推送时,它运行 cargo clippycargo test,以及cargo build

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

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

模糊测试

无法为整个工作空间运行或列出模糊测试,但只能为单个crate运行。有一个工具可以从区块链数据库生成模糊测试语料库。

运行方式如下

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

以下crate有模糊测试

  • chia-bls
  • chia-consensus
  • chia-protocol
  • chia-puzzles
  • clvm-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
~381K SLoC