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
、Commit
Mempool
连接:CheckTx
Info
连接:Info
、SetOption
、Query
Snapshot
连接: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