See the repo root for build status, license, rust version, etc.
A Rust implementation of the core types returned by a Tendermint node's RPC endpoint. These can be used to deserialize JSON-RPC responses.
All networking related features will be feature guarded to keep the dependencies small in cases where only the core types are needed.
See documentation on crates.io.
This crate optionally provides access to different types of RPC client functionality and different client transports based on which features you select when using it.
Two features are provided at present.
http-client
- ProvidesHttpClient
, which is a basic RPC client that interacts with remote Tendermint nodes via JSON-RPC over HTTP. This client does not provideEvent
subscription functionality. See the Tendermint RPC for more details.websocket-client
- ProvidesWebSocketClient
, which provides full client functionality, including general RPC functionality (such as that provided byHttpClient
) as well asEvent
subscription functionality.
Mock clients are included when either of the http-client
or
websocket-client
features are enabled to aid in testing. This includes
MockClient
, which implements both Client
and SubscriptionClient
traits.
-
RPC core types in golang
-
RPC endpoints REST interface documentation: https://docs.tendermint.com/master/rpc/
The RPC types are directly tested through the integration tests. These tests use fixtures taken from running Tendermint nodes to ensure compatibility without needing access to a running node during testing. All of these fixtures were generated manually, and automatic regeneration of the fixtures is on our roadmap.
To run these tests locally:
# From within the rpc crate
cargo test --all-features
The RPC client is also indirectly tested through the Tendermint integration tests, which happens during CI. All of these tests require a running Tendermint node, and are therefore ignored by default. To run these tests locally:
# In one terminal, spin up a Tendermint node
docker pull tendermint/tendermint:latest
docker run -it --rm -v "/tmp/tendermint:/tendermint" \
tendermint/tendermint init
docker run -it --rm -v "/tmp/tendermint:/tendermint" \
-p 26657:26657 \
tendermint/tendermint node --proxy_app=kvstore
# In another terminal, run the ignored Tendermint tests to connect to the node
# running at tcp://127.0.0.1:26657
cd ../tendermint
cargo test --all-features -- --ignored