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 IBC data modeling such as clients, connections, and channels.
- Specific IBC light clients, such as the Tendermint light client.
- A timestamp type for IBC.
- IBC transfer types.
Enums§
Traits§
- A marker type that captures the relationships between a domain type (
Self
) and a protobuf type (Self::Proto
).