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.

The layout of this crate mirrors the organization of the IBC Standard:

  • Core implements the transport, authentication, and ordering layers of the IBC protocol.

  • Clients consists of implementations of client verification algorithms (following the base client interface that is defined in Core) for specific consensus algorithms. A chain uses these verification algorithms to verify the state of remote chains.

  • Applications consists of implementations of some IBC applications. This is the part of the protocol that abstracts away the core protocol and focuses solely on business logic.

When processing a given message M, if any method in this library returns an error, the runtime is expected to rollback all state modifications made to the context (e.g. ExecutionContext) while processing M. If a transaction on your blockchain contains multiple messages, then typically the state modifications from all messages is expected to be rolled back as well.

Note

Currently, the serde feature (required by the token transfer app) does not work in no_std environments. See context here. If this is a blocker for you, please open a Github issue.

Re-exports

  • pub use crate::core::ics02_client::height::Height;

Modules

  • Implementation of IBC applications
  • Light client implementations to be used in core.
  • Implementation of the core IBC protocol.
  • Provides convenience implementations for various hosts
  • Implementation of mocks for context, host chain, and client.

Macros

  • Downcast the given arguments to the associated enum variant.

Structs

  • Re-export the Any type which used across the library. Any contains an arbitrary serialized protocol buffer message along with a URL that describes the type of the serialized message.
  • Represents the address of the signer of the current transaction