This crate defines common data structures for Inter-Blockchain Communication (IBC) messages that can be reused by different IBC implementations or IBC ecosystem tooling.
ibc-rs, which provides a specific and opinionated implementation of
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,
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.
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
crate re-exports the client types defined in the
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.
- 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.
- A marker type that captures the relationships between a domain type (
Self) and a protobuf type (