From 307dd1910bb7e23c124a85aef957ef5ea704da3f Mon Sep 17 00:00:00 2001 From: Adi Seredinschi Date: Tue, 1 Jun 2021 18:44:32 +0300 Subject: [PATCH 01/23] Added details about the help command in the guide --- guide/src/commands/global.md | 1 - guide/src/help.md | 64 ++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/guide/src/commands/global.md b/guide/src/commands/global.md index 52d4d2f663..640cabc66f 100644 --- a/guide/src/commands/global.md +++ b/guide/src/commands/global.md @@ -9,7 +9,6 @@ Implementation of `hermes`, an IBC Relayer developed in Rust. FLAGS: -c, --config CONFIG path to configuration file - -h, --help print help message -j, --json enable JSON output ``` diff --git a/guide/src/help.md b/guide/src/help.md index 02468038a7..06abce36dd 100644 --- a/guide/src/help.md +++ b/guide/src/help.md @@ -4,6 +4,8 @@ This section provides guidelines regarding troubleshooting and general resources for getting help with `hermes`. For this purpose, we recommend a few ideas that could be of help: +- [hermes help][help] command, providing a CLI + documentation for all `hermes` commands. - [profile][profiling] your relayer binary to identify slow methods; - [configure][log-level] the `log_level` to help with debugging; - [patch][patching] your local gaia chain(s) to enable some corner-case methods @@ -20,6 +22,67 @@ And if the above options do not address your specific problem: Lastly, for general questions, you can reach us at `hello@informal.systems`, or on Twitter [@informalinc][twitter]. +## Help command + +The CLI comprises a special `help` command, which accepts as parameter other commands, and provides guidance on what is the correct way to invoke those commands. + +For instance, + +```shell +hermes help create +``` + +will provide details about all the valid invocations of the `create` CLI command. + +``` +hermes 0.4.0 +Informal Systems +Hermes is an IBC Relayer written in Rust. + +USAGE: + hermes create + +DESCRIPTION: + Create objects (client, connection, or channel) on chains + +SUBCOMMANDS: + help Get usage information + client Create a new IBC client + connection Create a new connection between two chains + channel Create a new channel between two chains +``` + +This can provide further specific guidance if we add additional parameters, e.g., + +```shell +hermes help create channel +``` + +``` +hermes 0.4.0 +Informal Systems +Hermes is an IBC Relayer written in Rust. + +USAGE: + hermes create channel + +DESCRIPTION: + Create a new channel between two chains + +POSITIONAL ARGUMENTS: + chain_a_id identifier of the side `a` chain for the new channel + chain_b_id identifier of the side `b` chain for the new channel (optional) + +FLAGS: + -c, --connection-a CONNECTION-A + --port-a PORT-A identifier of the side `a` port for the new channel + --port-b PORT-B identifier of the side `b` port for the new channel + -o, --order ORDER the channel ordering, valid options 'unordered' (default) and 'ordered' + -v, --version VERSION the version for the new channel +``` + +The `help` command is a replacement of the familiar `-h`/ `--help` flag typical for CLI applications. + ## Profiling The `relayer` crate provides a `time!` macro which can be used to measure how much time is spent between the invocation of the macro and the end of the enclosing scope. @@ -268,6 +331,7 @@ issue template. > Note that Hermes is packaged as part of the `ibc-relayer-cli` crate. +[help]: ./help.md#help-command [feature-request]: https://github.com/informalsystems/ibc-rs/issues/new?assignees=&labels=&template=feature-request.md [bug-report]: https://github.com/informalsystems/ibc-rs/issues/new?assignees=&labels=&template=bug-report.md [twitter]: https://twitter.com/informalinc From 35c96dee758732c5a97707be3cde394255556299 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Tue, 1 Jun 2021 21:59:03 +0200 Subject: [PATCH 02/23] Bump version to 0.4.0 --- Cargo.lock | 15 +- guide/README.md | 2 +- guide/src/SUMMARY.md | 2 +- guide/src/commands/global.md | 2 +- guide/src/index.md | 2 +- guide/src/installation.md | 14 +- modules/Cargo.toml | 2 +- proto-compiler/Cargo.lock | 1094 ---------------------------------- relayer-cli/Cargo.toml | 6 +- relayer/Cargo.toml | 6 +- telemetry/Cargo.toml | 2 +- 11 files changed, 26 insertions(+), 1121 deletions(-) delete mode 100644 proto-compiler/Cargo.lock diff --git a/Cargo.lock b/Cargo.lock index aa2baa2153..035395764d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1344,7 +1344,7 @@ dependencies = [ [[package]] name = "ibc" -version = "0.3.2" +version = "0.4.0" dependencies = [ "anomaly", "bytes", @@ -1384,7 +1384,7 @@ dependencies = [ [[package]] name = "ibc-relayer" -version = "0.3.2" +version = "0.4.0" dependencies = [ "anomaly", "async-stream", @@ -1432,7 +1432,7 @@ dependencies = [ [[package]] name = "ibc-relayer-cli" -version = "0.3.2" +version = "0.4.0" dependencies = [ "abscissa_core", "anomaly", @@ -2451,11 +2451,10 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "byteorder", "regex-syntax", ] @@ -2844,9 +2843,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" dependencies = [ "libc", ] diff --git a/guide/README.md b/guide/README.md index 05b7317e8a..27be156ce7 100644 --- a/guide/README.md +++ b/guide/README.md @@ -11,7 +11,7 @@ mdBook is a utility to create modern online books from Markdown files. This guide should be permanently deployed at its latest stable version at [hermes.informal.systems](https://hermes.informal.systems). -Current version: `0.3.2`. +Current version: `0.4.0`. The version of this guide is aligned with the [versioning of the ibc crates](../README.md). diff --git a/guide/src/SUMMARY.md b/guide/src/SUMMARY.md index 996a166d02..8dcf2bb5da 100644 --- a/guide/src/SUMMARY.md +++ b/guide/src/SUMMARY.md @@ -1,6 +1,6 @@ # Summary -# Hermes (v0.3.2) +# Hermes (v0.4.0) --- - [Introduction](./index.md) diff --git a/guide/src/commands/global.md b/guide/src/commands/global.md index 640cabc66f..e532dbebe6 100644 --- a/guide/src/commands/global.md +++ b/guide/src/commands/global.md @@ -3,7 +3,7 @@ Hermes accepts global options which affect all commands. ```shell -hermes 0.3.2 +hermes 0.4.0 Informal Systems Implementation of `hermes`, an IBC Relayer developed in Rust. diff --git a/guide/src/index.md b/guide/src/index.md index e769f7270b..a53776ba02 100644 --- a/guide/src/index.md +++ b/guide/src/index.md @@ -1,4 +1,4 @@ -# Hermes Guide (v0.3.2) +# Hermes Guide (v0.4.0) This guide can help you setup, configure, and operate Hermes to transfer packets between two IBC enabled chains. diff --git a/guide/src/installation.md b/guide/src/installation.md index 22bdd5e8a7..b22c64265a 100644 --- a/guide/src/installation.md +++ b/guide/src/installation.md @@ -14,8 +14,8 @@ There are two main approaches for obtaining Hermes: Simply head to the GitHub [Releases][releases] page and download the latest version of Hermes binary matching your platform: -- MacOS: `hermes-v0.3.2-x86_64-apple-darwin.tar.gz` (or .zip), -- Linux: `hermes-v0.3.2-x86_64-unknown-linux-gnu.tar.gz` (or .zip). +- MacOS: `hermes-v0.4.0-x86_64-apple-darwin.tar.gz` (or .zip), +- Linux: `hermes-v0.4.0-x86_64-unknown-linux-gnu.tar.gz` (or .zip). The step-by-step instruction below should carry you through the whole process: @@ -47,7 +47,7 @@ hermes version ``` ``` -hermes 0.3.2 +hermes 0.4.0 ``` ## Install via Cargo @@ -81,7 +81,7 @@ hermes version ``` ``` -hermes 0.3.2 +hermes 0.4.0 ``` ## Build from source @@ -103,10 +103,10 @@ cd ibc-rs Go to the [ibc-rs releases](https://github.com/informalsystems/ibc-rs/releases) page to see what is the most recent release. -Then checkout the release, for example if the most recent release is `v0.3.2` then execute the command: +Then checkout the release, for example if the most recent release is `v0.4.0` then execute the command: ```shell -git checkout v0.3.2 +git checkout v0.4.0 ``` ### Building with `cargo build` @@ -141,7 +141,7 @@ If you run the `hermes` without any additional parameters you should see the usa ``` ``` -hermes 0.3.2 +hermes 0.4.0 Informal Systems USAGE: diff --git a/modules/Cargo.toml b/modules/Cargo.toml index 11ba49e762..eb1ee81dfe 100644 --- a/modules/Cargo.toml +++ b/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ibc" -version = "0.3.2" +version = "0.4.0" edition = "2018" license = "Apache-2.0" readme = "README.md" diff --git a/proto-compiler/Cargo.lock b/proto-compiler/Cargo.lock deleted file mode 100644 index 20c9f2f330..0000000000 --- a/proto-compiler/Cargo.lock +++ /dev/null @@ -1,1094 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "anyhow" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1" - -[[package]] -name = "argh" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91792f088f87cdc7a2cfb1d617fa5ea18d7f1dc22ef0e1b5f82f3157cdc522be" -dependencies = [ - "argh_derive", - "argh_shared", -] - -[[package]] -name = "argh_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4eb0c0c120ad477412dc95a4ce31e38f2113e46bd13511253f79196ca68b067" -dependencies = [ - "argh_shared", - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "argh_shared" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "781f336cc9826dbaddb9754cb5db61e64cab4f69668bd19dcc4a0394a86f4cb1" - -[[package]] -name = "async-stream" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3670df70cbc01729f901f94c887814b3c68db038aad1329a418bae178bc5295c" -dependencies = [ - "async-stream-impl", - "futures-core", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3548b8efc9f8e8a5a0a2808c5bd8451a9031b9e5b879a79590304ae928b0a70" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-trait" -version = "0.1.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36ea56748e10732c49404c153638a15ec3d6211ec5ff35d9bb20e13b93576adf" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "autocfg" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - -[[package]] -name = "base64" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" - -[[package]] -name = "bitflags" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" - -[[package]] -name = "bytes" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" - -[[package]] -name = "cc" -version = "1.0.67" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" -dependencies = [ - "jobserver", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "either" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - -[[package]] -name = "fixedbitset" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "form_urlencoded" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" -dependencies = [ - "matches", - "percent-encoding", -] - -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - -[[package]] -name = "futures-channel" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2dd2df839b57db9ab69c2c9d8f3e8c81984781937fe2807dc6dcf3b2ad2939" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15496a72fabf0e62bdc3df11a59a3787429221dd0710ba8ef163d6f7a9112c94" - -[[package]] -name = "futures-sink" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85754d98985841b7d4f5e8e6fbfa4a4ac847916893ec511a2917ccd8525b8bb3" - -[[package]] -name = "futures-task" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa189ef211c15ee602667a6fcfe1c1fd9e07d42250d2156382820fba33c9df80" - -[[package]] -name = "futures-util" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1812c7ab8aedf8d6f2701a43e1243acdbcc2b36ab26e2ad421eb99ac963d96d1" -dependencies = [ - "futures-core", - "futures-task", - "pin-project-lite", - "pin-utils", -] - -[[package]] -name = "getrandom" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "git2" -version = "0.13.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9831e983241f8c5591ed53f17d874833e2fa82cac2625f3888c50cbfe136cba" -dependencies = [ - "bitflags", - "libc", - "libgit2-sys", - "log", - "openssl-probe", - "openssl-sys", - "url", -] - -[[package]] -name = "h2" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d832b01df74254fe364568d6ddc294443f61cbec82816b60904303af87efae78" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" - -[[package]] -name = "heck" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "http" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7245cd7449cc792608c3c8a9eaf69bd4eabbabf802713748fd739c98b82f0747" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2861bd27ee074e5ee891e8b539837a9430012e249d7f0ca2d795650f579c1994" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "httparse" -version = "1.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "615caabe2c3160b313d52ccc905335f4ed5f10881dd63dc5699d47e90be85691" - -[[package]] -name = "httpdate" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" - -[[package]] -name = "hyper" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8e946c2b1349055e0b72ae281b238baf1a3ea7307c7e9f9d64673bdd9c26ac7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "ibc-proto-compiler" -version = "0.2.0" -dependencies = [ - "argh", - "git2", - "prost-build", - "tempdir", - "tonic", - "tonic-build", - "walkdir", -] - -[[package]] -name = "idna" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89829a5d69c23d348314a7ac337fe39173b61149a9864deabd260983aed48c21" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" -dependencies = [ - "autocfg", - "hashbrown", -] - -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" - -[[package]] -name = "jobserver" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" -dependencies = [ - "libc", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.88" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b07a082330a35e43f63177cc01689da34fbffa0105e1246cf0311472cac73a" - -[[package]] -name = "libgit2-sys" -version = "0.12.21+1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86271bacd72b2b9e854c3dcfb82efd538f15f870e4c11af66900effb462f6825" -dependencies = [ - "cc", - "libc", - "libssh2-sys", - "libz-sys", - "openssl-sys", - "pkg-config", -] - -[[package]] -name = "libssh2-sys" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0186af0d8f171ae6b9c4c90ec51898bad5d08a2d5e470903a50d9ad8959cbee" -dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "libz-sys" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "log" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "matches" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" - -[[package]] -name = "memchr" -version = "2.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" - -[[package]] -name = "mio" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5dede4e2065b3842b8b0af444119f3aa331cc7cc2dd20388bfb0f5d5a38823a" -dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "winapi", -] - -[[package]] -name = "miow" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897" -dependencies = [ - "socket2", - "winapi", -] - -[[package]] -name = "multimap" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1255076139a83bb467426e7f8d0134968a8118844faa755985e077cf31850333" - -[[package]] -name = "ntapi" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" -dependencies = [ - "winapi", -] - -[[package]] -name = "openssl-probe" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" - -[[package]] -name = "openssl-sys" -version = "0.9.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "921fc71883267538946025deffb622905ecad223c28efbfdef9bb59a0175f3e6" -dependencies = [ - "autocfg", - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "percent-encoding" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" - -[[package]] -name = "petgraph" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "pin-project" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96fa8ebb90271c4477f144354485b8068bd8f6b78b428b01ba892ca26caf0b63" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "758669ae3558c6f74bd2a18b41f7ac0b5a195aea6639d6a9b5e5d1ad5ba24c0b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" - -[[package]] -name = "ppv-lite86" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" - -[[package]] -name = "proc-macro2" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "prost" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d3ebd75ac2679c2af3a92246639f9fcc8a442ee420719cc4fe195b98dd5fa3" -dependencies = [ - "bytes", - "heck", - "itertools", - "log", - "multimap", - "petgraph", - "prost", - "prost-types", - "tempfile", - "which", -] - -[[package]] -name = "prost-derive" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "169a15f3008ecb5160cba7d37bcd690a7601b6d30cfb87a117d45e59d52af5d4" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "prost-types" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bb" -dependencies = [ - "bytes", - "prost", -] - -[[package]] -name = "quote" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi", -] - -[[package]] -name = "rand" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" -dependencies = [ - "libc", - "rand_chacha", - "rand_core 0.6.2", - "rand_hc", -] - -[[package]] -name = "rand_chacha" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.2", -] - -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - -[[package]] -name = "rand_core" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_hc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" -dependencies = [ - "rand_core 0.6.2", -] - -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "redox_syscall" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" -dependencies = [ - "bitflags", -] - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" - -[[package]] -name = "socket2" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" -dependencies = [ - "cfg-if", - "libc", - "winapi", -] - -[[package]] -name = "syn" -version = "1.0.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd9bc7ccc2688b3344c2f48b9b546648b25ce0b20fc717ee7fa7981a8ca9717" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "tempdir" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" -dependencies = [ - "rand 0.4.6", - "remove_dir_all", -] - -[[package]] -name = "tempfile" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" -dependencies = [ - "cfg-if", - "libc", - "rand 0.8.3", - "redox_syscall", - "remove_dir_all", - "winapi", -] - -[[package]] -name = "thiserror" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tinyvec" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" - -[[package]] -name = "tokio" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d56477f6ed99e10225f38f9f75f872f29b8b8bd8c0b946f63345bb144e9eeda" -dependencies = [ - "autocfg", - "bytes", - "libc", - "memchr", - "mio", - "pin-project-lite", - "tokio-macros", -] - -[[package]] -name = "tokio-macros" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf7b11a536f46a809a8a9f0bb4237020f70ecbf115b842360afb127ea2fda57" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-stream" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c535f53c0cfa1acace62995a8994fc9cc1f12d202420da96ff306ee24d576469" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec31e5cc6b46e653cf57762f36f71d5e6386391d88a72fd6db4508f8f676fb29" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tonic" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ac42cd97ac6bd2339af5bcabf105540e21e45636ec6fa6aae5e85d44db31be0" -dependencies = [ - "async-stream", - "async-trait", - "base64", - "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "percent-encoding", - "pin-project", - "prost", - "prost-derive", - "tokio", - "tokio-stream", - "tokio-util", - "tower", - "tower-service", - "tracing", - "tracing-futures", -] - -[[package]] -name = "tonic-build" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c695de27302f4697191dda1c7178131a8cb805463dda02864acb80fe1322fdcf" -dependencies = [ - "proc-macro2", - "prost-build", - "quote", - "syn", -] - -[[package]] -name = "tower" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf0aa6dfc29148c3826708dabbfa83c121eeb84df4d1468220825e3a33651687" -dependencies = [ - "futures-core", - "futures-util", - "indexmap", - "pin-project", - "rand 0.8.3", - "slab", - "tokio", - "tokio-stream", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" - -[[package]] -name = "tower-service" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" - -[[package]] -name = "tracing" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01ebdc2bb4498ab1ab5f5b73c5803825e60199229ccba0698170e3be0e7f959f" -dependencies = [ - "cfg-if", - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41768be5b9f3489491825f56f01f25290aa1d3e7cc97e182d4d34360493ba6fa" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - -[[package]] -name = "try-lock" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" - -[[package]] -name = "unicode-bidi" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -dependencies = [ - "matches", -] - -[[package]] -name = "unicode-normalization" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" - -[[package]] -name = "unicode-xid" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" - -[[package]] -name = "url" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" -dependencies = [ - "form_urlencoded", - "idna", - "matches", - "percent-encoding", -] - -[[package]] -name = "vcpkg" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb" - -[[package]] -name = "walkdir" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" -dependencies = [ - "same-file", - "winapi", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - -[[package]] -name = "which" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c14ef7e1b8b8ecfc75d5eca37949410046e66f15d185c01d70824f1f8111ef" -dependencies = [ - "libc", - "thiserror", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/relayer-cli/Cargo.toml b/relayer-cli/Cargo.toml index 1939873211..f90818cc7c 100644 --- a/relayer-cli/Cargo.toml +++ b/relayer-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ibc-relayer-cli" -version = "0.3.2" +version = "0.4.0" edition = "2018" license = "Apache-2.0" readme = "README.md" @@ -22,8 +22,8 @@ profiling = ["ibc-relayer/profiling"] telemetry = ["ibc-relayer/telemetry", "ibc-telemetry"] [dependencies] -ibc = { version = "0.3.2", path = "../modules" } -ibc-relayer = { version = "0.3.2", path = "../relayer" } +ibc = { version = "0.4.0", path = "../modules" } +ibc-relayer = { version = "0.4.0", path = "../relayer" } ibc-proto = { version = "0.8.0", path = "../proto" } ibc-telemetry = { version = "0.1.0", path = "../telemetry", optional = true } diff --git a/relayer/Cargo.toml b/relayer/Cargo.toml index c8369c04c8..e5a48a3d81 100644 --- a/relayer/Cargo.toml +++ b/relayer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ibc-relayer" -version = "0.3.2" +version = "0.4.0" edition = "2018" license = "Apache-2.0" readme = "README.md" @@ -17,7 +17,7 @@ profiling = [] telemetry = ["ibc-telemetry"] [dependencies] -ibc = { version = "0.3.2", path = "../modules" } +ibc = { version = "0.4.0", path = "../modules" } ibc-proto = { version = "0.8.0", path = "../proto" } ibc-telemetry = { version = "0.1.0", path = "../telemetry", optional = true } @@ -71,7 +71,7 @@ version = "=0.19.0" [dev-dependencies] serial_test = "0.5.0" -ibc = { version = "0.3.2", path = "../modules", features = ["mocks"] } +ibc = { version = "0.4.0", path = "../modules", features = ["mocks"] } # Needed for generating (synthetic) light blocks. tendermint-testgen = { version = "=0.19.0" } diff --git a/telemetry/Cargo.toml b/telemetry/Cargo.toml index a6992458c8..55092269bb 100644 --- a/telemetry/Cargo.toml +++ b/telemetry/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Informal Systems "] edition = "2018" [dependencies] -ibc = { version = "0.3.2", path = "../modules" } +ibc = { version = "0.4.0", path = "../modules" } crossbeam-channel = "0.5.1" once_cell = "1.7.2" From 8109317307a3b2dd49b53b61a402263c58ce6c87 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Tue, 1 Jun 2021 22:14:59 +0200 Subject: [PATCH 03/23] Update guide to account for `start-multi` being promoted to `start` --- guide/src/SUMMARY.md | 4 +- guide/src/commands/relaying.md | 77 ++------------- guide/src/installation.md | 1 - .../relay-paths/create-new-path.md | 3 +- .../local-chains/relay-paths/existing-path.md | 96 ------------------- .../local-chains/relay-paths/index.md | 8 +- .../relay-paths/multiple-paths.md | 17 ++-- .../local-chains/relay-paths/new-path.md | 58 ----------- 8 files changed, 23 insertions(+), 241 deletions(-) delete mode 100644 guide/src/tutorials/local-chains/relay-paths/existing-path.md delete mode 100644 guide/src/tutorials/local-chains/relay-paths/new-path.md diff --git a/guide/src/SUMMARY.md b/guide/src/SUMMARY.md index 8dcf2bb5da..8a5a32427f 100644 --- a/guide/src/SUMMARY.md +++ b/guide/src/SUMMARY.md @@ -18,9 +18,7 @@ - [Identifiers](./tutorials/local-chains/identifiers.md) - [Connect the chains using relay paths](./tutorials/local-chains/relay-paths/index.md) - [Create a new path](./tutorials/local-chains/relay-paths/create-new-path.md) - - [Packet relaying on existing path](./tutorials/local-chains/relay-paths/existing-path.md) - - [Packet relaying on new path](./tutorials/local-chains/relay-paths/new-path.md) - - [Concurrent packet relaying on multiple paths](./tutorials/local-chains/relay-paths/multiple-paths.md) + - [Relay packets on multiple paths](./tutorials/local-chains/relay-paths/multiple-paths.md) - [Connect the chains using raw transactions](./tutorials/local-chains/raw/index.md) - [Configure clients](./tutorials/local-chains/raw/client.md) - [Connection handshake](./tutorials/local-chains/raw/connection.md) diff --git a/guide/src/commands/relaying.md b/guide/src/commands/relaying.md index 0eaa11548f..38c43adc30 100644 --- a/guide/src/commands/relaying.md +++ b/guide/src/commands/relaying.md @@ -8,54 +8,26 @@ This section describes the commands that can be used to start the relayer and re ## The `start` Command -The `start` command can be used to send packet transactions triggered by IBC packet events that occur for a given channel. This is also referred to packet streaming. -A new channel can be established or an existing one can be specified. +The `start` command can be used to send packet transactions triggered by IBC packet +events that occur for all channels between the configured chains. +This is also referred to packet streaming. ```shell -USAGE: - hermes start - -DESCRIPTION: - start the relayer (currently this refers to the v0 relayer) - -POSITIONAL ARGUMENTS: - src_chain_id identifier of the source chain - dst_chain_id identifier of the destination chain - -FLAGS: - -p, --src-port-id SRC-PORT-ID - -c, --src-channel-id SRC-CHANNEL-ID ``` -## Relay On A New Channel - -Use the `start` command without flags to create new clients on `source` and `destination` chains, and new connection and new channel between the two chains. - -> Reusing existing clients or connection is not possible with the current version. The port used by the channel is obtained from and must be specified in the configuration file. - __Example__ -```shell -hermes start ibc-0 ibc-1 -``` - -The relayer creates a new client on each chain and then established a new connection and a new channel using that connection. After that is enters a listen loop acting on packet events that occur on that channel. - -## Relay On An Existing Channel - -Use the `start` command and specify the source port and channel identifier of a channel that is already created and in open state on both chains. - -__Example__ +To start the relayer, invoke the `start` command. Note that it does not require any options. ```shell -hermes start ibc-0 ibc-1 -p transfer -c channel-0 +hermes start ``` -> Finishing uncompleted handshakes can only be achieved using the `tx raw` CLIs. - ## Packet Streaming -After the relayer is started using the `start` command, it listens to IBC packet events for the channel. Assuming the events are coming from a `source` chain, the relayer builds packets based on these events, packets that are then sent either to the `source` chain or the counterparty (`destination`) chain. +After the relayer is started using the `start` command, it listens to IBC packet events emitted by any of +the configured chains. Assuming the events are coming from a `source` chain, the relayer builds packets +based on these events, packets that are then sent either to the `source` chain or the counterparty (`destination`) chain. Current events and actions are: @@ -67,38 +39,7 @@ Current events and actions are: ## Packet Delay -If the relay path is using a non-zero delay connection, then `hermes` will delay all packet transactions. The delay is -relative to the submission time for the client update at the height required by the packet proof. +If the relay path is using a non-zero delay connection, then `hermes` will delay all packet transactions. The delay is relative to the submission time for the client update at the height required by the packet proof. The delay is used to prevent light client attacks and ensures that misbehavior detection finalizes before the transaction is submitted. For more information on the misbehavior detector see [the misbehaviour section](./misbehaviour/index.md#monitoring-misbehaviour-and-evidence-submission). -## Relay On Multiple Paths - -Unlike the `start` command which relay packets over a single path, -the `start-multi` command can be used to relay packets over all -existing open channels between the configured chains. - -> __WARNING:__ The functionality is currently experimental. - -```shell -USAGE: - hermes start-multi - -DESCRIPTION: - Start the relayer in multi-paths mode. Handles packet relaying across all open channels between all chains in the config. -``` - -__Note:__ When using the `start-multi` command, the `[[connections]]` section of the configuration -is ignored, and the relayer will instead discover all existing channels between the chains -present in the configuration. - -__Example__ - -To start the relayer in multi-paths mode, invoke the `start-multi` commands. -Note that it does not require any options. - -```shell -hermes start-multi -``` - -See the [Concurrent Packet Relaying tutorial](../tutorials/local-chains/relay-paths/multiple-paths.md) for more information. diff --git a/guide/src/installation.md b/guide/src/installation.md index b22c64265a..3f4f3b2ac4 100644 --- a/guide/src/installation.md +++ b/guide/src/installation.md @@ -154,7 +154,6 @@ SUBCOMMANDS: update Update objects (clients) on chains upgrade Upgrade objects (clients) after chain upgrade start Start the relayer - start-multi Start the relayer in multi-chain mode. Handles packet relaying across all open channels between all chains in the config. query Query objects from the chain tx Create and send IBC transactions listen Listen to and display IBC events emitted by a chain diff --git a/guide/src/tutorials/local-chains/relay-paths/create-new-path.md b/guide/src/tutorials/local-chains/relay-paths/create-new-path.md index 7d28f89539..035af4fda2 100644 --- a/guide/src/tutorials/local-chains/relay-paths/create-new-path.md +++ b/guide/src/tutorials/local-chains/relay-paths/create-new-path.md @@ -61,4 +61,5 @@ Success: Channel { ``` -Note that for each side, *a_side* (__ibc-0__) and *b_side* (__ibc-1__) there are a __client_id__, __connection_id__, __channel_id__ and __port_id__. With all these established, you have [a path that you can relay packets](./existing-path.md) +Note that for each side, *a_side* (__ibc-0__) and *b_side* (__ibc-1__) there are a __client_id__, __connection_id__, __channel_id__ and __port_id__. +With all these established, you have [a path that you can relay packets over](./multiple-paths.md). diff --git a/guide/src/tutorials/local-chains/relay-paths/existing-path.md b/guide/src/tutorials/local-chains/relay-paths/existing-path.md deleted file mode 100644 index 30602ed468..0000000000 --- a/guide/src/tutorials/local-chains/relay-paths/existing-path.md +++ /dev/null @@ -1,96 +0,0 @@ -# Packet relaying on existing path - -Hermes can listen to IBC packet events over a specified path and relay receive packets, acknowledgments and timeouts. - -1. From one terminal start Hermes using the `start` command and specify the port and a previously established channel: - - ```shell - hermes start ibc-0 ibc-1 -p transfer -c channel-0 - ``` - - > In this example, the channel identifier on `ibc-0`is `channel-0` while the identifier on`ibc-1` is `channel-1` - - -2. In a separate terminal, use the transfer command to send 2 packets to `ibc-0` chain: - - ```shell - hermes tx raw ft-transfer ibc-1 ibc-0 transfer channel-0 9999 -o 1000 -n 2 - ``` - - You should see a result similar to the one below: - - ```json - Success: [ - SendPacket( - SendPacket { - height: Height { - revision: 0, - height: 842, - }, - packet: PortId("transfer") ChannelId("channel-0") Sequence(1), - }, - ), - SendPacket( - SendPacket { - height: Height { - revision: 0, - height: 842, - }, - packet: PortId("transfer") ChannelId("channel-0") Sequence(2), - }, - ), - ] - ``` - -3. Use the CLI to send 2 packets to `ibc-1` chain: - - ```shell - hermes tx raw ft-transfer ibc-0 ibc-1 transfer channel-1 9999 -o 1000 -n 2 - ``` - - You should see a result similar to the one below: - - ```json - Success: [ - SendPacket( - SendPacket { - height: Height { - revision: 1, - height: 963, - }, - packet: PortId("transfer") ChannelId("channel-1") Sequence(1), - }, - ), - SendPacket( - SendPacket { - height: Height { - revision: 1, - height: 963, - }, - packet: PortId("transfer") ChannelId("channel-1") Sequence(2), - }, - ), - ] - ``` - -4. Observe the output on the relayer terminal, verify that the send events are processed, and that the `recv_packet`s are sent out. - -5. Query the unreceived packets and acknowledgments on `ibc-0` and `ibc-1` from a different terminal - - ```shell - hermes query packet unreceived-packets ibc-0 transfer channel-0 - hermes query packet unreceived-acks ibc-1 transfer channel-1 - hermes query packet unreceived-packets ibc-1 transfer channel-1 - hermes query packet unreceived-acks ibc-0 transfer channel-0 - ``` - - There should be no unreceived packets and acks: - - ```json - { - "status": "success", - "result": [] - } - ``` - - > It may also show packets that have been sent before the relayer loop was started (Hermes currently does not flush those). diff --git a/guide/src/tutorials/local-chains/relay-paths/index.md b/guide/src/tutorials/local-chains/relay-paths/index.md index 5563df676a..bcd7dfa3aa 100644 --- a/guide/src/tutorials/local-chains/relay-paths/index.md +++ b/guide/src/tutorials/local-chains/relay-paths/index.md @@ -3,10 +3,10 @@ A relay path refers to a specific channel used to interconnect two chains and over which packets are being sent. -Hermes can be started to listen for packet events on the two ends of a path and relay packets. This can be done over a new or existing path. +Hermes can be started to listen for packet events on the two ends of multiple paths and relay packets over these paths. +This can be done over a new path or over existing paths. - [Create a new path](./create-new-path.md) -- [Packet relaying on existing path](./existing-path.md) -- [Packet relaying on new path](./new-path.md) +- [Packet relaying on multiple paths](./multiple-paths.md) -Before proceeding to the sections above, please first, make sure you followed the steps in the [Identifiers section](../identifiers.md) \ No newline at end of file +Before proceeding to the sections above, please first, make sure you followed the steps in the [Identifiers section](../identifiers.md) diff --git a/guide/src/tutorials/local-chains/relay-paths/multiple-paths.md b/guide/src/tutorials/local-chains/relay-paths/multiple-paths.md index 2e7b5df1c0..f0c80450b7 100644 --- a/guide/src/tutorials/local-chains/relay-paths/multiple-paths.md +++ b/guide/src/tutorials/local-chains/relay-paths/multiple-paths.md @@ -1,11 +1,8 @@ -# Concurrent packet relaying on multiple paths +# Relay packets on multiple paths -At the moment, the `start` command relays packets over a single channel. -To relay packets over multiple channels concurrently, one can instead use -the `start-multi` command. +Hermes can relay packets over all current or future paths between the configured set of chains. -> __WARNING__: Relaying packets concurrently over multiple channels with the -> `start-multi` command is currently __experimental__. Use at your own risk. +Follow the steps below to connect three chains together and relay packets between them: 1. Paste the following configuration in the standard Hermes configuration file at `~/.hermes/config.toml`: @@ -206,14 +203,14 @@ the `start-multi` command. Note that the channel identifier on `ibc-1` is `channel-1`, and on `ibc-2` it is `channel-0`. -3. Start Hermes using the `start-multi` command: +3. Start Hermes using the `start` command: ```shell - hermes start-multi + hermes start ``` - Hermes will first relay the pending packets that have not been relayed and then start passive relaying by listening - to and acting on packet events. + Hermes will first relay the pending packets that have not been relayed and then + start passive relaying by listening to and acting on packet events. 4. In a separate terminal, use the `ft-transfer` command to send: diff --git a/guide/src/tutorials/local-chains/relay-paths/new-path.md b/guide/src/tutorials/local-chains/relay-paths/new-path.md deleted file mode 100644 index 9260a24f65..0000000000 --- a/guide/src/tutorials/local-chains/relay-paths/new-path.md +++ /dev/null @@ -1,58 +0,0 @@ -# Packet relaying on new path - -Hermes packet relaying can be done over a newly established path. It performs client creation, connection and channel handshake if a relay path is present in the configuration file. - -1. Specify the path between the `transfer` ports on `ibc-0` and `ibc-1` by including the following in the configuration file: - - ```toml - [[connections]] - a_chain = 'ibc-1' - b_chain = 'ibc-0' - - [[connections.paths]] - a_port = 'transfer' - b_port = 'transfer' - ``` - -2. From one terminal start hermes over this path: - - ```shell - hermes start ibc-0 ibc-1 - ``` - - > The different modes of operations are currently under heavy development. In this release the fist path specified between two chains is selected. - - Once the path is established the relayer waits listening for IBC packet events. - -3. in a separate terminal, use the transfer command to send 2 packets to `ibc-0` chain: - - ```shell - hermes tx raw ft-transfer ibc-1 ibc-0 transfer channel-0 9999 -o 1000 -n 2 - ``` -4. use the CLI to send 2 packets to `ibc-1` chain: - - ```shell - hermes tx raw ft-transfer ibc-0 ibc-1 transfer channel-1 9999 -o 1000 -n 2 - ``` - -5. Observe the output on the relayer terminal, verify that the send events are processed, and the `recv_packet` -s are sent out. - -6. Query the unreceived packets on `ibc-0` and `ibc-1` from a different terminal - - ```shell - hermes query packet unreceived-packets ibc-1 ibc-0 transfer channel-0 - hermes query packet unreceived-acks ibc-0 ibc-1 transfer channel-1 - hermes query packet unreceived-packets ibc-0 ibc-1 transfer channel-1 - hermes query packet unreceived-acks ibc-1 ibc-0 transfer channel-0 - ``` - - There should be no unreceived packets and acks: - - ```json - { - "status": "success", - "result": [] - } - ``` - - > It may also show packets that have been sent before the relayer loop was started (Hermes currently does not flush those). From c2b6a5efb3e8429f9d5a80ad277bfd5786f8ea54 Mon Sep 17 00:00:00 2001 From: Anca Zamfir Date: Wed, 2 Jun 2021 08:41:00 +0200 Subject: [PATCH 04/23] Fix changelog --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ac234be80..103e4b2805 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,8 +25,9 @@ for raising multiple issues that helped us improve the reliability of Hermes. ### BUG FIXES - [ibc-relayer] - - Fix for a client worker bug; Hermes `start` returns error if no chain is reachable ([#972]) - - Client worker aborts gracefully if the client is expired or frozen ([#1022]) + - Fix client worker initialization error ([#972]) + - Fix `hermes start` panic when all chains are unreachable ([#972]) + - Ensure expired or frozen client worker logs message and terminates ([#1022]) - [gaia-manager] - Import hermes keys properly even if wallet HD derivation path is set ([#975]) @@ -47,6 +48,7 @@ for raising multiple issues that helped us improve the reliability of Hermes. [#998]: https://github.com/informalsystems/ibc-rs/issues/998 [#1003]: https://github.com/informalsystems/ibc-rs/issues/1003 [#1022]: https://github.com/informalsystems/ibc-rs/issues/1022 +[gaia-manager]: https://github.com/informalsystems/ibc-rs/tree/master/scripts/gm ## v0.3.2 *May 21st, 2021* From e2d9fac00030da64dccfbc6edc3a0f4a84863351 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Wed, 2 Jun 2021 10:06:11 +0200 Subject: [PATCH 05/23] Document telemetry section of config file --- guide/src/config.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/guide/src/config.md b/guide/src/config.md index 77986ae300..03ad1a4510 100644 --- a/guide/src/config.md +++ b/guide/src/config.md @@ -40,6 +40,24 @@ strategy = 'packets' log_level = 'info' ``` +### `[telemetry]` + +The `telemetry` section defines parameters for Hermes' built-in [telemetry](telemetry.md) capabilities. + +#### Parameters + +* __enabled__: *(boolean)* Whether or not to enable the telemetry service. Default: `false`. + +* __port__: *(u16)* Specify the port over which the built-in HTTP server will serve the metrics gathered by the telemetry service. Default: `3001` + +Here is an example for the `telemetry` section: + +```toml +[telemetry] +enabled = true +port = 3001 +``` + ### `[[chains]]` A `chains` section includes parameters related to a chain and the full node to which the relayer can send transactions and queries. From 5311d20d55b0d146f5966d13315a3339b2f2b0e5 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Wed, 2 Jun 2021 10:06:26 +0200 Subject: [PATCH 06/23] Fixup documentation for global section of configuration file --- guide/src/config.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/guide/src/config.md b/guide/src/config.md index 03ad1a4510..660e984249 100644 --- a/guide/src/config.md +++ b/guide/src/config.md @@ -22,15 +22,17 @@ The configuration file must have one `global` section, and one `chains` section ### `[global]` -The global section has parameters that apply globally to the relayer operation. +The `global` section has parameters that apply globally to the relayer operation. #### Parameters -* __strategy__: Specify the strategy to be used by the relayer. Currently only `naive` is supported. +* __strategy__: Specify the strategy to be used by the relayer. Default: `all` + Two options are currently supported: + - `all`: Relay packets and perform channel handshakes. + - `packets`: Relay packets only. * __log_level__: Specify the verbosity for the relayer logging output. Valid options are 'error', 'warn', 'info', 'debug', 'trace'. Default value is `info`. -For more information on parametrizing the log output, see the section - [help/log-level][log-level]. + For more information on parametrizing the log output, see the section [help/log-level][log-level]. Here is an example for the `global` section: From c830ec4be026448aa38bf5035496e1975f98e334 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Wed, 2 Jun 2021 10:11:25 +0200 Subject: [PATCH 07/23] Document type of each config option --- guide/src/config.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/guide/src/config.md b/guide/src/config.md index 660e984249..bed4b6a027 100644 --- a/guide/src/config.md +++ b/guide/src/config.md @@ -26,12 +26,12 @@ The `global` section has parameters that apply globally to the relayer operation #### Parameters -* __strategy__: Specify the strategy to be used by the relayer. Default: `all` +* __strategy__: *(string)* Specify the strategy to be used by the relayer. Default: `all` Two options are currently supported: - `all`: Relay packets and perform channel handshakes. - `packets`: Relay packets only. -* __log_level__: Specify the verbosity for the relayer logging output. Valid options are 'error', 'warn', 'info', 'debug', 'trace'. Default value is `info`. +* __log_level__: *(string)* Specify the verbosity for the relayer logging output. Valid options are 'error', 'warn', 'info', 'debug', 'trace'. Default value is `info`. For more information on parametrizing the log output, see the section [help/log-level][log-level]. Here is an example for the `global` section: @@ -66,31 +66,31 @@ A `chains` section includes parameters related to a chain and the full node to w #### Parameters -* __id__: Specify the chain ID. For example `ibc-0` +* __id__: *(string)* Specify the chain ID. For example `ibc-0` -* __rpc_addr__: Specify the RPC address and port where the chain RPC server listens on. For example `http://localhost:26657` +* __rpc_addr__: *(string)* Specify the RPC address and port where the chain RPC server listens on. For example `http://localhost:26657` -* __grpc_addr__: Specify the GRPC address and port where the chain GRPC server listens on. For example `http://localhost:9090` +* __grpc_addr__: *(string)* Specify the GRPC address and port where the chain GRPC server listens on. For example `http://localhost:9090` -* __websocket_addr__: Specify the WebSocket address and port where the chain WebSocket server listens on. For example `ws://localhost:26657/websocket` +* __websocket_addr__: *(string)* Specify the WebSocket address and port where the chain WebSocket server listens on. For example `ws://localhost:26657/websocket` -* __rpc_timeout__: Specify the maximum amount of time (duration) that the RPC requests should take before timing out. Default value is `10s` (10 seconds). +* __rpc_timeout__: *(string)* Specify the maximum amount of time (duration) that the RPC requests should take before timing out. Default value is `10s` (10 seconds). -* __account_prefix__: Specify the prefix used by the chain. For example `cosmos` +* __account_prefix__: *(string)* Specify the prefix used by the chain. For example `cosmos` -* __key_name__: Specify the name of the private key JSON file. This is the filename for the private key used to sign transactions on this chain. Don't specify the file extension, for example if the filename for the private key is `testkey.json`, specify only `testkey` for this parameter. +* __key_name__: *(string)* Specify the name of the private key to use for signing transactions. See the [Adding Keys](commands/keys/index.md#adding-keys) chapter for for more information about managing signing keys. -* __store_prefix__: Specify the store prefix used by the on-chain IBC modules. For example `ibc`. +* __store_prefix__: *(string)* Specify the store prefix used by the on-chain IBC modules. For example `ibc`. -* __gas__: Specify the maximum amount of gas to be used as the gas limit for a transaction. Default value is `300000` +* __gas__: *(u64)* Specify the maximum amount of gas to be used as the gas limit for a transaction. Default value is `300000` -* __fee_denom__: Specify the denom to be used in the fee for a transaction. +* __fee_denom__: *(string)* Specify the denom to be used in the fee for a transaction. -* __fee_amount__: Specify the amount value to be used in the fee for a transaction. Default value is `1000` +* __fee_amount__: *(u64)* Specify the amount value to be used in the fee for a transaction. Default value is `1000` -* __clock_drift__: Specify the maximum amount of time to tolerate a clock drift. The clock drift parameter defines how much new (untrusted) header's Time can drift into the future. Default value is `5s` +* __clock_drift__: *(string)* Specify the maximum amount of time to tolerate a clock drift. The clock drift parameter defines how much new (untrusted) header's Time can drift into the future. Default value is `5s` -* __trusting_period__: Specify the amount of time to be used as the trusting period. It should be significantly less than the unbonding period (e.g. unbonding period = 3 weeks, trusting period = 2 weeks). Default value is `14days` (336 hours) +* __trusting_period__: *(string)* Specify the amount of time to be used as the trusting period. It should be significantly less than the unbonding period (e.g. unbonding period = 3 weeks, trusting period = 2 weeks). Default value is `14days` (336 hours) For example if you want to add a configuration for a chain named `ibc-0`: From 4ca033c33d5b7742aefc5ff34c41ef835ff3f6a2 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Wed, 2 Jun 2021 10:14:57 +0200 Subject: [PATCH 08/23] Remove unsused config default method --- relayer/src/config.rs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/relayer/src/config.rs b/relayer/src/config.rs index bd5e9c40a0..47ca162c79 100644 --- a/relayer/src/config.rs +++ b/relayer/src/config.rs @@ -5,7 +5,6 @@ use std::{fs, fs::File, io::Write, path::Path, time::Duration}; use serde_derive::{Deserialize, Serialize}; use tendermint_light_client::types::TrustThreshold; -use ibc::ics04_channel::channel::Order; use ibc::ics24_host::identifier::ChainId; use ibc::timestamp::ZERO_DURATION; @@ -30,10 +29,6 @@ pub mod default { pub fn connection_delay() -> Duration { ZERO_DURATION } - - pub fn channel_ordering() -> Order { - Order::Unordered - } } #[derive(Clone, Debug, Default, Deserialize, Serialize)] From 702ea967d84bc7bf335c0254c8a1ced62a6247a7 Mon Sep 17 00:00:00 2001 From: Adi Seredinschi Date: Wed, 2 Jun 2021 12:18:45 +0300 Subject: [PATCH 09/23] Guide update for the query clients method. --- guide/src/commands/queries/client.md | 42 +++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/guide/src/commands/queries/client.md b/guide/src/commands/queries/client.md index 1851ad1166..af165609b3 100644 --- a/guide/src/commands/queries/client.md +++ b/guide/src/commands/queries/client.md @@ -12,10 +12,14 @@ USAGE: hermes query clients DESCRIPTION: - Query clients + Query the identifiers of all clients on a chain POSITIONAL ARGUMENTS: chain_id identifier of the chain to query + +FLAGS: + -s, --src-chain-id ID filter for clients which target a specific chain id (implies '-o') + -o, --omit-chain-ids omit printing the source chain for each client (default: false) ``` __Example__ @@ -26,10 +30,40 @@ Query all clients on `ibc-1`: hermes query clients ibc-1 ``` -```rust +```json +Success: [ + ClientChain { + client_id: ClientId( + "07-tendermint-0", + ), + chain_id: ChainId { + id: "ibc-0", + version: 0, + }, + }, + ClientChain { + client_id: ClientId( + "07-tendermint-1", + ), + chain_id: ChainId { + id: "ibc-2", + version: 2, + }, + }, +] +``` + +Query all clients on `ibc-1` having `ibc-2` as their source chain: + +```shell +hermes query clients ibc-1 -s ibc-2 +``` + +```json Success: [ - ClientId("07-tendermint-0"), - ClientId("07-tendermint-1"), + ClientId( + "07-tendermint-1", + ), ] ``` From 8826ee8a2f61b8004cb59e07817b2fb5318aff51 Mon Sep 17 00:00:00 2001 From: Adi Seredinschi Date: Wed, 2 Jun 2021 12:34:09 +0300 Subject: [PATCH 10/23] Typo fix --- guide/src/help.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/src/help.md b/guide/src/help.md index 06abce36dd..fe132f7626 100644 --- a/guide/src/help.md +++ b/guide/src/help.md @@ -228,7 +228,7 @@ These levels correspond to the tracing sub-component of the relayer-cli, [see here](https://docs.rs/tracing-core/0.1.17/tracing_core/struct.Level.html). The relayer will _always_ print a last line summarizing the result of its -operation for queries of transactions. In addition to this last line, +operation for queries or transactions. In addition to this last line, arbitrary debug, info, or other outputs may be produced. Example, with `log_level = 'debug'` and JSON output: From 1a90128cafde682375db2dd99c4f2a1390322178 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Wed, 2 Jun 2021 11:43:58 +0200 Subject: [PATCH 11/23] Re-add Cargo.lock for proto-compiler crate --- proto-compiler/Cargo.lock | 1074 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 proto-compiler/Cargo.lock diff --git a/proto-compiler/Cargo.lock b/proto-compiler/Cargo.lock new file mode 100644 index 0000000000..b3e9202d6f --- /dev/null +++ b/proto-compiler/Cargo.lock @@ -0,0 +1,1074 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "anyhow" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b" + +[[package]] +name = "argh" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91792f088f87cdc7a2cfb1d617fa5ea18d7f1dc22ef0e1b5f82f3157cdc522be" +dependencies = [ + "argh_derive", + "argh_shared", +] + +[[package]] +name = "argh_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4eb0c0c120ad477412dc95a4ce31e38f2113e46bd13511253f79196ca68b067" +dependencies = [ + "argh_shared", + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "argh_shared" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "781f336cc9826dbaddb9754cb5db61e64cab4f69668bd19dcc4a0394a86f4cb1" + +[[package]] +name = "async-stream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "171374e7e3b2504e0e5236e3b59260560f9fe94bfe9ac39ba5e4e929c5590625" +dependencies = [ + "async-stream-impl", + "futures-core", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-trait" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + +[[package]] +name = "bytes" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" + +[[package]] +name = "cc" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "fixedbitset" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding", +] + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" + +[[package]] +name = "futures-channel" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" + +[[package]] +name = "futures-sink" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282" + +[[package]] +name = "futures-task" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" + +[[package]] +name = "futures-util" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" +dependencies = [ + "autocfg", + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "getrandom" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "git2" +version = "0.13.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9831e983241f8c5591ed53f17d874833e2fa82cac2625f3888c50cbfe136cba" +dependencies = [ + "bitflags", + "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", +] + +[[package]] +name = "h2" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "825343c4eef0b63f541f8903f395dc5beb362a979b5799a84062527ef1e37726" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" + +[[package]] +name = "heck" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "http" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" + +[[package]] +name = "httpdate" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" + +[[package]] +name = "hyper" +version = "0.14.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3f71a7eea53a3f8257a7b4795373ff886397178cd634430ea94e12d7fe4fe34" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "ibc-proto-compiler" +version = "0.2.0" +dependencies = [ + "argh", + "git2", + "prost-build", + "tempdir", + "tonic", + "tonic-build", + "walkdir", +] + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" + +[[package]] +name = "jobserver" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "972f5ae5d1cb9c6ae417789196c803205313edde988685da5e3aae0827b9e7fd" +dependencies = [ + "libc", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "789da6d93f1b866ffe175afc5322a4d76c038605a1c3319bb57b06967ca98a36" + +[[package]] +name = "libgit2-sys" +version = "0.12.21+1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86271bacd72b2b9e854c3dcfb82efd538f15f870e4c11af66900effb462f6825" +dependencies = [ + "cc", + "libc", + "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +] + +[[package]] +name = "libssh2-sys" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0186af0d8f171ae6b9c4c90ec51898bad5d08a2d5e470903a50d9ad8959cbee" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "log" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" + +[[package]] +name = "memchr" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" + +[[package]] +name = "mio" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956" +dependencies = [ + "libc", + "log", + "miow", + "ntapi", + "winapi", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "ntapi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +dependencies = [ + "winapi", +] + +[[package]] +name = "openssl-probe" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" + +[[package]] +name = "openssl-sys" +version = "0.9.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b0d6fb7d80f877617dfcb014e605e2b5ab2fb0afdf27935219bb6bd984cb98" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "petgraph" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "pin-project" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "proc-macro2" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "prost" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32d3ebd75ac2679c2af3a92246639f9fcc8a442ee420719cc4fe195b98dd5fa3" +dependencies = [ + "bytes", + "heck", + "itertools", + "log", + "multimap", + "petgraph", + "prost", + "prost-types", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "169a15f3008ecb5160cba7d37bcd690a7601b6d30cfb87a117d45e59d52af5d4" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bb" +dependencies = [ + "bytes", + "prost", +] + +[[package]] +name = "quote" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +dependencies = [ + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi", +] + +[[package]] +name = "rand" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +dependencies = [ + "libc", + "rand_chacha", + "rand_core 0.6.2", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.2", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + +[[package]] +name = "rand_core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +dependencies = [ + "rand_core 0.6.2", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "redox_syscall" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" +dependencies = [ + "bitflags", +] + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "slab" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" + +[[package]] +name = "socket2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "syn" +version = "1.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "tempdir" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" +dependencies = [ + "rand 0.4.6", + "remove_dir_all", +] + +[[package]] +name = "tempfile" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +dependencies = [ + "cfg-if", + "libc", + "rand 0.8.3", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "tinyvec" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a38d31d7831c6ed7aad00aa4c12d9375fd225a6dd77da1d25b707346319a975" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "pin-project-lite", + "tokio-macros", +] + +[[package]] +name = "tokio-macros" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c49e3df43841dafb86046472506755d8501c5615673955f6aa17181125d13c37" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-stream" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8864d706fdb3cc0843a49647ac892720dac98a6eeb818b77190592cf4994066" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1caa0b0c8d94a049db56b5acf8cba99dc0623aab1b26d5b5f5e2d945846b3592" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tonic" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ac42cd97ac6bd2339af5bcabf105540e21e45636ec6fa6aae5e85d44db31be0" +dependencies = [ + "async-stream", + "async-trait", + "base64", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "percent-encoding", + "pin-project", + "prost", + "prost-derive", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tower-service", + "tracing", + "tracing-futures", +] + +[[package]] +name = "tonic-build" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c695de27302f4697191dda1c7178131a8cb805463dda02864acb80fe1322fdcf" +dependencies = [ + "proc-macro2", + "prost-build", + "quote", + "syn", +] + +[[package]] +name = "tower" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60422bc7fefa2f3ec70359b8ff1caff59d785877eb70595904605bcc412470f" +dependencies = [ + "futures-core", + "futures-util", + "indexmap", + "pin-project", + "rand 0.8.3", + "slab", + "tokio", + "tokio-stream", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" + +[[package]] +name = "tower-service" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" + +[[package]] +name = "tracing" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "unicode-bidi" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" +dependencies = [ + "matches", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33717dca7ac877f497014e10d73f3acf948c342bee31b5ca7892faf94ccc6b49" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", +] + +[[package]] +name = "vcpkg" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "025ce40a007e1907e58d5bc1a594def78e5573bb0b1160bc389634e8f12e4faa" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + +[[package]] +name = "which" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55551e42cbdf2ce2bedd2203d0cc08dba002c27510f86dab6d0ce304cba3dfe" +dependencies = [ + "either", + "libc", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" From 893f7dc2089faa3ec7441d0b354834e2315e7464 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Wed, 2 Jun 2021 13:54:38 +0200 Subject: [PATCH 12/23] Document addition of `host` param to telemetry config --- guide/src/config.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/guide/src/config.md b/guide/src/config.md index bed4b6a027..ee7bbc9b54 100644 --- a/guide/src/config.md +++ b/guide/src/config.md @@ -50,6 +50,8 @@ The `telemetry` section defines parameters for Hermes' built-in [telemetry](tele * __enabled__: *(boolean)* Whether or not to enable the telemetry service. Default: `false`. +* __host__: *(string)* Specify the IPv4/6 host over which the built-in HTTP server will serve the metrics gathered by the telemetry service. Default: `127.0.0.1` + * __port__: *(u16)* Specify the port over which the built-in HTTP server will serve the metrics gathered by the telemetry service. Default: `3001` Here is an example for the `telemetry` section: @@ -57,6 +59,7 @@ Here is an example for the `telemetry` section: ```toml [telemetry] enabled = true +host = '127.0.0.1' port = 3001 ``` From f1ffec3150c6ef421fb643ad9c2fb75a991a2101 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Wed, 2 Jun 2021 15:35:04 +0200 Subject: [PATCH 13/23] Document telemetry service --- guide/src/SUMMARY.md | 1 + guide/src/images/grafana.png | Bin 0 -> 350364 bytes guide/src/installation.md | 10 +++++ guide/src/telemetry.md | 82 +++++++++++++++++++++++++++++++++++ 4 files changed, 93 insertions(+) create mode 100644 guide/src/images/grafana.png create mode 100644 guide/src/telemetry.md diff --git a/guide/src/SUMMARY.md b/guide/src/SUMMARY.md index 8a5a32427f..5a24b96534 100644 --- a/guide/src/SUMMARY.md +++ b/guide/src/SUMMARY.md @@ -11,6 +11,7 @@ - [Pre-requisites](./pre_requisites.md) - [Installation](./installation.md) - [Configuration](./config.md) +- [Telemetry](./telemetry.md) - [Tutorials](./tutorials/index.md) - [Local chains](./tutorials/local-chains/index.md) - [Install Gaia](./tutorials/local-chains/gaia.md) diff --git a/guide/src/images/grafana.png b/guide/src/images/grafana.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2882ec52f10624f31e20c77f8de612b3b406a6 GIT binary patch literal 350364 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�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%0A^~3n2{=2>JFWV$YgO1}=}c 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%0DVHe(R$c*y&ilGg4(DVFSAAGkH2&XeuATgtAy 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 + +> By default, Hermes bundles a [telemetry service and server](./telemetry.md). +> To build Hermes without telemetry support, and get a smaller executable, +> supply the `--no-default-features flag` to `cargo build`: +> +> ```shell +> cargo build --release --no-default-features --bin hermes +> ``` + If the build is successful, the `hermes` executable will be located in the following location: ```shell diff --git a/guide/src/telemetry.md b/guide/src/telemetry.md new file mode 100644 index 0000000000..33e58d28f4 --- /dev/null +++ b/guide/src/telemetry.md @@ -0,0 +1,82 @@ +# Telemetry + +*Since version 0.4.0.* + +To gain a better understanding of the status and activity of the relayer, +Hermes features a built-in telemetry service based on the [OpenTelemetry][opentelemetry] observability framework, +whose metrics can be exposed over HTTP for integration with the [Prometheus][prometheus] monitoring system. + +The official Hermes builds for Linux and macOS come with telemetry support since version 0.4.0, +and can be [downloaded directly from the GitHub Releases][gh-releases] page. + +[gh-releases]: https://github.com/informalsystems/ibc-rs/releases +[opentelemetry]: https://opentelemetry.io +[prometheus]: https://prometheus.io + +## Configuration + +The telemetry service is not active by default, and must be enabled in the relayer configuration: + +```toml +[telemetry] +enabled = true +host = '127.0.0.1' +port = 3001 +``` + +Please see the [relevant section in the *Configuration* page](./config.md#telemetry) for details about the configuration options. + +## Metrics + +The following table describes the metrics currently tracked by the telemetry service: + +| Name | Description | OpenTelemetry type | +| ---------------------------- | ---------------------------------------------------- | ------------------- | +| `workers` | Number of workers per object | `i64` UpDownCounter | +| `ibc_client_updates` | Number of client updates performed per client | `u64` Counter | +| `ibc_client_misbehaviours` | Number of misbehaviours detected per client | `u64` Counter | +| `ibc_receive_packets` | Number of receive packets relayed per channel | `u64` Counter | +| `ibc_acknowledgment_packets` | Number of acknowledgment packets relayed per channel | `u64` Counter | +| `ibc_timeout_packets` | Number of timeout packets relayed per channel | `u64` Counter | + +## Integration with Prometheus + +With the settings , the telemetry service will be enabled and will serve the metrics using +the Prometheus encoder over HTTP at [`http://localhost:3001/metrics`](http://localhost:3001/metrics). + +After starting Hermes with `hermes start`, and letting it run for a while to relay packets, +open [`http://localhost:3001/metrics`](http://localhost:3001/metrics) in a browser, you should +see Prometheus-encoded metrics. + +For example, with 3 channels and after transferring some tokens between the chains: + +```text +# HELP ibc_acknowledgment_packets Number of acknowledgment packets relayed per channel +# TYPE ibc_acknowledgment_packets counter +ibc_acknowledgment_packets{src_chain="ibc-0",src_channel="channel-0",src_port="transfer"} 300 +ibc_acknowledgment_packets{src_chain="ibc-0",src_channel="channel-1",src_port="transfer"} 100 +ibc_acknowledgment_packets{src_chain="ibc-1",src_channel="channel-0",src_port="transfer"} 48 +ibc_acknowledgment_packets{src_chain="ibc-1",src_channel="channel-1",src_port="transfer"} 0 +# HELP ibc_receive_packets Number of receive packets relayed per channel +# TYPE ibc_receive_packets counter +ibc_receive_packets{src_chain="ibc-0",src_channel="channel-0",src_port="transfer"} 48 +ibc_receive_packets{src_chain="ibc-0",src_channel="channel-1",src_port="transfer"} 0 +ibc_receive_packets{src_chain="ibc-1",src_channel="channel-0",src_port="transfer"} 300 +ibc_receive_packets{src_chain="ibc-1",src_channel="channel-1",src_port="transfer"} 100 +# HELP ibc_timeout_packets Number of timeout packets relayed per channel +# TYPE ibc_timeout_packets counter +ibc_timeout_packets{src_chain="ibc-0",src_channel="channel-0",src_port="transfer"} 1 +ibc_timeout_packets{src_chain="ibc-0",src_channel="channel-1",src_port="transfer"} 0 +ibc_timeout_packets{src_chain="ibc-1",src_channel="channel-0",src_port="transfer"} 0 +ibc_timeout_packets{src_chain="ibc-1",src_channel="channel-1",src_port="transfer"} 0 +# HELP workers Number of workers per object +# TYPE workers gauge +workers{type="client"} 6 +workers{type="packet"} 4 +``` + +### Visualization with Grafana + +Here's how these metrics look like in [Grafana](https://prometheus.io/docs/visualization/grafana/) with a Prometheus data source: + +![Hermes metrics in Grafana](./images/grafana.png) From ee1051b886b1a78e98271bbb4415ac973b7640c7 Mon Sep 17 00:00:00 2001 From: Anca Zamfir Date: Wed, 2 Jun 2021 16:32:48 +0200 Subject: [PATCH 14/23] Update changelog with telemetry --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7256d4463..282f62bc83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ for raising multiple issues that helped us improve the reliability of Hermes. ### FEATURES - [ibc-relayer] + - Add telemetry and Prometheus endpoint ([#868], [#1032]) - Add support for event based channel relaying ([#822]) - Graceful handling of packet events in the presence of multiple relayers ([#983]) @@ -39,6 +40,7 @@ for raising multiple issues that helped us improve the reliability of Hermes. - Promote `start-multi` command to `start` ([#911]) [#822]: https://github.com/informalsystems/ibc-rs/issues/822 +[#868]: https://github.com/informalsystems/ibc-rs/issues/868 [#871]: https://github.com/informalsystems/ibc-rs/issues/871 [#911]: https://github.com/informalsystems/ibc-rs/issues/911 [#972]: https://github.com/informalsystems/ibc-rs/issues/972 @@ -50,6 +52,7 @@ for raising multiple issues that helped us improve the reliability of Hermes. [#998]: https://github.com/informalsystems/ibc-rs/issues/998 [#1003]: https://github.com/informalsystems/ibc-rs/issues/1003 [#1022]: https://github.com/informalsystems/ibc-rs/issues/1022 +[#1032]: https://github.com/informalsystems/ibc-rs/issues/1032 [gaiad-manager]: https://github.com/informalsystems/ibc-rs/blob/master/scripts/gm/README.md ## v0.3.2 From 2eac3c7270cf9dc9c66ae3abe92146594df9635e Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Wed, 2 Jun 2021 16:52:06 +0200 Subject: [PATCH 15/23] Add changelog entry for #1026 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 282f62bc83..9d6b06f4e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ for raising multiple issues that helped us improve the reliability of Hermes. - Fix client worker initialization error ([#972]) - Fix `hermes start` panic when all chains are unreachable ([#972]) - Ensure expired or frozen client worker logs message and terminates ([#1022]) + - Fix regression where Hermes would not recover after a node went down and up again ([#1026]) - [gaiad-manager] - Import hermes keys properly even if wallet HD derivation path is set ([#975]) @@ -52,6 +53,7 @@ for raising multiple issues that helped us improve the reliability of Hermes. [#998]: https://github.com/informalsystems/ibc-rs/issues/998 [#1003]: https://github.com/informalsystems/ibc-rs/issues/1003 [#1022]: https://github.com/informalsystems/ibc-rs/issues/1022 +[#1026]: https://github.com/informalsystems/ibc-rs/issues/1026 [#1032]: https://github.com/informalsystems/ibc-rs/issues/1032 [gaiad-manager]: https://github.com/informalsystems/ibc-rs/blob/master/scripts/gm/README.md From 155faacba112af4f182f6d84538587c0dfef464b Mon Sep 17 00:00:00 2001 From: Anca Zamfir Date: Thu, 3 Jun 2021 12:51:20 +0200 Subject: [PATCH 16/23] Channel worker updates --- CHANGELOG.md | 4 +- guide/src/SUMMARY.md | 4 +- guide/src/commands/index.md | 2 +- guide/src/commands/path-setup/connections.md | 2 +- guide/src/commands/path-setup/index.md | 2 +- guide/src/commands/relaying.md | 45 -------------------- guide/src/config.md | 2 +- relayer-cli/src/commands.rs | 2 +- scripts/one-chain | 4 +- 9 files changed, 13 insertions(+), 54 deletions(-) delete mode 100644 guide/src/commands/relaying.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c4ed08474..f38e7abad5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -74,7 +74,8 @@ Docker images to Docker Hub. - [ibc-relayer] - Add support for multiple keys to the keyring ([#963]) - + - Add telemetry and Prometheus endpoint ([#868]) + - [release] - Released the official [Hermes image][hermes-docker] on Docker Hub ([#894]) - Automatically deploy Docker Hub image during release ([#967]) @@ -93,6 +94,7 @@ Docker images to Docker Hub. > Nothing +[#868]: https://github.com/informalsystems/ibc-rs/issues/868 [#894]: https://github.com/informalsystems/ibc-rs/pull/894 [#957]: https://github.com/informalsystems/ibc-rs/issues/957 [#960]: https://github.com/informalsystems/ibc-rs/issues/960 diff --git a/guide/src/SUMMARY.md b/guide/src/SUMMARY.md index 5a24b96534..772f7885ce 100644 --- a/guide/src/SUMMARY.md +++ b/guide/src/SUMMARY.md @@ -32,7 +32,9 @@ - [Clients](./commands/path-setup/clients.md) - [Connections](./commands/path-setup/connections.md) - [Channels](./commands/path-setup/channels.md) - - [Packet relaying](./commands/relaying.md) + - [Packet relaying](commands/relaying/index.md) + - [Packet Messages](./commands/relaying/packets.md) + - [Channel Handshake Messages](commands/relaying/channel.md) - [Listen mode](./commands/listen/index.md) - [Client upgrade](./commands/upgrade/index.md) - [Testing client upgrade](./commands/upgrade/test.md) diff --git a/guide/src/commands/index.md b/guide/src/commands/index.md index b605baf8eb..626c11b007 100644 --- a/guide/src/commands/index.md +++ b/guide/src/commands/index.md @@ -12,7 +12,7 @@ Commands to manage keys (private keys) for each chain. Commands to manage clients, connections, channels. -**[Packet Relaying](./relaying.md)** +**[Relaying](./relaying/index.md)** Commands to start the relayer and relay packets. diff --git a/guide/src/commands/path-setup/connections.md b/guide/src/commands/path-setup/connections.md index 099d85fd3a..88c12ec282 100644 --- a/guide/src/commands/path-setup/connections.md +++ b/guide/src/commands/path-setup/connections.md @@ -212,4 +212,4 @@ figure it out by looking up the given client on `ibc-0`. ## Non-zero Delay Connection -A connection can be created with a delay period parameter. This parameter specifies a period of time that must elpase after a successful client state update and before a packet with proofs using its commitment root can pe processed on chain. For more information see [how packet delay works](../relaying.md#packet-delay) and the [connection delay specification](https://github.com/cosmos/ibc/tree/master/spec/core/ics-003-connection-semantics). +A connection can be created with a delay period parameter. This parameter specifies a period of time that must elpase after a successful client state update and before a packet with proofs using its commitment root can pe processed on chain. For more information see [how packet delay works](../relaying/index.md#packet-delay) and the [connection delay specification](https://github.com/cosmos/ibc/tree/master/spec/core/ics-003-connection-semantics). diff --git a/guide/src/commands/path-setup/index.md b/guide/src/commands/path-setup/index.md index a661b3c893..60c5243407 100644 --- a/guide/src/commands/path-setup/index.md +++ b/guide/src/commands/path-setup/index.md @@ -11,7 +11,7 @@ This section describes a number of commands that can be used to manage clients, ## Create -Use the `create` commands to create a new clients, connections and channels. +Use the `create` commands to create new clients, connections and channels. ```shell USAGE: diff --git a/guide/src/commands/relaying.md b/guide/src/commands/relaying.md deleted file mode 100644 index 38c43adc30..0000000000 --- a/guide/src/commands/relaying.md +++ /dev/null @@ -1,45 +0,0 @@ -# Packet Relaying - -This section describes the commands that can be used to start the relayer and relay packets over one or multiple paths. - -## Table of Contents - - - -## The `start` Command - -The `start` command can be used to send packet transactions triggered by IBC packet -events that occur for all channels between the configured chains. -This is also referred to packet streaming. - -```shell -``` - -__Example__ - -To start the relayer, invoke the `start` command. Note that it does not require any options. - -```shell -hermes start -``` - -## Packet Streaming - -After the relayer is started using the `start` command, it listens to IBC packet events emitted by any of -the configured chains. Assuming the events are coming from a `source` chain, the relayer builds packets -based on these events, packets that are then sent either to the `source` chain or the counterparty (`destination`) chain. - -Current events and actions are: - -- `send_packet`: the relayer builds a packet message with the `packet` obtained from the event and any required proofs obtained from the counterparty of the chain where the message is sent. The concrete packet is: - - `MsgRecvPacket`, sent to `destination` chain if the channel is in open state on the `destination` chain, and a timeout has not occurred, - - `MsgTimeout`, sent to the `source` chain if the channel is in open state on the `destination` chain, but a timeout has occurred. - - `MsgTimeoutOnClose`, sent to the `source` chain if the channel is in closed state on the `destination` chain. -- `write_acknowledgement`: the relayer builds a `MsgAcknowledgement` packet that is sent to the `destination` chain. - -## Packet Delay - -If the relay path is using a non-zero delay connection, then `hermes` will delay all packet transactions. The delay is relative to the submission time for the client update at the height required by the packet proof. -The delay is used to prevent light client attacks and ensures that misbehavior detection finalizes before the transaction is submitted. -For more information on the misbehavior detector see [the misbehaviour section](./misbehaviour/index.md#monitoring-misbehaviour-and-evidence-submission). - diff --git a/guide/src/config.md b/guide/src/config.md index ee7bbc9b54..46b74b81c1 100644 --- a/guide/src/config.md +++ b/guide/src/config.md @@ -26,7 +26,7 @@ The `global` section has parameters that apply globally to the relayer operation #### Parameters -* __strategy__: *(string)* Specify the strategy to be used by the relayer. Default: `all` +* __strategy__: *(string)* Specify the strategy to be used by the relayer. Default: `packets` Two options are currently supported: - `all`: Relay packets and perform channel handshakes. - `packets`: Relay packets only. diff --git a/relayer-cli/src/commands.rs b/relayer-cli/src/commands.rs index accab0f7cf..dd7118896a 100644 --- a/relayer-cli/src/commands.rs +++ b/relayer-cli/src/commands.rs @@ -68,7 +68,7 @@ pub enum CliCmd { /// The `start` subcommand #[options(help = "Start the relayer in multi-chain mode. \ - Handles packet relaying across all open channels between all chains in the config.")] + Relays packets and channel handshake messages between all chains in the config.")] Start(StartCmd), /// The `query` subcommand diff --git a/scripts/one-chain b/scripts/one-chain index 0fd340681f..70b550a646 100755 --- a/scripts/one-chain +++ b/scripts/one-chain @@ -130,8 +130,8 @@ else sed -i '' 's#"tcp://127.0.0.1:26657"#"tcp://0.0.0.0:'"$RPC_PORT"'"#g' $CHAIN_DIR/$CHAIN_ID/config/config.toml sed -i '' 's#"tcp://0.0.0.0:26656"#"tcp://0.0.0.0:'"$P2P_PORT"'"#g' $CHAIN_DIR/$CHAIN_ID/config/config.toml sed -i '' 's#"localhost:6060"#"localhost:'"$PROF_PORT"'"#g' $CHAIN_DIR/$CHAIN_ID/config/config.toml - sed -i '' 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $CHAIN_DIR/$CHAIN_ID/config/config.toml - sed -i '' 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $CHAIN_DIR/$CHAIN_ID/config/config.toml + sed -i '' 's/timeout_commit = "5s"/timeout_commit = "10s"/g' $CHAIN_DIR/$CHAIN_ID/config/config.toml + sed -i '' 's/timeout_propose = "3s"/timeout_propose = "10s"/g' $CHAIN_DIR/$CHAIN_ID/config/config.toml sed -i '' 's/index_all_keys = false/index_all_keys = true/g' $CHAIN_DIR/$CHAIN_ID/config/config.toml # sed -i '' 's/min-retain-blocks = 0/min-retain-blocks = 100/g' $CHAIN_DIR/$CHAIN_ID/config/app.toml # sed -i '' 's#index-events = \[\]#index-events = \["message.action","send_packet.packet_src_channel","send_packet.packet_sequence"\]#g' $CHAIN_DIR/$CHAIN_ID/config/app.toml From 2cf0d451fe976138b5c4ac4b252849dab584abcd Mon Sep 17 00:00:00 2001 From: Anca Zamfir Date: Thu, 3 Jun 2021 12:54:30 +0200 Subject: [PATCH 17/23] Add missing files --- guide/src/SUMMARY.md | 4 +-- guide/src/commands/relaying/channel.md | 36 +++++++++++++++++++ guide/src/commands/relaying/index.md | 20 +++++++++++ guide/src/commands/relaying/packets.md | 50 ++++++++++++++++++++++++++ 4 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 guide/src/commands/relaying/channel.md create mode 100644 guide/src/commands/relaying/index.md create mode 100644 guide/src/commands/relaying/packets.md diff --git a/guide/src/SUMMARY.md b/guide/src/SUMMARY.md index 772f7885ce..2352de14a5 100644 --- a/guide/src/SUMMARY.md +++ b/guide/src/SUMMARY.md @@ -32,9 +32,9 @@ - [Clients](./commands/path-setup/clients.md) - [Connections](./commands/path-setup/connections.md) - [Channels](./commands/path-setup/channels.md) - - [Packet relaying](commands/relaying/index.md) + - [Relaying](commands/relaying/index.md) - [Packet Messages](./commands/relaying/packets.md) - - [Channel Handshake Messages](commands/relaying/channel.md) + - [Channel Open Handshake Messages](commands/relaying/channel.md) - [Listen mode](./commands/listen/index.md) - [Client upgrade](./commands/upgrade/index.md) - [Testing client upgrade](./commands/upgrade/test.md) diff --git a/guide/src/commands/relaying/channel.md b/guide/src/commands/relaying/channel.md new file mode 100644 index 0000000000..30b002ff20 --- /dev/null +++ b/guide/src/commands/relaying/channel.md @@ -0,0 +1,36 @@ +# Channel Message Relaying + +This section describes the configuration and commands that can be used to start the relayer and relay both channel handshake and packets. + +## The `start` Command + +To relay packets and channel handshake messages use `all` as strategy in the `global` section of the configuration file: +```toml +[global] +strategy = 'all' +log_level = 'info' +``` + +Then start hermes using the start command: + +```shell +hermes start +``` + +The relayer sends channel and packet transactions triggered by IBC events. + +## Channel Open Handshake Relaying + +After the relayer is started using the `start` command, it scans the chain state and will resume the handshake for any +channels that are not in open state. It then listens to IBC events emitted by any of +the configured chains. + +Assuming the events are coming from a `source` chain, the relayer determines the `destination` chain and builds the open handshake messages based on these events. These are then sent to the `destination` chain. +In addition to the events described in [Packet Relaying](packets.md#packet-relaying), in the `all` strategy mode the following IBC events are handled: + +- `chan_open_init`: the relayer builds a `MsgChannelOpenTry` message +- `chan_open_try`: the relayer builds a `MsgChannelOpenAck` message +- `chan_open_ack`: the relayer builds a `MsgChannelOpenConfirm` message +- `chan_open_confirm`: no message is sent out, channel opening is finished + + diff --git a/guide/src/commands/relaying/index.md b/guide/src/commands/relaying/index.md new file mode 100644 index 0000000000..45915d4543 --- /dev/null +++ b/guide/src/commands/relaying/index.md @@ -0,0 +1,20 @@ +# Relaying +This section describes the types of relaying that hermes can perform. + +Hermes can send transactions triggered by IBC events. It currently handles channel handshake and packet events: + - [packets messages only](./packets.md#packet-relaying) + - [channel and packet messages](channel.md#channel-handshake-relaying) + +## The `start` Command + +The `start` command can be used to start hermes in IBC event listen mode. + +```shell +USAGE: + hermes start + +DESCRIPTION: + Start the relayer in multi-chain mode. Relays packets and channel handshake messages between all chains in the config. +``` + +As described in next sub-sections, the type of relaying can be configured in the `global` section of the configuration file, by specifying different values in `strategy` field. diff --git a/guide/src/commands/relaying/packets.md b/guide/src/commands/relaying/packets.md new file mode 100644 index 0000000000..8f5c625de0 --- /dev/null +++ b/guide/src/commands/relaying/packets.md @@ -0,0 +1,50 @@ +# Packet Relaying + +This section describes the configuration and commands that can be used to start the relayer and relay packets + over one or multiple paths. + +## Table of Contents + + + +## The `start` Command + +To relay packets only use `packets` as strategy in the `global` section of the configuration file: +```toml +[global] +strategy = 'packets' +log_level = 'info' +``` + +Then start hermes using the start command: + +```shell +hermes start +``` + +The relayer sends packet transactions triggered by IBC packet events for all open channels between the configured chains. +This is also referred to packet streaming. + +## Packet Streaming + +After the relayer is started using the `start` command, it listens to IBC packet events emitted by any of +the configured chains. Assuming the events are coming from a `source` chain, the relayer builds packets +based on these events, packets that are then sent either to the `source` chain or the counterparty (`destination`) chain. + +Current events and actions are: + +- `send_packet`: the relayer builds a packet message with the `packet` obtained from the event and any required proofs obtained from the counterparty of the chain where the message is sent. The concrete packet is: + - `MsgRecvPacket`, sent to `destination` chain if the channel is in open state on the `destination` chain, and a timeout has not occurred, + - `MsgTimeout`, sent to the `source` chain if the channel is in open state on the `destination` chain, but a timeout has occurred. + - `MsgTimeoutOnClose`, sent to the `source` chain if the channel is in closed state on the `destination` chain. +- `write_acknowledgement`: the relayer builds a `MsgAcknowledgement` packet that is sent to the `destination` chain. + +In addition to these events, the relayer will also handle channel closing events: +- `chan_close_init`: the relayer builds a `MsgChannelCloseConfirm` and sends it to the `destination` chain + +## Packet Delay + +If the relay path is using a non-zero delay connection, then `hermes` will delay all packet transactions. The delay is relative to the submission time for the client update at the height required by the packet proof. +The delay is used to prevent light client attacks and ensures that misbehavior detection finalizes before the transaction is submitted. +For more information on the misbehavior detector see [the misbehaviour section](../../misbehaviour/index.md#monitoring-misbehaviour-and-evidence-submission). + From 2f3e3cb46ff2d0c52e96368dc667ea9cbc17e6b4 Mon Sep 17 00:00:00 2001 From: Anca Zamfir Date: Thu, 3 Jun 2021 13:01:26 +0200 Subject: [PATCH 18/23] Update feature matrix --- guide/src/features.md | 11 +++++------ guide/src/features/matrix.md | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/guide/src/features.md b/guide/src/features.md index d3ed80fc04..839d46e5ca 100644 --- a/guide/src/features.md +++ b/guide/src/features.md @@ -14,11 +14,10 @@ A feature matrix and comparison between the Rust and Go relayer implementations - relay packets, acknowledgments, timeout and timeout-on-close packets, with zero or non-zero delay. - queries for all objects - Packet relaying over: - - new path - - single specified path - multiple paths, for the chains in `config.toml` - Restart support - - clear packets on relayer restart when started for a single path or multiple paths + - clear packets + - resume channel handshake if configured to relay `all` - Client upgrade - upgrading clients after a counterparty chain has performed an upgrade for IBC breaking changes - Packet delay: @@ -36,15 +35,15 @@ A feature matrix and comparison between the Rust and Go relayer implementations - initiating a cross chain transfer (mainly for testing) - relaying sent packets, acknowledgments and timeouts - client upgrade +- Channel handshake for existing channel that is not in `Open` state +- Telemetry support ## Upcoming / Unsupported Features Planned features: -- Connection handshake for existing connection that is not in `Open` state -- Channel handshake for existing channel that is not in `Open` state - Full Passive mode: relay from all IBC events + - Connection handshake for existing connection that is not in `Open` state - Relayer support for management application (add RPC server) -- Telemetry support - Dynamic configuration management Not planned: diff --git a/guide/src/features/matrix.md b/guide/src/features/matrix.md index 08c4001f29..c95efd4d2f 100644 --- a/guide/src/features/matrix.md +++ b/guide/src/features/matrix.md @@ -39,7 +39,7 @@ __Feature comparison between Hermes and the Go relayer__ | Conn_Open_Handshake_P | ❌ | ❌ | | | | | | Chan_Open_Handshake_A | ✅ | ✅ | -| Chan_Open_Handshake_P | ❌ | ❌ | +| Chan_Open_Handshake_P | ✅ | ❌ | | Chan_Open_Handshake_Optimistic | ❌ | ❌ | open a channel on a non-Open connection | | | | | Chan_Close_Handshake_P | ✅ | ✅ | From 10742867902dcda9babe69a8b02127a7f5664b32 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Thu, 3 Jun 2021 14:08:38 +0200 Subject: [PATCH 19/23] Update mdbook to v0.4.7 --- .github/workflows/guide.yml | 2 +- Cargo.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/guide.yml b/.github/workflows/guide.yml index 995e78954b..0245dff1f1 100644 --- a/.github/workflows/guide.yml +++ b/.github/workflows/guide.yml @@ -19,7 +19,7 @@ jobs: - name: Setup mdbook uses: peaceiris/actions-mdbook@v1 with: - mdbook-version: "0.4.6" + mdbook-version: "0.4.7" - name: Setup mdbook-mermaid uses: actions-rs/cargo@v1 diff --git a/Cargo.lock b/Cargo.lock index f0e052a2bb..8f265f8857 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -832,7 +832,7 @@ checksum = "17392a012ea30ef05a610aa97dfb49496e71c9f676b27879922ea5bdf60d9d3f" dependencies = [ "atty", "humantime", - "log", + "log 0.4.14", "regex", "termcolor", ] From 5b2c5a824b9b19202c4735ec67b617149a338dd9 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Thu, 3 Jun 2021 14:21:34 +0200 Subject: [PATCH 20/23] Update mdbook to v0.4.9 --- .github/workflows/guide.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/guide.yml b/.github/workflows/guide.yml index 0245dff1f1..245897617f 100644 --- a/.github/workflows/guide.yml +++ b/.github/workflows/guide.yml @@ -19,7 +19,7 @@ jobs: - name: Setup mdbook uses: peaceiris/actions-mdbook@v1 with: - mdbook-version: "0.4.7" + mdbook-version: "0.4.9" - name: Setup mdbook-mermaid uses: actions-rs/cargo@v1 From 4200ff0a1dd7c85ae178602719701ef6dc8c6bab Mon Sep 17 00:00:00 2001 From: Anca Zamfir Date: Thu, 3 Jun 2021 15:26:36 +0200 Subject: [PATCH 21/23] Add cosmos-sdk versions supported --- Cargo.lock | 2 +- guide/src/features.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f0e052a2bb..8f265f8857 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -832,7 +832,7 @@ checksum = "17392a012ea30ef05a610aa97dfb49496e71c9f676b27879922ea5bdf60d9d3f" dependencies = [ "atty", "humantime", - "log", + "log 0.4.14", "regex", "termcolor", ] diff --git a/guide/src/features.md b/guide/src/features.md index 839d46e5ca..26377eb163 100644 --- a/guide/src/features.md +++ b/guide/src/features.md @@ -4,7 +4,8 @@ This section includes a summary of the supported and planned features. A feature matrix and comparison between the Rust and Go relayer implementations can be found in the [Feature Matrix](./features/matrix.md) ## Supported Features - +- Support for cosmos-SDK chains implementing [IBCv1.0](https://github.com/cosmos/ibc-go/tree/main/proto/ibc) protocol specification + - supports versions `v0.41.3` to `v0.42.4` - Basic features - create and update clients - refresh clients to prevent expiration From 51abdaca0bbef08e138d2ae0027651831865e3d6 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Thu, 3 Jun 2021 15:37:37 +0200 Subject: [PATCH 22/23] Higlight compat info --- guide/src/features.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/guide/src/features.md b/guide/src/features.md index 26377eb163..98ca1ee515 100644 --- a/guide/src/features.md +++ b/guide/src/features.md @@ -3,9 +3,14 @@ This section includes a summary of the supported and planned features. A feature matrix and comparison between the Rust and Go relayer implementations can be found in the [Feature Matrix](./features/matrix.md) +> **Cosmos SDK compatibility:** +> Hermes supports Cosmos SDK chains implementing the [IBC v1.0][ibcv1] protocol specification. +> Cosmos SDK versions `0.41.3` to `0.42.4` are officially supported. + +[ibcv1]: https://github.com/cosmos/ibc-go/tree/main/proto/ibc + ## Supported Features -- Support for cosmos-SDK chains implementing [IBCv1.0](https://github.com/cosmos/ibc-go/tree/main/proto/ibc) protocol specification - - supports versions `v0.41.3` to `v0.42.4` + - Basic features - create and update clients - refresh clients to prevent expiration From d0ab8d079f7d2874db005dd81a5bd4879a0c3b37 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Thu, 3 Jun 2021 15:54:48 +0200 Subject: [PATCH 23/23] Write summary of 0.4.0 release --- CHANGELOG.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f38e7abad5..c92718f45b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,27 @@ ## Unreleased -Special thanks to Colin Axnér (@colin-axner) and Jongwhan Lee (@leejw51crypto) -for raising multiple issues that helped us improve the reliability of Hermes. +> Nothing yet. + +## v0.4.0 +*June 3rd, 2021* + +- This release of Hermes features an internal [telemetry service][telemetry] + which can export metrics about the relayer to Prometheus. +- A new [relaying strategy][strategy] is now available, which enables Hermes to + complete channel handshakes in an event-based fashion. +- Hermes now checks if another relayer may have already processed a packet event, + and will not attempt to process it itself, which improves performance. +- The startup time of the relayer has been substantially improved. +- The `start-multi` command has been promoted to `start`, which means + that the worker-based relayer is not experimental anymore. +- A regression where Hermes would not recover after a node went down and up again was fixed. + +[telemetry]: https://hermes.informal.systems/telemetry.html +[strategy]: http://hermes.informal.systems/config.html?highlight=strategy#global + +> Special thanks to Colin Axnér (@colin-axner) and Jongwhan Lee (@leejw51crypto) +> for raising multiple issues that helped us improve the reliability of Hermes. ### FEATURES