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