23个版本
| 0.11.3 | 2022年5月28日 |
|---|---|
| 0.11.2 | 2022年3月21日 |
| 0.11.1 | 2021年6月23日 |
| 0.11.0 | 2021年2月1日 |
| 0.3.2 | 2019年11月29日 |
#4 in #abci
135KB
3K SLoC
abci-rs
用于创建ABCI应用程序的Rust包。
ABCI概述
ABCI是Tendermint(一个状态机复制引擎)与您的应用程序(实际状态机)之间的接口。它由一系列方法组成,每个方法都对应一个Request和Response消息类型。Tendermint通过发送Request消息并接收返回的Response消息来调用ABCI应用程序中的ABCI方法。
ABCI方法分布在4个单独的ABCI连接上
Consensus连接:InitChain、BeginBlock、DeliverTx、EndBlock、CommitMempool连接:CheckTxInfo连接:Info、SetOption、QuerySnapshot连接:ListSnapshots、LoadSnapshotChunk、OfferSnapshot、ApplySnapshotChunk
此外,还有一个在所有连接上都会调用的Flush方法,以及一个仅用于调试的Echo方法。
要了解更多关于ABCI协议规范的信息,请访问官方ABCI 文档。
用法
在您的Cargo.toml的dependencies部分添加abci-rs
[dependencies]
abci-rs = "0.11"
每个ABCI应用程序都必须实现与所有四个ABCI连接对应的四个核心特性,即Consensus、Mempool、Info和Snapshot。
注意:这些特性的实现应预期为
Send + Sync,并且方法接受对self的不可变引用。因此,必须使用线程安全(Arc、Mutex等)构造来处理内部可变性。
同步和异步API
abci-rs支持同步和异步API(使用sync-api和async-api cargo特性)。至少应该启用这些特性中的一个。默认情况下,sync-api和async-api特性都被启用。
异步运行时
abci-rs 还支持多种异步运行时。可以通过使用 cargo 功能 use-async-std、use-smol 或 use-tokio 来启用这些不同的运行时。一次只能启用一个运行时。如果启用了多个运行时或都没有启用,则编译将失败。默认情况下,启用了 use-tokio 功能。
示例
示例 ABCI 应用程序可以在 examples/sync-counter.rs(使用 sync_api)和 examples/async-counter.rs(使用 async_api)中找到。
文档
许可证
根据您的选择,许可为以下之一
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT 许可证 (LICENSE-MIT)
。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在作品中的任何贡献,将如上所述双重许可,而不附加任何额外的条款或条件。
依赖关系
~4–19MB
~221K SLoC