Expand description
This library implements the InterBlockchain Communication (IBC) protocol in Rust. IBC is a distributed protocol that enables communication between distinct sovereign blockchains. Loose analogies may be drawn between the IBC protocol and the TCP/UDP protocols that enable communication over the internet via packet streaming. Indeed, IBC also encodes the notion of ordered and unordered packet streams.
The layout of this crate mirrors the classification of the Interchain Standards. The classification consists of Core, Clients, Applications, and Relayer.
Core
consists of the designs and logic pertaining to the transport, authentication, and
ordering layers of the IBC protocol, the fundamental pieces.
Clients
consists of implementations of client verification algorithms (following the base
client interface that is defined in Core
) for specific types of chains. A chain uses these
verification algorithms to verify the state of remote chains.
Applications
consists of various packet encoding and processing semantics which underpin the
various types of transactions that users can perform on any IBC-compliant chain.
Relayer
contains utilities for testing the ibc
crate against the Hermes IBC relayer. It acts
as scaffolding for gluing the ibc
crate with Hermes for testing purposes.
Modules§
- Various packet encoding semantics which underpin the various types of transactions.
- Implementations of client verification algorithms for specific types of chains.
- The designs and logic pertaining to the transport, authentication, and ordering layers of the IBC protocol.
Macros§
- Downcast the given arguments to the associated enum variant.
Type Aliases§
- Re-export of ICS 002 Height domain type