52 个版本 (24 个重大更新)

新增 0.39.1 2024年8月9日
0.38.1 2024年7月23日
0.35.0 2024年3月14日
0.34.0 2023年10月2日
0.15.0 2020年7月20日

#684魔法豆

Download history 2781/week @ 2024-04-26 2436/week @ 2024-05-03 2098/week @ 2024-05-10 1603/week @ 2024-05-17 1742/week @ 2024-05-24 2898/week @ 2024-05-31 1336/week @ 2024-06-07 1207/week @ 2024-06-14 1323/week @ 2024-06-21 1480/week @ 2024-06-28 1233/week @ 2024-07-05 1708/week @ 2024-07-12 1606/week @ 2024-07-19 1150/week @ 2024-07-26 1000/week @ 2024-08-02 947/week @ 2024-08-09

每月下载量 5,013 次
8 个包中(直接使用 4 个) 使用

Apache-2.0

1.5MB
22K SLoC

Crate Docs

查看 仓库根目录 以获取构建状态、许可、Rust 版本等信息。

轻客户端

实现 轻客户端验证 和 [攻击检测][light-client-detection] 协议。

文档

请参阅 docs.rs 上的文档。

测试

Tendermint轻客户端主要通过单元测试进行测试。

核心验证

轻客户端核心验证逻辑完全封装在 predicates 模块中。通过单元测试对该代码进行测试,每个断言在隔离状态下进行测试,通过提供一组数据和每个检查的预期结果来测试每个断言。

以下命令可以用于运行这些测试

cargo test -p tendermint-light-client predicates

基于模型的测试

我们开始采用基于模型的测试(MBT),目前仅限于核心验证。在MBT中,测试流程基于轻客户端形式模型,而测试本身是建模语言TLA+中的简单断言。当前的一组TLA+测试被自动转换为JSON测试用例

以下命令可以用于运行这些测试

$ cargo test -p tendermint-light-client --test model_based -- --nocapture

请参阅MBT指南MBT摘要以获取更多信息。

二分法

与核心验证逻辑类似,二分验证算法通过一组JSON测试用例进行测试,这些测试用例包含了初始可信状态、要验证的目标区块、一系列中间区块和二分算法的预期结果。

这些测试针对light_client模块,并可以在tests/light_client.rs文件中找到。

运行测试

$ cargo test -p tendermint-light-client --test light_client bisection

攻击检测

请参阅light-client-detector

投票力量计算器

投票力量计算器通过单元测试进行测试,这些测试依赖于JSON测试用例,为计算器提供各种类型的轻客户端块及其计算结果的预期结果。

以下命令可以用于运行这些测试

$ cargo test -p tendermint-light-client voting_power

集成测试

此项目还包括简单的集成测试,该测试启动一个针对单个Tendermint全节点的轻客户端实例,该节点同时充当主对等节点及其自己的见证者。

由于此测试需要一个正在运行的Tendermint节点,因此默认情况下会忽略该测试。要本地运行此测试

# In one terminal
$ mkdir -p /tmp/tendermint
$ docker run -it --rm -v "/tmp/tendermint:/tendermint" tendermint/tendermint init
$ docker run -it --rm -v "/tmp/tendermint:/tendermint" -p 26657:26657 tendermint/tendermint node --proxy_app=kvstore

# In another terminal
$ cargo test -p tendermint-light-client --test integration -- --ignored --nocapture

其他测试

一些核心数据结构,例如PeerList实现,包含与实现相同的模块中的单元测试。

要运行这些测试以及上述所有测试

$ cargo test -p tendermint-light-client --all-features

依赖项

~11–26MB
~416K SLoC