Crate ibc

source · []
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.

Implementation of mocks for context, host chain, and client.

Utilities for testing the ibc crate against the Hermes IBC relayer.

Macros

Downcast the given arguments to the associated enum variant.

Type Definitions

Re-export of ICS 002 Height domain type