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.
- Re-exports pertinent ibc proto types from theibc-proto-rscrate for added convenience
- Various utilities used internally
Macros
- Downcast the given arguments to the associated enum variant.
Structs
- Represents the address of the signer of the current transaction