Rust implementation of an Inter-Blockchain Communication (IBC) relayer.
This project comprises primarily of 5 crates:
ibc-relayer
provides an implementation of an IBC relayer, as a library.ibc-relayer-cli
is a CLI (a wrapper over theibc-relayer
library), comprising thehermes
binary.ibc-chain-registry
provides functions to fetch data from the chain registry and automatically generate chain configuration for Hermes.ibc-telemetry
is a library for use in the Hermes CLI, for gathering telemetry data and exposing that in a Prometheus endpoint.ibc-relayer-rest
is a library for use in the Hermes CLI, for exposing a REST API to inspect the state of the relayer.ibc-test-framework
provides the infrastructure and framework for writing end-to-end (E2E) tests that include the spawning of the relayer together with Cosmos full nodes.
See the table below for more details.
⚠️ Theibc
andibc-proto
crates have been moved to their own repositories.
The repository also includes TLA+ specifications.
-
Support Wasm Contract
-
Add more chain config to ignore certain acknowledge packet
add a config named 'ignore_port_channel' in chain config that recieve a list of destination port and channel id to ignore
e.g. ignore_port_channel = [{ channel_id = 'channel-64', port_id = 'oracle'}]
-
Add a global config that delay the packet sending used for backup hermes
add a config named 'packet_delay' in global config that received the duration.
e.g. packet_delay = '10s'
Crate name | Type | Version | Docs |
---|---|---|---|
ibc-relayer-cli | bin: hermes | ||
ibc-relayer | lib | ||
ibc-chain-registry | lib | ||
ibc-relayer-rest | lib | ||
ibc-telemetry | lib | ||
ibc-test-framework | lib |
The crates in this project require Rust 1.65.0
.
We have a comprehensive guide at hermes.informal.systems.
IBC is specified in English in the cosmos/ibc repo. Any protocol changes or clarifications should be contributed there.
This repo contains the TLA+ specification and Rust implementation for the IBC modules and relayer. If you're interested in contributing, please comment on an issue or open a new one!
See also CONTRIBUTING.md.
We follow Semantic Versioning, though APIs are still under active development.
Copyright © 2022 Informal Systems Inc. and ibc-rs authors.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use the files in this repository except in compliance with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.