Expand description
A Rust crate for creating ABCI applications.
§ABCI Overview
ABCI is the interface between Tendermint (a state-machine replication engine) and your application (the actual state
machine). It consists of a set of methods, where each method has a corresponding Request and Response message
type. Tendermint calls the ABCI methods on the ABCI application by sending the Request messages and receiving the
Response messages in return.
ABCI methods are split across 4 separate ABCI connections:
ConsensusConnection:InitChain,BeginBlock,DeliverTx,EndBlock,CommitMempoolConnection:CheckTxInfoConnection:Info,SetOption,QuerySnapshotConnection:ListSnapshots,LoadSnapshotChunk,OfferSnapshot,ApplySnapshotChunk
Additionally, there is a Flush method that is called on every connection, and an Echo method that is just for
debugging.
To know more about ABCI protocol specifications, go to official ABCI documentation.
§Usage
Add abci-rs in your Cargo.toml’s dependencies section:
[dependencies]
abci-rs = "0.11"Each ABCI application has to implement four core traits corresponding to all four ABCI connections, Consensus,
Mempool, Info and Snapshot.
Note: Implementations of these traits are expected to be
Send + Syncand methods take immutable reference ofself. So, internal mutability must be handled using thread safe (Arc,Mutex, etc.) constructs.
§Synchronous and asynchronous APIs
abci-rs supports both, synchronous and asynchronous APIs (using sync-api and async-api cargo features). At
least one of these features should be enabled. By default, both, sync-api and async-api, features are enabled.
§Async runtimes
abci-rs also supports multiple async runtimes. These different runtimes can be enabled by using cargo features
use-async-std, use-smol or use-tokio. Only one runtime can be enabled at a time. Compilation will fail if more
than one runtime is enabled or none of them are enabled. By default, use-tokio feature is enabled.
§Examples
Example ABCI applications can be found in examples/sync-counter.rs (using sync_api) and examples/async-counter.rs
(using async_api).
Modules§
- async_
api async-api - Asynchronous ABCI server API implementation
- sync_
api sync-api - Synchronous ABCI server API implementation
- types
- Types used in ABCI
Enums§
- Address
- Address of ABCI Server
Attribute Macros§
- async_
trait async-api