[ABCI] framework for building low-level applications for Tendermint in Rust.
At present, this crate only exposes a synchronous, blocking API based on Rust's
standard library's networking capabilities. async
client/server support is
planned in future updates.
The primary trait to be implemented by an ABCI application is the
[Application
] trait. One of the core ideas here is that an ABCI application
must be able to be cloned for use in different threads, since Tendermint opens
4 connections to the ABCI server. See the spec for
details.
See src/application
for some example applications
written using this crate.
To run the key/value store example application, from the tendermint-abci
crate's directory:
```bash
RUST_LOG=debug cargo run --bin kvstore-rs --features binary,kvstore-app
tendermint unsaferesetall && tendermint start
curl 'http://127.0.0.1:26657/broadcasttxasync?tx="somekey=somevalue"'
curl 'http://127.0.0.1:26657/abci_query?data=0x736f6d656b6579'
```
Copyright © 2021 Informal Systems
Licensed under the Apache License, Version 2.0 (the "License"); you may not use the files in this repository except in compliance with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.