Crate ibc_types

Source
Expand description

This crate defines common data structures for Inter-Blockchain Communication (IBC) messages that can be reused by different IBC implementations or IBC ecosystem tooling.

Unlike ibc-rs, which provides a specific and opinionated implementation of IBC, ibc-types just defines Rust types that allow working with IBC messages, allowing an IBC implementation or IBC ecosystem tooling to be built on top using a common language.

In addition to defining Rust types for IBC messages, ibc-types also defines Rust types for IBC events, and provides code for parsing IBC events to and from ABCI messages. IBC events are de facto a critical part of IBC, in that they’re needed to interoperate with relayers, but are not really specified anywhere. Providing event parsing code in ibc-types allows IBC implementations and relayer implementations to share common code for producing and consuming events.

The ibc-types crate is a top-level wrapper crate re-exporting the contents of subcrates scoped by IBC module. This structure means that external users of the library can use one catch-all crate, but allows dependency relationships between different IBC modules. For example, the ibc-types crate re-exports the client types defined in the ibc-types-core-client crate, as well as the types for the Tendermint light client defined in the ibc-types-lightclients-tendermint crate. But because these are separate crates, the Tendermint light client types can depend on the core IBC client types, preventing cyclic dependency issues.

Modules§

core
Core IBC data modeling such as clients, connections, and channels.
lightclients
Specific IBC light clients, such as the Tendermint light client.
path
timestamp
A timestamp type for IBC.
transfer
IBC transfer types.

Enums§

IdentifierError

Traits§

DomainType
A marker type that captures the relationships between a domain type (Self) and a protobuf type (Self::Proto).