#tetcoin #blockchain #crypto #framework

无需 std tetsy-finality-grandpa

Tetsy 基于PBFT的区块链最终性工具

显示包…

2 个不稳定版本

0.13.0 2021 年 3 月 13 日
0.0.0 2021 年 3 月 13 日

#8 in #tetcoin

Download history 107/week @ 2024-03-29 47/week @ 2024-04-05 56/week @ 2024-04-12 62/week @ 2024-04-19 54/week @ 2024-04-26 48/week @ 2024-05-03 51/week @ 2024-05-10 47/week @ 2024-05-17 43/week @ 2024-05-24 41/week @ 2024-05-31 33/week @ 2024-06-07 45/week @ 2024-06-14 47/week @ 2024-06-21 25/week @ 2024-06-28 13/week @ 2024-07-05 34/week @ 2024-07-12

126 每月下载量
34 个包(4 个直接) 中使用

Apache-2.0

225KB
5K SLoC

tetsy-tetsy-finality-grandpa

crates.io link Build Status Code coverage

GRANDPA,基于 GHOST 的 Recursive ANcestor Deriving Prefix Agreement,是区块链的最终性工具,使用 Rust 实现。它允许一组节点就由某些外部区块生产机制产生的规范链达成 BFT 协议,假设在部分同步网络模型下,并存在最多 1/3 的拜占庭节点。

构建 & 测试

构建和运行测试所需的唯一依赖项是安装稳定版本的 Rust。

git clone https://github.com/tetcoin/tetsy-finality-grandpa
cd tetsy-finality-grandpa
cargo build
cargo test

使用方法

将其添加到您的 Cargo.toml 中

[dependencies]
tetsy-finality-grandpa = "0.13"

功能

  • derive-codec - 为所有协议消息派生 Decode/Encode 实例。
  • test-helpers - 提供一些不透明类型以供测试。

集成

此包仅实现了 GRANDPA 协议的状态机。为了使用此包,需要实现一些用于集成的特质,这些特质负责提供对底层区块链的访问并设置所有网络通信。

Chain 特质允许 GRANDPA 投票者检查给定区块的世系,还可以查询给定链中的最佳区块(将用于投票)。

环境

Environment 特质定义了将用于输入和输出流的类型,用于接收和广播消息。它还负责为给定轮次设置这些类型(通过 round_data),以及用于协议超时的计时器。

该特质公开了轮次全生命周期的回调

  • proposed
  • prevoted
  • precommitted
  • completed

以及通知关于区块最终性和投票者不当行为(等价)的回调。

Substrate

此crate的主要用户是Substrate,应作为了解集成方式的主要资源。应包含大部分相关集成代码的substrate-tetsy-finality-grandpa crate

最重要的是,此crate不处理权限集变化。它假定权限集始终相同。Substrate通过监听底层区块链发出的信号来处理权限集交接。

模糊测试

要运行模糊测试工具,您需要安装aflcargo-fuzz(您需要使用nightly Rust工具链)

cargo install cargo-fuzz
cargo install afl

libfuzzer

cargo fuzz run graph
cargo fuzz run round

afl

cd fuzz
cargo afl build --features afl --bin graph_afl
cargo afl build --features afl --bin round_afl

# create some random input
mkdir afl_in && dd if=/dev/urandom of=afl_in/seed bs=1024 count=4

cargo afl fuzz -i afl_in -o afl_out target/debug/graph_afl
cargo afl fuzz -i afl_in -o afl_out target/debug/round_afl

资源

许可

本crate的使用提供在Apache License(版本2.0)下。有关详细信息,请参阅LICENSE

依赖项

~0.8–1.8MB
~32K SLoC