├── .changelog ├── config.toml ├── epilogue.md ├── unreleased │ ├── .gitkeep │ ├── bug-fixes │ │ └── 2799-remove-openssl-dep.md │ └── improvements │ │ └── ibc-relayer-cli │ │ └── 2810-dockerfile-update.md ├── v0.10.0 │ ├── breaking-changes │ │ ├── 1660-msrv-1.57.md │ │ ├── 1665-tendermint-0.23.2.md │ │ ├── ibc-relayer │ │ │ └── 1656-supervisor-spawn.md │ │ └── ibc │ │ │ ├── 1618-get-frozen-height.md │ │ │ └── 1665-remove-chrono.md │ ├── bug-fixes │ │ ├── 1264-recover-acct-seq.md │ │ ├── 1634-update-unclog-instructions.md │ │ ├── ibc-relayer │ │ │ ├── 1664-handle-expired-client.md │ │ │ ├── 1715-execute-schedule-after-packet-cmd.md │ │ │ └── 1750-misbehavior-config.md │ │ └── ibc │ │ │ ├── 1573-delete-commitment-in-acknowledgePacket.md │ │ │ ├── 1649-fix-chan-open-ack-verify.md │ │ │ ├── 1697-assert-non-zero-trust-level.md │ │ │ └── 1710-fix-frozen-height-proto-conv.md │ ├── features │ │ ├── 1410-dynamic-version.md │ │ ├── 1550-ci-gaiav6.md │ │ ├── 1606.md │ │ ├── 1633-allow-fee-granters.md │ │ ├── ibc-relayer │ │ │ └── 1561-config-proof-specs.md │ │ └── ibc │ │ │ └── 1583-module-verification-ICS07.md │ ├── improvements │ │ ├── ibc-relayer-cli │ │ │ ├── 1063-event-monitor-on-demand.md │ │ │ └── 1636.md │ │ ├── ibc-relayer │ │ │ └── 1576-update-abscissa.md │ │ └── ibc │ │ │ └── 1665-remove-chrono.md │ └── summary.md ├── v0.11.0 │ ├── 1749-build-aarch64.md │ ├── breaking-changes │ │ ├── 1612-ibc-clock.md │ │ ├── 1765-msrv-1.58.md │ │ ├── 1767-tendermint-rs-0.23.5.md │ │ ├── 1817-remove-filter-option.md │ │ └── ibc-relayer │ │ │ ├── 1662-configurable-upgrade-denom.md │ │ │ └── 1807-foreign-client-create-params.md │ ├── bug-fixes │ │ └── ibc │ │ │ ├── 1745-fix-consensus-proof-verification.md │ │ │ └── 1763-init-consensus-meta-on-client-create.md │ ├── improvements │ │ ├── 1536-fast-start.md │ │ ├── 1641-tendermint-0.23.4.md │ │ ├── 1687-remove-mock-sleep.md │ │ ├── ibc-relayer-cli │ │ │ ├── 1662-configurable-upgrade-denom.md │ │ │ ├── 1777-update-abscissa-and-clap.md │ │ │ ├── 1789-cli-completions.md │ │ │ └── 836-create-client-options.md │ │ ├── ibc-relayer │ │ │ ├── 1481-chainendpoint-any-consensus-state.md │ │ │ ├── 1491-structured-logs.md │ │ │ └── 1785-clarify-ethermint-keys.md │ │ └── ibc │ │ │ ├── 1760-path-variants-as-types.md │ │ │ └── 1761-disallow-empty-commitment-prefix-and-proof.md │ └── summary.md ├── v0.11.1 │ ├── bug-fixes │ │ └── ibc-relayer-cli │ │ │ └── 1822-skip-config-for-completions.md │ ├── improvements │ │ └── ibc-relayer │ │ │ ├── 1389-add-connection-handshake-verification-logic.md │ │ │ ├── 1663-pending-timeout.md │ │ │ └── 1793-begin-end-block-chan-events.md │ └── summary.md ├── v0.12.0 │ ├── bug-fixes │ │ ├── ibc-relayer-cli │ │ │ └── 1885-disable-config-reload.md │ │ ├── ibc-relayer │ │ │ ├── 1837-non-standard-ports.md │ │ │ ├── 1844-duplicate-send-packet-events.md │ │ │ ├── 1861-non-standard-ports.md │ │ │ └── 1872-clear-packets.md │ │ └── ibc │ │ │ ├── 1706-fix-formatting-for-some-tendermint-errors.md │ │ │ └── 1770-deterministic-host-timestamp.md │ ├── features │ │ ├── 1797-ibc-v3.md │ │ └── ibc-relayer-cli │ │ │ └── 1895-rust-log.md │ ├── improvements │ │ ├── ibc-relayer-cli │ │ │ └── 1834-clear-packets-cmd.md │ │ ├── ibc-relayer │ │ │ ├── 1388-more-health-checks.md │ │ │ └── 1880-nonallocating-verions-method.md │ │ └── ibc │ │ │ ├── 1706-add-client-state-tests.md │ │ │ └── 1769-cap-reader-keeper.md │ └── summary.md ├── v0.13.0 │ ├── bug-fixes │ │ └── ibc-relayer │ │ │ ├── 1835-ordered-channels.md │ │ │ ├── 1991-packet-worker-chan-open.md │ │ │ └── 2008-slow-relayer.md │ ├── features │ │ ├── ibc-proto │ │ │ ├── 1913-cosmwasm-support.md │ │ │ └── 1988-serde-serialize-deserialize.md │ │ └── ibc-relayer │ │ │ ├── 1908-caching-layer.md │ │ │ └── 1927-packet-filtering-wildcards.md │ ├── improvements │ │ ├── ibc-integration-test │ │ │ └── 1961-test-framework.md │ │ ├── ibc-relayer-cli │ │ │ └── 1559-cli-output.md │ │ ├── ibc-relayer │ │ │ └── 1908-caching-layer-documentation.md │ │ └── ibc │ │ │ └── 718-rework-ics04_channel-events.md │ └── summary.md ├── v0.14.0 │ ├── breaking-changes │ │ └── 2081-msrv-1.60.md │ ├── bug-fixes │ │ ├── ibc-relayer-cli │ │ │ ├── 1288-upgrade-chain-confirmation.md │ │ │ └── 1921-create-client-options.md │ │ ├── ibc-relayer │ │ │ ├── 1772-fix-conn-delay-check.md │ │ │ ├── 1792-fix-hermes-retrying-not-regenerating-msgs.md │ │ │ ├── 1998-default-max-block-time.md │ │ │ ├── 2075-wildcard-filter-middle.md │ │ │ └── 2097-misbehavior-height.md │ │ └── ibc │ │ │ ├── 2035-handler-event-height.md │ │ │ └── 2062-conn-open-init-version.md │ ├── features │ │ └── ibc-relayer │ │ │ └── 2036-caching-metrics.md │ ├── improvements │ │ ├── 1936-missing-chain-warn.md │ │ ├── 2045-tendermint-0.23.6.md │ │ ├── ibc-relayer-cli │ │ │ ├── 1421-create-channel-cli.md │ │ │ └── 2096-query-packet-pending.md │ │ └── ibc │ │ │ ├── 1758-complete-ics26.md │ │ │ └── 2068-chan-id-u64.md │ └── summary.md ├── v0.14.1 │ ├── bug-fixes │ │ └── ibc-relayer │ │ │ └── 1970-app-latest-height.md │ └── summary.md ├── v0.15.0 │ ├── 2181-update-codeowners.md │ ├── bug-fixes │ │ ├── ibc-relayer │ │ │ ├── 1971-non-batch-fix.md │ │ │ └── 2180-client-expiry-time.md │ │ └── ibc │ │ │ ├── 2104-fix-commitment-computation.md │ │ │ ├── 2114-fix-ack-verification.md │ │ │ └── 2178-conn-ack-bug-fix.md │ ├── features │ │ ├── 1986-gaia-e2e-tests.md │ │ └── ibc-relayer │ │ │ └── 2112-new-metrics.md │ ├── improvements │ │ ├── ibc-relayer │ │ │ ├── 1971-max-msg-num-min-bound.md │ │ │ ├── 2031-misleading-misbehavior-error.md │ │ │ ├── 2087-incremental-packet-clearing.md │ │ │ └── 2192-adr009-impl.md │ │ └── ibc │ │ │ └── 2159-remove-ocaps.md │ └── summary.md ├── v0.6.2 │ ├── bug-fixes │ │ └── 1247-add-missing-protobuf-impl.md │ ├── features │ │ ├── 1020-augment-error-type.md │ │ ├── 1021-cli-indicate-config-file-error.md │ │ ├── 1229-upgrade-clis.md │ │ └── 988-flex-error.md │ ├── improvements │ │ └── 1245-max-params-validation.md │ └── summary.md ├── v0.7.0 │ ├── bug-fixes │ │ ├── 1261-gm-req-detect.md │ │ ├── 1285-fix-typeok-bug.md │ │ └── ibc │ │ │ └── 1257-set-capability-index.md │ ├── features │ │ ├── 1065-keys-delete.md │ │ ├── 1175-update-ci.md │ │ ├── 1287-upgrade-legacy.md │ │ ├── 843-rest-api.md │ │ ├── 901-conditionally-spawn-worker.md │ │ └── 948-upgrade-to-cosmos-sdk-v0.43.md │ ├── improvements │ │ ├── 1132-query-channels-filter.md │ │ ├── 1191-ica-compat.md │ │ ├── 1249-update-modelator.md │ │ ├── 1265-async-tx-confirmation.md │ │ └── ibc │ │ │ └── 1297-impl-consensus-state.md │ └── summary.md ├── v0.7.1 │ ├── bug-fixes │ │ ├── 1312-fix-gm-stderr.md │ │ └── 1343-fix-header-decoding-error.md │ ├── features │ │ └── 1267-ethermint-support.md │ ├── improvements │ │ ├── 1281-derive-traits-module-errors.md │ │ ├── 1311-mbt-test-client-upgrade.md │ │ ├── 1319-u256-amount-transfer.md │ │ └── ibc │ │ │ ├── 1268-reader-result.md │ │ │ └── 1333-modules-error.md │ └── summary.md ├── v0.7.2 │ ├── features │ │ ├── 1155-secp256k1-signatures.md │ │ ├── 1290-stubborn-workers.md │ │ ├── 1362-skip-consensus-states.md │ │ ├── 1371-gm-features.md │ │ └── 1380-toggle-confirmations.md │ ├── improvements │ │ ├── 1156-use-core-alloc.md │ │ ├── 1336-better-health-check.md │ │ ├── 1337-semver-pre-compat.md │ │ ├── 1344-bump-compat-0.44.md │ │ └── 1376-consensus-params-explicit-height.md │ └── summary.md ├── v0.7.3 │ ├── bug-fixes │ │ └── ibc-relayer │ │ │ ├── 1345-fix-tx-simulation-0.42.md │ │ │ └── 1402-fix-account-seq-error-case.md │ ├── improvements │ │ └── ibc-relayer │ │ │ └── 1392-trusting-period-default.md │ └── summary.md ├── v0.8.0-pre.1 │ ├── breaking-changes │ │ └── ibc │ │ │ └── 1214-ics07.md │ ├── features │ │ ├── 1433-memo-field.md │ │ ├── ibc-relayer │ │ │ ├── 1457-default-gas.md │ │ │ └── 1464-ibc-go-check.md │ │ └── ibc │ │ │ └── 1214-ics07.md │ ├── improvements │ │ └── ibc-relayer │ │ │ ├── 1231-begin-end-block-events.md │ │ │ └── 1440-improve-error-msg-create-client.md │ └── summary.md ├── v0.8.0 │ ├── breaking-changes │ │ └── 1519-msrv-1.56.md │ ├── bug-fixes │ │ ├── 1445-clock-drift.md │ │ └── 1504-timeout_check.md │ ├── improvements │ │ ├── 1417-update-client-misbehavior-perf.md │ │ ├── 1502-update-prost-09.md │ │ └── ibc │ │ │ ├── 1436-restructure-to-match-ibc-go.md │ │ │ ├── 1460-path-fromstr.md │ │ │ └── 838-converting-IbcEvent-into-AbciEvent.md │ └── summary.md ├── v0.9.0 │ ├── bug-fixes │ │ └── ibc │ │ │ └── 1532-connOpenAck-counterparty-conn-id-not-set.md │ ├── features │ │ ├── 1408-vega-protos.md │ │ ├── 1534-ibc-queries.md │ │ └── ibc-relayer │ │ │ └── 1518-config-modes.md │ ├── improvements │ │ ├── 1544-typed-tla-mbt-specs.md │ │ ├── 1556-arch-doc.md │ │ ├── ibc-relayer-cli │ │ │ ├── 1515-single-line-errors.md │ │ │ └── 1555-fee-amount-overflow.md │ │ ├── ibc-relayer │ │ │ └── 1479-abort-failed-simulated-txs.md │ │ └── ibc │ │ │ └── 1546-add-partialeq-ibcevent.md │ └── summary.md ├── v1.0.0-rc.0 │ ├── breaking-changes │ │ ├── ibc-relayer-cli │ │ │ ├── 1075-change-key-name-flag.md │ │ │ ├── 2174-gas-multiplier.md │ │ │ ├── 2239-changed-args-to-flags.md │ │ │ ├── 2379-pending-consistency.md │ │ │ └── 594-unify-cli.md │ │ └── ibc │ │ │ └── 2361-string-channel-id.md │ ├── bug-fixes │ │ ├── ibc-relayer-cli │ │ │ ├── 2143-config-validate-cli.md │ │ │ └── 2168-conn-handshake-retry.md │ │ ├── ibc-relayer │ │ │ ├── 1153-fix-execute-schedule-leaky-pipeline.md │ │ │ ├── 2093-fix-duplicate-packets-on-start.md │ │ │ ├── 2185-client-upgrade.md │ │ │ ├── 2254-fix-channel-handshake.md │ │ │ └── 2333-error-for-all-msgs.md │ │ └── ibc │ │ │ ├── 2293-fix-recv-packet-dest-portchan.md │ │ │ └── 2361-channel-id-max-len-64.md │ ├── features │ │ ├── ibc-proto │ │ │ └── 2277-proto-server.md │ │ ├── ibc-relayer-cli │ │ │ ├── 2201-new-query-denom-trace-cli.md │ │ │ ├── 2358-add-unit-testing-commands.md │ │ │ ├── 912-balance-subcommand-cli.md │ │ │ └── 999-channel-client-subcommand-cli.md │ │ ├── ibc-relayer │ │ │ ├── 2240-chain-types.md │ │ │ └── 2301-tendermint-version-support.md │ │ └── ibc-telemetry │ │ │ └── 2175-pending-packet-tracking-metrics.md │ ├── improvements │ │ ├── ibc-relayer-cli │ │ │ ├── 2111-packet-clearing-select-specific-wallet.md │ │ │ ├── 2300-add-upgrade-height-flag-to-upgrade-client-command.md │ │ │ └── 2317-add-flag-to-skip-new-client-connection.md │ │ ├── ibc-relayer │ │ │ ├── 1400-fee-related-error-message.md │ │ │ ├── 2155-remove-infinite-loop.md │ │ │ ├── 2223-consolidate-chain-query-proven.md │ │ │ └── 2249-ignore-nonce-mismatch.md │ │ └── ibc │ │ │ ├── 1009-height-zero-complete.md │ │ │ ├── 1759-complete-ics20.md │ │ │ ├── 2279-u256-serde-derive.md │ │ │ └── 2280-ics20-api-improvements.md │ └── summary.md ├── v1.0.0-rc.1 │ ├── breaking-changes │ │ └── ibc-relayer-cli │ │ │ ├── 2376-refactor-tx-raw-commands.md │ │ │ └── 2410-tx-cli-flags.md │ ├── bug-fixes │ │ ├── ibc-relayer-cli │ │ │ ├── 1132-fixed-query-channels-filter.md │ │ │ └── 2405-fixed-ft-transfer-receiver-flag.md │ │ ├── ibc-relayer │ │ │ ├── 2411-retry-snerr.md │ │ │ └── 2444-abci-info-data.md │ │ └── ibc │ │ │ ├── 2386-fix-ics20-ds-serde.md │ │ │ ├── 2387-fix-get_channel_escrow_address.md │ │ │ ├── 2424-add-write-acknowledgement-packet-process-and-store.md │ │ │ └── 2428-fix-handle-process-write-acknowledgement-incorrect-store-type.md │ ├── features │ │ └── ibc-relayer-cli │ │ │ ├── 2310-new-optional-flags-query-connections.md │ │ │ ├── 2311-new-optional-flag-upgrade-clients.md │ │ │ └── 2429-show-counterparty.md │ ├── improvements │ │ ├── 2455-tendermint-0.23.8.md │ │ ├── guide │ │ │ ├── 1935-global-options-doc.md │ │ │ └── 2189-cleanup-dev-env-from-hermes-guide.md │ │ ├── ibc-proto │ │ │ └── 2403-update-protobufs.md │ │ ├── ibc-relayer-cli │ │ │ ├── 2375-keys-add-overwrite.md │ │ │ ├── 2431-colored_output.md │ │ │ └── 2435-gas-multiplier.md │ │ ├── ibc-telemetry │ │ │ ├── 2381-converted-wallet-balance-metric-to-f64.md │ │ │ └── 2408-better-metrics-naming-and-description.md │ │ └── ibc │ │ │ ├── 2356-adr011.md │ │ │ └── 2447-move-relayer-specific-module-code.md │ └── summary.md ├── v1.0.0-rc.2 │ ├── bug-fixes │ │ ├── ibc-relayer-cli │ │ │ └── 2451-fix-oldest-sequence-timeout.md │ │ └── ibc-relayer │ │ │ ├── 2433-wait-consensus-height.md │ │ │ └── 2477-prevent-oversized-tx-batch.md │ ├── features │ │ └── ibc-relayer │ │ │ └── 2380-ipv6.md │ ├── improvements │ │ ├── guide │ │ │ ├── 2459-2459.md │ │ │ └── 2466-clean-raw-guide.md │ │ └── ibc │ │ │ └── 2481-remove-deserialize-ibcevent │ └── summary.md ├── v1.0.0 │ ├── breaking-changes │ │ ├── ibc-telemetry │ │ │ └── 2479-refactored-metric-names.md │ │ └── ibc │ │ │ └── 2542-remove-ibcevent-height.md │ ├── bug-fixes │ │ └── ibc │ │ │ └── 2534-fix-timeout-on-close.md │ ├── features │ │ └── ibc-relayer │ │ │ └── 2479-metric_discovery.md │ ├── improvements │ │ └── ibc-relayer │ │ │ └── 2548-runtime-light-client.md │ └── summary.md └── v1.1.0 │ ├── breaking-changes │ ├── 2677-tendermint-v0.25.0.md │ └── 2710-ibc-relayer-types.md │ ├── bug-fixes │ ├── 2667-fix-github-workflow-paths.md │ ├── 2750-update-config-documentation.md │ └── ibc-relayer │ │ ├── 2595-modify-default-max-tx-size.md │ │ ├── 2670-clear-packets-ordered.md │ │ └── 2739-fix-decode-header.md │ ├── features │ ├── ibc-chain-registry │ │ └── 2187-auto-config.md │ ├── ibc-integration-test │ │ └── 2442-evmos-integration-tests.md │ ├── ibc-relayer-cli │ │ ├── 2187-auto-config.md │ │ ├── 2453-optional-height-flag-for-packet-recv.md │ │ └── 2714-fee-transfer-command.md │ └── ibc-relayer │ │ ├── 2187-auto-config.md │ │ └── 2566-extension-options.md │ ├── improvements │ ├── 2667-remove-proto-crates.md │ ├── 2754-split-gm-out-of-hermes.md │ ├── 2770-bump-ibc-proto.md │ ├── guide │ │ ├── 2605-integration-mdbook-templates.md │ │ └── update-gm.toml-template.md │ ├── ibc-relayer-cli │ │ ├── 1538-clean-logs.md │ │ ├── 2653-clear-packets-log.md │ │ └── 2726-new-keys-balance-flag.md │ ├── ibc-relayer-types │ │ └── 2603-less-clone-happy-apis.md │ └── ibc-relayer │ │ ├── 2484-no-new-block-conn-chan.md │ │ ├── 2487-gas-estimation-corner-cases.md │ │ ├── 2532-compat-0.46.md │ │ └── 2575-tx-size-encoding.md │ └── summary.md ├── .dockerignore ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.md │ ├── feature-request.md │ ├── question.md │ ├── release-template.md │ └── rust-update.md ├── PULL_REQUEST_TEMPLATE.md ├── actions-rs │ └── grcov.yml ├── dependabot.yml ├── markdown-link-check.json └── workflows │ ├── audit.yaml │ ├── cargo-doc.yaml │ ├── guide-templates.yaml │ ├── guide.yml │ ├── integration.yaml │ ├── markdown-link-check.yml │ ├── no-std.yaml │ ├── release.yml │ ├── rust.yml │ ├── scripts.yaml │ └── specs.yml ├── .gitignore ├── .rustfmt.toml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── UPGRADING.md ├── ci ├── .gitignore ├── no-std-check │ ├── .gitignore │ ├── Cargo.lock │ ├── Cargo.toml │ ├── Makefile │ ├── README.md │ └── src │ │ └── lib.rs └── release │ └── hermes.Dockerfile ├── clippy.toml ├── codecov.yml ├── config.toml ├── crates ├── chain-registry │ ├── Cargo.toml │ └── src │ │ ├── asset_list.rs │ │ ├── chain.rs │ │ ├── constants.rs │ │ ├── error.rs │ │ ├── fetchable.rs │ │ ├── formatter.rs │ │ ├── lib.rs │ │ ├── paths.rs │ │ └── querier.rs ├── relayer-cli │ ├── .gitignore │ ├── Cargo.toml │ ├── README.md │ ├── build.rs │ ├── example │ ├── src │ │ ├── application.rs │ │ ├── bin │ │ │ └── hermes │ │ │ │ └── main.rs │ │ ├── chain_registry.rs │ │ ├── cli_utils.rs │ │ ├── commands.rs │ │ ├── commands │ │ │ ├── clear.rs │ │ │ ├── completions.rs │ │ │ ├── config.rs │ │ │ ├── config │ │ │ │ ├── auto.rs │ │ │ │ └── validate.rs │ │ │ ├── create.rs │ │ │ ├── create │ │ │ │ ├── channel.rs │ │ │ │ └── connection.rs │ │ │ ├── fee.rs │ │ │ ├── fee │ │ │ │ ├── register_counterparty_payee.rs │ │ │ │ ├── register_payee.rs │ │ │ │ └── transfer.rs │ │ │ ├── health.rs │ │ │ ├── keys.rs │ │ │ ├── keys │ │ │ │ ├── add.rs │ │ │ │ ├── balance.rs │ │ │ │ ├── delete.rs │ │ │ │ └── list.rs │ │ │ ├── listen.rs │ │ │ ├── misbehaviour.rs │ │ │ ├── query.rs │ │ │ ├── query │ │ │ │ ├── channel.rs │ │ │ │ ├── channel_client.rs │ │ │ │ ├── channel_ends.rs │ │ │ │ ├── channels.rs │ │ │ │ ├── client.rs │ │ │ │ ├── clients.rs │ │ │ │ ├── connection.rs │ │ │ │ ├── connections.rs │ │ │ │ ├── packet.rs │ │ │ │ ├── packet │ │ │ │ │ ├── ack.rs │ │ │ │ │ ├── acks.rs │ │ │ │ │ ├── commitment.rs │ │ │ │ │ ├── commitments.rs │ │ │ │ │ ├── pending.rs │ │ │ │ │ ├── pending_acks.rs │ │ │ │ │ └── pending_sends.rs │ │ │ │ ├── transfer.rs │ │ │ │ ├── transfer │ │ │ │ │ └── denom_trace.rs │ │ │ │ ├── tx.rs │ │ │ │ └── tx │ │ │ │ │ └── events.rs │ │ │ ├── start.rs │ │ │ ├── tx.rs │ │ │ ├── tx │ │ │ │ ├── channel.rs │ │ │ │ ├── client.rs │ │ │ │ ├── connection.rs │ │ │ │ ├── packet.rs │ │ │ │ ├── transfer.rs │ │ │ │ └── upgrade.rs │ │ │ ├── update.rs │ │ │ ├── upgrade.rs │ │ │ └── version.rs │ │ ├── components.rs │ │ ├── conclude.rs │ │ ├── config.rs │ │ ├── entry.rs │ │ ├── error.rs │ │ ├── lib.rs │ │ └── prelude.rs │ └── tests │ │ ├── acceptance.rs │ │ └── fixtures │ │ └── two_chains.toml ├── relayer-rest │ ├── Cargo.toml │ ├── README.md │ ├── src │ │ ├── config.rs │ │ ├── handle.rs │ │ ├── lib.rs │ │ └── server.rs │ └── tests │ │ └── mock.rs ├── relayer-types │ ├── Cargo.toml │ ├── README.md │ ├── src │ │ ├── applications │ │ │ ├── ics29_fee │ │ │ │ ├── error.rs │ │ │ │ ├── events.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── msgs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── pay_packet.rs │ │ │ │ │ ├── pay_packet_async.rs │ │ │ │ │ └── register_payee.rs │ │ │ │ └── packet_fee.rs │ │ │ ├── mod.rs │ │ │ └── transfer │ │ │ │ ├── acknowledgement.rs │ │ │ │ ├── amount.rs │ │ │ │ ├── coin.rs │ │ │ │ ├── denom.rs │ │ │ │ ├── error.rs │ │ │ │ ├── events.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── msgs.rs │ │ │ │ ├── msgs │ │ │ │ └── transfer.rs │ │ │ │ └── packet.rs │ │ ├── bigint.rs │ │ ├── clients │ │ │ ├── ics07_tendermint │ │ │ │ ├── client_state.rs │ │ │ │ ├── consensus_state.rs │ │ │ │ ├── error.rs │ │ │ │ ├── header.rs │ │ │ │ ├── misbehaviour.rs │ │ │ │ └── mod.rs │ │ │ └── mod.rs │ │ ├── core │ │ │ ├── ics02_client │ │ │ │ ├── client_state.rs │ │ │ │ ├── client_type.rs │ │ │ │ ├── consensus_state.rs │ │ │ │ ├── error.rs │ │ │ │ ├── events.rs │ │ │ │ ├── header.rs │ │ │ │ ├── height.rs │ │ │ │ ├── misbehaviour.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── msgs.rs │ │ │ │ ├── msgs │ │ │ │ │ ├── create_client.rs │ │ │ │ │ ├── misbehaviour.rs │ │ │ │ │ ├── update_client.rs │ │ │ │ │ └── upgrade_client.rs │ │ │ │ └── trust_threshold.rs │ │ │ ├── ics03_connection │ │ │ │ ├── connection.rs │ │ │ │ ├── error.rs │ │ │ │ ├── events.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── msgs.rs │ │ │ │ ├── msgs │ │ │ │ │ ├── conn_open_ack.rs │ │ │ │ │ ├── conn_open_confirm.rs │ │ │ │ │ ├── conn_open_init.rs │ │ │ │ │ └── conn_open_try.rs │ │ │ │ └── version.rs │ │ │ ├── ics04_channel │ │ │ │ ├── channel.rs │ │ │ │ ├── commitment.rs │ │ │ │ ├── error.rs │ │ │ │ ├── events.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── msgs.rs │ │ │ │ ├── msgs │ │ │ │ │ ├── acknowledgement.rs │ │ │ │ │ ├── chan_close_confirm.rs │ │ │ │ │ ├── chan_close_init.rs │ │ │ │ │ ├── chan_open_ack.rs │ │ │ │ │ ├── chan_open_confirm.rs │ │ │ │ │ ├── chan_open_init.rs │ │ │ │ │ ├── chan_open_try.rs │ │ │ │ │ ├── recv_packet.rs │ │ │ │ │ ├── timeout.rs │ │ │ │ │ └── timeout_on_close.rs │ │ │ │ ├── packet.rs │ │ │ │ ├── packet_id.rs │ │ │ │ ├── timeout.rs │ │ │ │ └── version.rs │ │ │ ├── ics23_commitment │ │ │ │ ├── commitment.rs │ │ │ │ ├── error.rs │ │ │ │ ├── merkle.rs │ │ │ │ ├── mock.rs │ │ │ │ ├── mod.rs │ │ │ │ └── specs.rs │ │ │ ├── ics24_host │ │ │ │ ├── error.rs │ │ │ │ ├── identifier.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── path.rs │ │ │ │ └── validate.rs │ │ │ ├── ics26_routing │ │ │ │ ├── error.rs │ │ │ │ ├── mod.rs │ │ │ │ └── msgs.rs │ │ │ └── mod.rs │ │ ├── dynamic_typing.rs │ │ ├── events.rs │ │ ├── handler.rs │ │ ├── keys.rs │ │ ├── lib.rs │ │ ├── macros.rs │ │ ├── mock │ │ │ ├── client_state.rs │ │ │ ├── consensus_state.rs │ │ │ ├── header.rs │ │ │ ├── host.rs │ │ │ ├── misbehaviour.rs │ │ │ └── mod.rs │ │ ├── prelude.rs │ │ ├── proofs.rs │ │ ├── relayer │ │ │ ├── ics18_relayer │ │ │ │ ├── context.rs │ │ │ │ ├── error.rs │ │ │ │ └── mod.rs │ │ │ └── mod.rs │ │ ├── serializers.rs │ │ ├── signer.rs │ │ ├── test.rs │ │ ├── test_utils.rs │ │ ├── timestamp.rs │ │ ├── tx_msg.rs │ │ └── utils │ │ │ ├── mod.rs │ │ │ └── pretty.rs │ └── tests │ │ └── support │ │ ├── query │ │ └── serialization │ │ │ ├── client_state.json │ │ │ ├── client_state_proof.json │ │ │ ├── consensus_state.json │ │ │ └── consensus_state_proof.json │ │ └── signed_header.json ├── relayer │ ├── Cargo.toml │ ├── README.md │ ├── src │ │ ├── account.rs │ │ ├── cache.rs │ │ ├── chain.rs │ │ ├── chain │ │ │ ├── client.rs │ │ │ ├── cosmos.rs │ │ │ ├── cosmos │ │ │ │ ├── batch.rs │ │ │ │ ├── client.rs │ │ │ │ ├── compatibility.rs │ │ │ │ ├── encode.rs │ │ │ │ ├── estimate.rs │ │ │ │ ├── fee.rs │ │ │ │ ├── gas.rs │ │ │ │ ├── query.rs │ │ │ │ ├── query │ │ │ │ │ ├── account.rs │ │ │ │ │ ├── balance.rs │ │ │ │ │ ├── denom_trace.rs │ │ │ │ │ ├── fee.rs │ │ │ │ │ ├── status.rs │ │ │ │ │ └── tx.rs │ │ │ │ ├── retry.rs │ │ │ │ ├── simulate.rs │ │ │ │ ├── tx.rs │ │ │ │ ├── types │ │ │ │ │ ├── account.rs │ │ │ │ │ ├── config.rs │ │ │ │ │ ├── events │ │ │ │ │ │ ├── channel.rs │ │ │ │ │ │ ├── client.rs │ │ │ │ │ │ ├── fee.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── gas.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── tx.rs │ │ │ │ ├── version.rs │ │ │ │ └── wait.rs │ │ │ ├── counterparty.rs │ │ │ ├── endpoint.rs │ │ │ ├── handle.rs │ │ │ ├── handle │ │ │ │ ├── base.rs │ │ │ │ ├── cache.rs │ │ │ │ └── counting.rs │ │ │ ├── mock.rs │ │ │ ├── requests.rs │ │ │ ├── runtime.rs │ │ │ └── tracking.rs │ │ ├── channel.rs │ │ ├── channel │ │ │ ├── error.rs │ │ │ └── version.rs │ │ ├── client_state.rs │ │ ├── config.rs │ │ ├── config │ │ │ ├── error.rs │ │ │ ├── filter.rs │ │ │ ├── gas_multiplier.rs │ │ │ ├── proof_specs.rs │ │ │ └── types.rs │ │ ├── connection.rs │ │ ├── connection │ │ │ └── error.rs │ │ ├── consensus_state.rs │ │ ├── denom.rs │ │ ├── error.rs │ │ ├── event.rs │ │ ├── event │ │ │ ├── bus.rs │ │ │ ├── monitor.rs │ │ │ ├── monitor │ │ │ │ └── error.rs │ │ │ └── rpc.rs │ │ ├── extension_options.rs │ │ ├── foreign_client.rs │ │ ├── keyring.rs │ │ ├── keyring │ │ │ ├── errors.rs │ │ │ └── pub_key.rs │ │ ├── lib.rs │ │ ├── light_client.rs │ │ ├── light_client │ │ │ └── tendermint.rs │ │ ├── link.rs │ │ ├── link │ │ │ ├── cli.rs │ │ │ ├── error.rs │ │ │ ├── operational_data.rs │ │ │ ├── packet_events.rs │ │ │ ├── pending.rs │ │ │ ├── relay_path.rs │ │ │ ├── relay_sender.rs │ │ │ ├── relay_summary.rs │ │ │ └── tx_hashes.rs │ │ ├── macros.rs │ │ ├── misbehaviour.rs │ │ ├── object.rs │ │ ├── path.rs │ │ ├── registry.rs │ │ ├── rest.rs │ │ ├── rest │ │ │ ├── error.rs │ │ │ └── request.rs │ │ ├── sdk_error.rs │ │ ├── spawn.rs │ │ ├── supervisor.rs │ │ ├── supervisor │ │ │ ├── client_state_filter.rs │ │ │ ├── cmd.rs │ │ │ ├── dump_state.rs │ │ │ ├── error.rs │ │ │ ├── scan.rs │ │ │ └── spawn.rs │ │ ├── telemetry.rs │ │ ├── transfer.rs │ │ ├── upgrade_chain.rs │ │ ├── util.rs │ │ ├── util │ │ │ ├── block_on.rs │ │ │ ├── diff.rs │ │ │ ├── iter.rs │ │ │ ├── lock.rs │ │ │ ├── pretty.rs │ │ │ ├── queue.rs │ │ │ ├── retry.rs │ │ │ ├── stream.rs │ │ │ └── task.rs │ │ ├── worker.rs │ │ └── worker │ │ │ ├── channel.rs │ │ │ ├── client.rs │ │ │ ├── cmd.rs │ │ │ ├── connection.rs │ │ │ ├── error.rs │ │ │ ├── handle.rs │ │ │ ├── map.rs │ │ │ ├── packet.rs │ │ │ ├── retry_strategy.rs │ │ │ └── wallet.rs │ └── tests │ │ └── config │ │ └── fixtures │ │ ├── relayer-seed.json │ │ └── relayer_conf_example.toml └── telemetry │ ├── Cargo.toml │ ├── README.md │ └── src │ ├── lib.rs │ ├── path_identifier.rs │ ├── server.rs │ └── state.rs ├── docs ├── architecture │ ├── README.md │ ├── adr-001-repo.md │ ├── adr-002-ibc-relayer.md │ ├── adr-003-handler-implementation.md │ ├── adr-004-relayer-domain-decomposition.md │ ├── adr-005-relayer-v0-implementation.md │ ├── adr-006-hermes-v0.2-usecases.md │ ├── adr-007-error.md │ ├── adr-008-ics20-implementation.md │ ├── adr-009-chain-endpoint-handle-standardization.md │ ├── adr-010-unified-cli-arguments-hermes.md │ ├── adr-011-light-client-crates-extraction.md │ ├── adr-template.md │ ├── architecture.md │ └── assets │ │ ├── IBC_client_heights.jpeg │ │ ├── IBC_conn_handshake_relay.jpeg │ │ ├── IBC_relayer.jpeg │ │ ├── IBC_relayer_threads.jpeg │ │ ├── ibc-rs-layout.png │ │ ├── relayer-v0-arch.jpg │ │ └── relayer-v0-link.jpeg ├── disclosure-log.md └── spec │ ├── README.md │ ├── connection-handshake │ ├── CHANGELOG.md │ ├── L1_2.md │ ├── L2-tla │ │ ├── Environment.tla │ │ ├── ICS3Module.tla │ │ ├── ICS3Types.tla │ │ ├── ICS3Utils.tla │ │ └── README.md │ └── README.md │ ├── relayer │ ├── Definitions.md │ ├── Packets.md │ └── Relayer.md │ └── tla │ ├── client │ ├── Chain.tla │ ├── ICS02ClientHandlers.tla │ ├── ICS02Definitions.tla │ ├── ICS02SingleChainEnvironment.tla │ ├── ICS02TwoChainsEnvironment.tla │ ├── MC_SingleChain.tla │ ├── MC_TwoChains.tla │ └── README.md │ ├── fungible-token-transfer │ ├── Bank.tla │ ├── Chain.tla │ ├── IBCTokenTransfer.cfg │ ├── IBCTokenTransfer.tla │ ├── IBCTokenTransferDefinitions.tla │ ├── ICS04PacketHandlers.tla │ ├── ICS20FungibleTokenTransferHandlers.tla │ ├── MC_IBCTokenTransfer.tla │ └── README.md │ ├── ibc-core │ ├── Chain.tla │ ├── IBCCore.cfg │ ├── IBCCore.tla │ ├── IBCCoreDefinitions.tla │ ├── ICS02ClientHandlers.tla │ ├── ICS03ConnectionHandlers.tla │ ├── ICS04ChannelHandlers.tla │ ├── ICS04PacketHandlers.tla │ ├── ICS18Relayer.tla │ ├── MC_IBCCore.tla │ └── README.md │ └── packet-delay │ ├── Chain.tla │ ├── IBCPacketDelay.cfg │ ├── IBCPacketDelay.tla │ ├── IBCPacketDelayDefinitions.tla │ ├── ICS04PacketHandlers.tla │ ├── MC_IBCPacketDelay.tla │ └── README.md ├── e2e ├── README.md ├── e2e │ ├── __init__.py │ ├── channel.py │ ├── client.py │ ├── cmd.py │ ├── common.py │ ├── connection.py │ ├── packet.py │ └── relayer.py ├── pyrightconfig.json └── run.py ├── flake.lock ├── flake.nix ├── guide ├── .gitignore ├── README.md ├── book.toml ├── mermaid-init.js ├── mermaid.min.js ├── src │ ├── CNAME │ ├── SUMMARY.md │ ├── advanced │ │ ├── features.md │ │ ├── index.md │ │ └── troubleshooting │ │ │ ├── cross-comp-config.md │ │ │ ├── help-command.md │ │ │ ├── index.md │ │ │ ├── inspect.md │ │ │ ├── log-level.md │ │ │ ├── patch-gaia.md │ │ │ └── profiling.md │ ├── assets │ │ ├── docker-compose.yaml │ │ ├── grafana_template.json │ │ └── prometheus.yaml │ ├── documentation │ │ ├── commands │ │ │ ├── config.md │ │ │ ├── global.md │ │ │ ├── index.md │ │ │ ├── keys │ │ │ │ └── index.md │ │ │ ├── listen │ │ │ │ └── index.md │ │ │ ├── misbehaviour │ │ │ │ └── index.md │ │ │ ├── path-setup │ │ │ │ ├── channels.md │ │ │ │ ├── clients.md │ │ │ │ ├── connections.md │ │ │ │ └── index.md │ │ │ ├── queries │ │ │ │ ├── channel.md │ │ │ │ ├── client.md │ │ │ │ ├── connection.md │ │ │ │ ├── index.md │ │ │ │ ├── packet.md │ │ │ │ ├── transfer.md │ │ │ │ └── tx.md │ │ │ ├── relaying │ │ │ │ ├── clear.md │ │ │ │ ├── handshakes.md │ │ │ │ ├── index.md │ │ │ │ └── packets.md │ │ │ ├── tx │ │ │ │ ├── channel-close.md │ │ │ │ ├── channel-open.md │ │ │ │ ├── connection.md │ │ │ │ ├── index.md │ │ │ │ ├── packet.md │ │ │ │ └── upgrade.md │ │ │ └── upgrade │ │ │ │ ├── index.md │ │ │ │ └── test.md │ │ ├── configuration │ │ │ ├── configure-hermes.md │ │ │ ├── description.md │ │ │ └── index.md │ │ ├── example-config.md │ │ ├── index.md │ │ ├── rest-api.md │ │ └── telemetry │ │ │ ├── index.md │ │ │ ├── integration.md │ │ │ └── operators.md │ ├── glossary.md │ ├── images │ │ └── grafana.png │ ├── index.md │ ├── quick-start │ │ ├── index.md │ │ ├── installation.md │ │ └── pre-requisites.md │ ├── templates │ │ ├── commands │ │ │ ├── gaia │ │ │ │ ├── query_balances.md │ │ │ │ └── version.md │ │ │ ├── git │ │ │ │ ├── clone_ibc_rs.md │ │ │ │ └── gaia.md │ │ │ ├── gm │ │ │ │ ├── hermes_cc.md │ │ │ │ ├── hermes_cc_exec.md │ │ │ │ ├── hermes_config.md │ │ │ │ ├── hermes_keys.md │ │ │ │ ├── keys.md │ │ │ │ ├── reset.md │ │ │ │ ├── rm.md │ │ │ │ ├── start.md │ │ │ │ ├── status.md │ │ │ │ └── stop.md │ │ │ └── hermes │ │ │ │ ├── clear │ │ │ │ └── packets_1.md │ │ │ │ ├── clear_1.md │ │ │ │ ├── completions_1.md │ │ │ │ ├── config │ │ │ │ ├── auto_1.md │ │ │ │ └── validate_1.md │ │ │ │ ├── config_1.md │ │ │ │ ├── create │ │ │ │ ├── channel_1.md │ │ │ │ ├── channel_2.md │ │ │ │ ├── client_1.md │ │ │ │ ├── connection_1.md │ │ │ │ └── connection_2.md │ │ │ │ ├── create_1.md │ │ │ │ ├── fee │ │ │ │ ├── register-counterparty-payee_1.md │ │ │ │ ├── register-payee_1.md │ │ │ │ └── transfer_1.md │ │ │ │ ├── fee_1.md │ │ │ │ ├── health-check_1.md │ │ │ │ ├── help_1.md │ │ │ │ ├── keys │ │ │ │ ├── add_1.md │ │ │ │ ├── add_2.md │ │ │ │ ├── balance_1.md │ │ │ │ ├── delete_1.md │ │ │ │ ├── delete_2.md │ │ │ │ └── list_1.md │ │ │ │ ├── keys_1.md │ │ │ │ ├── listen_1.md │ │ │ │ ├── misbehaviour_1.md │ │ │ │ ├── query │ │ │ │ ├── channel │ │ │ │ │ ├── client_1.md │ │ │ │ │ ├── end_1.md │ │ │ │ │ └── ends_1.md │ │ │ │ ├── channel_1.md │ │ │ │ ├── channels_1.md │ │ │ │ ├── client │ │ │ │ │ ├── connections_1.md │ │ │ │ │ ├── consensus_1.md │ │ │ │ │ ├── header_1.md │ │ │ │ │ └── state_1.md │ │ │ │ ├── client_1.md │ │ │ │ ├── clients_1.md │ │ │ │ ├── connection │ │ │ │ │ ├── channels_1.md │ │ │ │ │ └── end_1.md │ │ │ │ ├── connection_1.md │ │ │ │ ├── connections_1.md │ │ │ │ ├── packet │ │ │ │ │ ├── ack_1.md │ │ │ │ │ ├── acks_1.md │ │ │ │ │ ├── commitment_1.md │ │ │ │ │ ├── commitments_1.md │ │ │ │ │ ├── pending-acks_1.md │ │ │ │ │ ├── pending-sends_1.md │ │ │ │ │ └── pending_1.md │ │ │ │ ├── packet_1.md │ │ │ │ ├── transfer │ │ │ │ │ └── denom-trace_1.md │ │ │ │ ├── transfer_1.md │ │ │ │ ├── tx │ │ │ │ │ └── events_1.md │ │ │ │ └── tx_1.md │ │ │ │ ├── query_1.md │ │ │ │ ├── start_1.md │ │ │ │ ├── tx │ │ │ │ ├── chan-close-confirm_1.md │ │ │ │ ├── chan-close-init_1.md │ │ │ │ ├── chan-open-ack_1.md │ │ │ │ ├── chan-open-confirm_1.md │ │ │ │ ├── chan-open-init_1.md │ │ │ │ ├── chan-open-try_1.md │ │ │ │ ├── conn-ack_1.md │ │ │ │ ├── conn-confirm_1.md │ │ │ │ ├── conn-init_1.md │ │ │ │ ├── conn-try_1.md │ │ │ │ ├── ft-transfer_1.md │ │ │ │ ├── packet-ack_1.md │ │ │ │ ├── packet-recv_1.md │ │ │ │ └── upgrade-chain_1.md │ │ │ │ ├── tx_1.md │ │ │ │ ├── update │ │ │ │ └── client_1.md │ │ │ │ ├── update_1.md │ │ │ │ ├── upgrade │ │ │ │ ├── client_1.md │ │ │ │ └── clients_1.md │ │ │ │ ├── upgrade_1.md │ │ │ │ └── version_1.md │ │ ├── files │ │ │ ├── gm │ │ │ │ ├── default_gm.toml │ │ │ │ └── more-chains │ │ │ │ │ └── gm.toml │ │ │ └── hermes │ │ │ │ ├── local-chains │ │ │ │ └── config.toml │ │ │ │ ├── more-chains │ │ │ │ ├── config_with_filters.toml │ │ │ │ ├── config_without_filters.toml │ │ │ │ └── hermes_second_instance.toml │ │ │ │ └── production │ │ │ │ ├── config.toml │ │ │ │ ├── default_gas_cosmoshub.toml │ │ │ │ └── default_gas_osmosis.toml │ │ ├── help_templates │ │ │ ├── clear.md │ │ │ ├── clear │ │ │ │ └── packets.md │ │ │ ├── completions.md │ │ │ ├── config.md │ │ │ ├── config │ │ │ │ ├── auto.md │ │ │ │ └── validate.md │ │ │ ├── create.md │ │ │ ├── create │ │ │ │ ├── channel.md │ │ │ │ ├── client.md │ │ │ │ └── connection.md │ │ │ ├── fee.md │ │ │ ├── fee │ │ │ │ ├── register-counterparty-payee.md │ │ │ │ ├── register-payee.md │ │ │ │ └── transfer.md │ │ │ ├── health-check.md │ │ │ ├── help.md │ │ │ ├── keys.md │ │ │ ├── keys │ │ │ │ ├── add.md │ │ │ │ ├── balance.md │ │ │ │ ├── delete.md │ │ │ │ └── list.md │ │ │ ├── listen.md │ │ │ ├── misbehaviour.md │ │ │ ├── query.md │ │ │ ├── query │ │ │ │ ├── channel.md │ │ │ │ ├── channel │ │ │ │ │ ├── client.md │ │ │ │ │ ├── end.md │ │ │ │ │ └── ends.md │ │ │ │ ├── channels.md │ │ │ │ ├── client.md │ │ │ │ ├── client │ │ │ │ │ ├── connections.md │ │ │ │ │ ├── consensus.md │ │ │ │ │ ├── header.md │ │ │ │ │ └── state.md │ │ │ │ ├── clients.md │ │ │ │ ├── connection.md │ │ │ │ ├── connection │ │ │ │ │ ├── channels.md │ │ │ │ │ └── end.md │ │ │ │ ├── connections.md │ │ │ │ ├── packet.md │ │ │ │ ├── packet │ │ │ │ │ ├── ack.md │ │ │ │ │ ├── acks.md │ │ │ │ │ ├── commitment.md │ │ │ │ │ ├── commitments.md │ │ │ │ │ ├── pending-acks.md │ │ │ │ │ ├── pending-sends.md │ │ │ │ │ └── pending.md │ │ │ │ ├── transfer.md │ │ │ │ ├── transfer │ │ │ │ │ └── denom-trace.md │ │ │ │ ├── tx.md │ │ │ │ └── tx │ │ │ │ │ └── events.md │ │ │ ├── start.md │ │ │ ├── tx.md │ │ │ ├── tx │ │ │ │ ├── chan-close-confirm.md │ │ │ │ ├── chan-close-init.md │ │ │ │ ├── chan-open-ack.md │ │ │ │ ├── chan-open-confirm.md │ │ │ │ ├── chan-open-init.md │ │ │ │ ├── chan-open-try.md │ │ │ │ ├── conn-ack.md │ │ │ │ ├── conn-confirm.md │ │ │ │ ├── conn-init.md │ │ │ │ ├── conn-try.md │ │ │ │ ├── ft-transfer.md │ │ │ │ ├── packet-ack.md │ │ │ │ ├── packet-recv.md │ │ │ │ └── upgrade-chain.md │ │ │ ├── update.md │ │ │ ├── update │ │ │ │ └── client.md │ │ │ ├── upgrade.md │ │ │ ├── upgrade │ │ │ │ ├── client.md │ │ │ │ └── clients.md │ │ │ └── version.md │ │ └── version.md │ └── tutorials │ │ ├── index.md │ │ ├── local-chains │ │ ├── add-a-new-relay-path.md │ │ ├── index.md │ │ ├── start-local-chains.md │ │ └── start-relaying.md │ │ ├── more-chains │ │ ├── build-the-topology.md │ │ ├── concurrent-instances.md │ │ ├── index.md │ │ ├── start-local-chains.md │ │ └── start-relaying.md │ │ ├── pre-requisites │ │ ├── gaia.md │ │ ├── gaiad-manager.md │ │ └── index.md │ │ └── production │ │ ├── index.md │ │ ├── setup-grafana.md │ │ ├── setup-hermes.md │ │ └── start-relaying.md └── theme │ └── css │ ├── chrome.css │ └── variables.css ├── scripts ├── auto_gen_templates.sh ├── dev-env ├── init-hermes ├── one-chain ├── release.sh └── setup-chains └── tools ├── check-guide ├── Cargo.toml └── src │ └── main.rs ├── integration-test ├── Cargo.toml ├── spec │ ├── .gitignore │ ├── MC_Transfer.cfg │ ├── MC_Transfer.tla │ ├── README.md │ ├── Transfer.tla │ └── Transfer_typedefs.tla └── src │ ├── bin │ ├── test_setup_with_binary_channel.rs │ ├── test_setup_with_fee_enabled_binary_channel.rs │ └── test_setup_with_ternary_channel.rs │ ├── lib.rs │ ├── mbt │ ├── README.md │ ├── handlers.rs │ ├── itf.rs │ ├── mod.rs │ ├── state.rs │ ├── transfer.rs │ └── utils.rs │ └── tests │ ├── clear_packet.rs │ ├── client_expiration.rs │ ├── client_refresh.rs │ ├── client_settings.rs │ ├── connection_delay.rs │ ├── denom_trace.rs │ ├── error_events.rs │ ├── example.rs │ ├── execute_schedule.rs │ ├── fee │ ├── auto_forward_relayer.rs │ ├── forward_relayer.rs │ ├── mod.rs │ ├── no_forward_relayer.rs │ ├── non_fee_channel.rs │ ├── pay_fee_async.rs │ ├── register_payee.rs │ └── timeout_fee.rs │ ├── handshake_on_start.rs │ ├── ica.rs │ ├── manual │ ├── mod.rs │ └── simulation.rs │ ├── memo.rs │ ├── mod.rs │ ├── ordered_channel.rs │ ├── ordered_channel_clear.rs │ ├── python.rs │ ├── query_packet.rs │ ├── supervisor.rs │ ├── tendermint │ ├── mod.rs │ └── sequential.rs │ ├── ternary_transfer.rs │ └── transfer.rs └── test-framework ├── .gitignore ├── Cargo.toml ├── README.md └── src ├── bootstrap ├── binary │ ├── chain.rs │ ├── channel.rs │ ├── connection.rs │ └── mod.rs ├── init.rs ├── mod.rs ├── nary │ ├── chain.rs │ ├── channel.rs │ ├── connection.rs │ └── mod.rs └── single.rs ├── chain ├── builder.rs ├── chain_type.rs ├── cli │ ├── bootstrap.rs │ ├── ica.rs │ ├── mod.rs │ ├── query.rs │ └── transfer.rs ├── config.rs ├── driver.rs ├── exec.rs ├── ext │ ├── bootstrap.rs │ ├── fee.rs │ ├── ica.rs │ ├── mod.rs │ └── transfer.rs ├── mod.rs ├── tagged.rs └── version.rs ├── error.rs ├── framework ├── base.rs ├── binary │ ├── chain.rs │ ├── channel.rs │ ├── connection.rs │ ├── mod.rs │ └── node.rs ├── mod.rs ├── nary │ ├── chain.rs │ ├── channel.rs │ ├── connection.rs │ ├── mod.rs │ └── node.rs ├── overrides.rs └── supervisor.rs ├── ibc ├── denom.rs ├── mod.rs └── token.rs ├── lib.rs ├── prelude.rs ├── relayer ├── chain.rs ├── channel.rs ├── connection.rs ├── driver.rs ├── fee.rs ├── foreign_client.rs ├── mod.rs ├── refresh.rs ├── transfer.rs └── tx.rs ├── types ├── binary │ ├── chains.rs │ ├── channel.rs │ ├── client.rs │ ├── connection.rs │ ├── foreign_client.rs │ └── mod.rs ├── config.rs ├── env.rs ├── id.rs ├── mod.rs ├── nary │ ├── aliases.rs │ ├── chains.rs │ ├── channel.rs │ ├── connection.rs │ ├── foreign_client.rs │ └── mod.rs ├── process.rs ├── single │ ├── mod.rs │ └── node.rs ├── tagged │ ├── dual.rs │ ├── mod.rs │ └── mono.rs └── wallet.rs └── util ├── array.rs ├── assert.rs ├── file.rs ├── mod.rs ├── random.rs ├── retry.rs └── suspend.rs /.changelog/unreleased/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/.changelog/unreleased/.gitkeep -------------------------------------------------------------------------------- /.changelog/unreleased/bug-fixes/2799-remove-openssl-dep.md: -------------------------------------------------------------------------------- 1 | - Ensure Hermes uses Rustls instead of OpenSSL for TLS on all platforms 2 | ([#2799](https://github.com/informalsystems/ibc-rs/issues/2799)) -------------------------------------------------------------------------------- /.changelog/unreleased/improvements/ibc-relayer-cli/2810-dockerfile-update.md: -------------------------------------------------------------------------------- 1 | - Use rolling Ubuntu as base image in Hermes Docker image to 2 | reduce fix several vulnerabilities found in previous base image 3 | ([#2810](https://github.com/informalsystems/ibc-rs/issues/2810)) -------------------------------------------------------------------------------- /.changelog/v0.10.0/breaking-changes/1660-msrv-1.57.md: -------------------------------------------------------------------------------- 1 | - Update MSRV to Rust 1.57 2 | ([#1660](https://github.com/informalsystems/ibc-rs/issues/1660)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/breaking-changes/1665-tendermint-0.23.2.md: -------------------------------------------------------------------------------- 1 | - Pin tendermint-rs dependencies to =0.23.2 2 | ([#1665](https://github.com/informalsystems/ibc-rs/pull/1665)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/breaking-changes/ibc-relayer/1656-supervisor-spawn.md: -------------------------------------------------------------------------------- 1 | - Improve spawning of supervisor worker tasks ([#1656](https://github.com/informalsystems/ibc-rs/issues/1656)) 2 | - The `Supervisor` struct is removed. 3 | - Supervisor is now spawned using the `spawn_supervisor` function. 4 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/breaking-changes/ibc/1618-get-frozen-height.md: -------------------------------------------------------------------------------- 1 | - Add the `frozen_height()` method to the `ClientState` trait. (Includes breaking changes to the Tendermint 2 | `ClientState` API.) 3 | ([#1618](https://github.com/informalsystems/ibc-rs/issues/1618)) 4 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/breaking-changes/ibc/1665-remove-chrono.md: -------------------------------------------------------------------------------- 1 | - Remove `Timestamp` API that depended on the `chrono` crate: 2 | ([#1665](https://github.com/informalsystems/ibc-rs/pull/1665)): 3 | - `Timestamp::from_datetime`; use `From` 4 | - `Timestamp::as_datetime`, superseded by `Timestamp::into_datetime` 5 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/bug-fixes/1264-recover-acct-seq.md: -------------------------------------------------------------------------------- 1 | - Added a recovery mechanism to automatically retry or drop tx upon account 2 | sequence mismatch errors ([#1264](https://github.com/informalsystems/ibc-rs/issues/1264)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/bug-fixes/1634-update-unclog-instructions.md: -------------------------------------------------------------------------------- 1 | - Update `CONTRIBUTING.md` for latest version of unclog 2 | ([#1634](https://github.com/informalsystems/ibc-rs/issues/1634)) -------------------------------------------------------------------------------- /.changelog/v0.10.0/bug-fixes/ibc-relayer/1664-handle-expired-client.md: -------------------------------------------------------------------------------- 1 | - Handle expired client errors in workers ([#1543](https://github.com/informalsystems/ibc-rs/issues/1543)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/bug-fixes/ibc-relayer/1715-execute-schedule-after-packet-cmd.md: -------------------------------------------------------------------------------- 1 | - Perform `execute_schedule` after handling packet commands in packet worker ([#1715](https://github.com/informalsystems/ibc-rs/issues/1715)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/bug-fixes/ibc-relayer/1750-misbehavior-config.md: -------------------------------------------------------------------------------- 1 | - Do not spawn detect misbehavior task if it is disabled in config [#1750](https://github.com/informalsystems/ibc-rs/issues/1750) 2 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/bug-fixes/ibc/1573-delete-commitment-in-acknowledgePacket.md: -------------------------------------------------------------------------------- 1 | - Delete packet commitment instead of acknowledgement in acknowledgePacket 2 | [#1573](https://github.com/informalsystems/ibc-rs/issues/1573) -------------------------------------------------------------------------------- /.changelog/v0.10.0/bug-fixes/ibc/1649-fix-chan-open-ack-verify.md: -------------------------------------------------------------------------------- 1 | - Set the `counterparty_channel_id` correctly to fix ICS04 [`chanOpenAck` handler verification](https://github.com/cosmos/ibc-rs/blob/main/crates/ibc/src/core/ics04_channel/handler/chan_open_ack.rs) 2 | ([#1649](https://github.com/informalsystems/ibc-rs/issues/1649)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/bug-fixes/ibc/1697-assert-non-zero-trust-level.md: -------------------------------------------------------------------------------- 1 | - Add missing assertion for non-zero trust-level in Tendermint client initialization. 2 | ([#1697](https://github.com/informalsystems/ibc-rs/issues/1697)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/bug-fixes/ibc/1710-fix-frozen-height-proto-conv.md: -------------------------------------------------------------------------------- 1 | - Fix conversion to Protocol Buffers of `ClientState`'s `frozen_height` field. 2 | ([#1710](https://github.com/informalsystems/ibc-rs/issues/1710)) -------------------------------------------------------------------------------- /.changelog/v0.10.0/features/1410-dynamic-version.md: -------------------------------------------------------------------------------- 1 | - Support dynamic versions in channel open handshake & enable full support for 2 | ibc-go v2 ([#1410](https://github.com/informalsystems/ibc-rs/issues/1410)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/features/1550-ci-gaiav6.md: -------------------------------------------------------------------------------- 1 | - Extend CI test suite to include E2E tests using Gaia v6.0.0 [#1550](https://github.com/informalsystems/ibc-rs/issues/1550) 2 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/features/1606.md: -------------------------------------------------------------------------------- 1 | - Added the `extra_wallets` parameter to `gm` to create additional funded wallets. 2 | - Added the possibility of JSON output to `gm` by setting the environment variable `OUTPUT=json`. 3 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/features/1633-allow-fee-granters.md: -------------------------------------------------------------------------------- 1 | - Added support for fee granters through config file 2 | ([#1633](https://github.com/informalsystems/ibc-rs/issues/1633)) -------------------------------------------------------------------------------- /.changelog/v0.10.0/features/ibc-relayer/1561-config-proof-specs.md: -------------------------------------------------------------------------------- 1 | - Allow custom proof-specs in chain config 2 | ([#1561](https://github.com/informalsystems/ibc-rs/issues/1561)) -------------------------------------------------------------------------------- /.changelog/v0.10.0/features/ibc/1583-module-verification-ICS07.md: -------------------------------------------------------------------------------- 1 | - Implement proof verification for Tendermint client (ICS07). 2 | ([#1583](https://github.com/informalsystems/ibc-rs/pull/1583)) 3 | 4 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/improvements/ibc-relayer-cli/1063-event-monitor-on-demand.md: -------------------------------------------------------------------------------- 1 | - Improve performance of standalone commands by starting the event monitor on-demand 2 | ([#1063](https://github.com/informalsystems/ibc-rs/issues/1063)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/improvements/ibc-relayer-cli/1636.md: -------------------------------------------------------------------------------- 1 | - Increase the default for `max_gas` from `300_000` to `400_000` ([#1636](https://github.com/informalsystems/ibc-rs/pull/1636)) 2 | 3 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/improvements/ibc-relayer/1576-update-abscissa.md: -------------------------------------------------------------------------------- 1 | - Update to abscissa framework version 0.6.0-beta.1, adding support for 2 | `--help` flags in subcommands and improving help and usage printouts. 3 | The `--version` option of the `create channel` subcommand has been renamed 4 | to `--channel-version`, with the old name still supported as an alias. 5 | ([#1576](https://github.com/informalsystems/ibc-rs/pull/1576), 6 | [#1743](https://github.com/informalsystems/ibc-rs/pull/1743)) 7 | -------------------------------------------------------------------------------- /.changelog/v0.10.0/improvements/ibc/1665-remove-chrono.md: -------------------------------------------------------------------------------- 1 | - More conventional ad-hoc conversion methods on `Timestamp` 2 | ([#1665](https://github.com/informalsystems/ibc-rs/pull/1665)): 3 | - `Timestamp::nanoseconds` replaces `Timestamp::as_nanoseconds` 4 | - `Timestamp::into_datetime` substitutes `Timestamp::as_datetime` 5 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/1749-build-aarch64.md: -------------------------------------------------------------------------------- 1 | - Hermes builds for Linux on AArch64 are now released. 2 | ([#1749](https://github.com/informalsystems/ibc-rs/pull/1749)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/breaking-changes/1612-ibc-clock.md: -------------------------------------------------------------------------------- 1 | - Hide `ibc::Timestamp::now()` behind `clock` feature flag (#1612)[https://github.com/informalsystems/ibc-rs/issues/1612] 2 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/breaking-changes/1765-msrv-1.58.md: -------------------------------------------------------------------------------- 1 | - Update MSRV to Rust 1.58 ([#1765](https://github.com/informalsystems/ibc-rs/issues/1765)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/breaking-changes/1767-tendermint-rs-0.23.5.md: -------------------------------------------------------------------------------- 1 | - Update tendermint-rs dependencies to 0.23.5 2 | ([#1767](https://github.com/informalsystems/ibc-rs/issues/1767)) -------------------------------------------------------------------------------- /.changelog/v0.11.0/breaking-changes/1817-remove-filter-option.md: -------------------------------------------------------------------------------- 1 | - Remove `mode.packets.filter` config option and enable filtering by default 2 | ([#1817](https://github.com/informalsystems/ibc-rs/issues/1817)) -------------------------------------------------------------------------------- /.changelog/v0.11.0/breaking-changes/ibc-relayer/1662-configurable-upgrade-denom.md: -------------------------------------------------------------------------------- 1 | - Added a `denom` member to `upgrade_chain::UpgradePlanOptions`. 2 | ([#1662](https://github.com/informalsystems/ibc-rs/issues/1662)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/breaking-changes/ibc-relayer/1807-foreign-client-create-params.md: -------------------------------------------------------------------------------- 1 | - `foreign_client::CreateParams` struct added, passed as the parameter to 2 | `ForeignClient::build_create_client` and 3 | `ForeignClient::build_create_client_and_send`. 4 | ([#1807](https://github.com/informalsystems/ibc-rs/pull/1807)) 5 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/bug-fixes/ibc/1745-fix-consensus-proof-verification.md: -------------------------------------------------------------------------------- 1 | - Verify the client consensus proof against the client's consensus state root and not the host's state root 2 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/bug-fixes/ibc/1763-init-consensus-meta-on-client-create.md: -------------------------------------------------------------------------------- 1 | - Initialize consensus metadata on client creation 2 | ([#1763](https://github.com/informalsystems/ibc-rs/issues/1763)) -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/1536-fast-start.md: -------------------------------------------------------------------------------- 1 | - Improve startup time of the relayer 2 | - When scanning a chain with filtering enabled and an allow list, skip scanning all the clients and query the allowed channels directly. This results in much fewer queries and a faster start. 3 | - Add a `--full-scan` option to `hermes start` to opt out of the fast start mechanism and do a full scan. 4 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/1641-tendermint-0.23.4.md: -------------------------------------------------------------------------------- 1 | - Update `tendermint-rs` to v0.23.4 and harmonize the dependencies to use a single TLS stack. 2 | A system installation of OpenSSL is no longer required to build Hermes. 3 | ([#1641](https://github.com/informalsystems/ibc-rs/issues/1641)) -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/1687-remove-mock-sleep.md: -------------------------------------------------------------------------------- 1 | - Remove 1 second sleep in `generate_tm_block` during testing with mock context. [#1687](https://github.com/informalsystems/ibc-rs/issues/1687) 2 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/ibc-relayer-cli/1662-configurable-upgrade-denom.md: -------------------------------------------------------------------------------- 1 | - Make the deposit denomination configurable in `tx raw upgrade-chain` via a new `--denom` flag. 2 | ([#1662](https://github.com/informalsystems/ibc-rs/issues/1662)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/ibc-relayer-cli/1777-update-abscissa-and-clap.md: -------------------------------------------------------------------------------- 1 | - Update to abscissa_core 0.6.0-rc.0 and clap 3.x 2 | ([#1777](https://github.com/informalsystems/ibc-rs/pull/1777)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/ibc-relayer-cli/1789-cli-completions.md: -------------------------------------------------------------------------------- 1 | - Add `completions` CLI command to generate shell auto-completion scripts. 2 | ([#1789](https://github.com/informalsystems/ibc-rs/pull/1789)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/ibc-relayer-cli/836-create-client-options.md: -------------------------------------------------------------------------------- 1 | - Add custom options to the `create client` command. 2 | ([#836](https://github.com/informalsystems/ibc-rs/issues/836)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/ibc-relayer/1481-chainendpoint-any-consensus-state.md: -------------------------------------------------------------------------------- 1 | - Allow `ChainEndpoint` implementations to fetch any types of clients 2 | and consensus states ([#1481](https://github.com/informalsystems/ibc-rs/issues/1481)) -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/ibc-relayer/1491-structured-logs.md: -------------------------------------------------------------------------------- 1 | - More structural logging in relayer, using tracing spans and key-value pairs. 2 | ([#1491](https://github.com/informalsystems/ibc-rs/pull/1491)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/ibc-relayer/1785-clarify-ethermint-keys.md: -------------------------------------------------------------------------------- 1 | - Improved documention w.r.t. keys for Ethermint-based chains 2 | ([#1785](https://github.com/informalsystems/ibc-rs/issues/1785)) -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/ibc/1760-path-variants-as-types.md: -------------------------------------------------------------------------------- 1 | - Extract all `ics24_host::Path` variants into their separate types 2 | ([#1760](https://github.com/informalsystems/ibc-rs/issues/1760)) -------------------------------------------------------------------------------- /.changelog/v0.11.0/improvements/ibc/1761-disallow-empty-commitment-prefix-and-proof.md: -------------------------------------------------------------------------------- 1 | - Disallow empty `CommitmentPrefix` and `CommitmentProofBytes` 2 | ([#1761](https://github.com/informalsystems/ibc-rs/issues/1761)) -------------------------------------------------------------------------------- /.changelog/v0.11.1/bug-fixes/ibc-relayer-cli/1822-skip-config-for-completions.md: -------------------------------------------------------------------------------- 1 | - Do not require a config file to be present for the `completions` command. 2 | ([#1822](https://github.com/informalsystems/ibc-rs/pull/1822)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.11.1/improvements/ibc-relayer/1389-add-connection-handshake-verification-logic.md: -------------------------------------------------------------------------------- 1 | - Add missing checks for `ConnectionEnd::version` and `Counterparty::prefix` fields in the `check_destination_connection_state` method. ([#1389](https://github.com/informalsystems/ibc-rs/issues/1389)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.11.1/improvements/ibc-relayer/1663-pending-timeout.md: -------------------------------------------------------------------------------- 1 | - Increased tx confirmation timeout to 300s to prevent aggressive tx 2 | resubmission ([#1663](https://github.com/informalsystems/ibc-rs/issues/1663)) -------------------------------------------------------------------------------- /.changelog/v0.11.1/improvements/ibc-relayer/1793-begin-end-block-chan-events.md: -------------------------------------------------------------------------------- 1 | - Handle channel events originating from Tendermint ABCI's BeginBlock and EndBlock methods 2 | ([#1793](https://github.com/informalsystems/ibc-rs/issues/1793)) -------------------------------------------------------------------------------- /.changelog/v0.11.1/summary.md: -------------------------------------------------------------------------------- 1 | This release adds support for channel events originating from Tendermint ABCI's `BeginBlock` and `EndBlock` methods. 2 | -------------------------------------------------------------------------------- /.changelog/v0.12.0/bug-fixes/ibc-relayer-cli/1885-disable-config-reload.md: -------------------------------------------------------------------------------- 1 | - Disable reloading of configuration upon receiving a SIGHUP signal. ([#1885](https://github.com/informalsystems/ibc-rs/issues/1885)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.12.0/bug-fixes/ibc-relayer/1837-non-standard-ports.md: -------------------------------------------------------------------------------- 1 | - Handle non-standard ports in channel handshake 2 | ([#1837](https://github.com/informalsystems/ibc-rs/issues/1837)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.12.0/bug-fixes/ibc-relayer/1844-duplicate-send-packet-events.md: -------------------------------------------------------------------------------- 1 | - Fix duplicate SendPacket events emitted by EndBlock 2 | ([#1844](https://github.com/informalsystems/ibc-rs/issues/1844)) -------------------------------------------------------------------------------- /.changelog/v0.12.0/bug-fixes/ibc-relayer/1861-non-standard-ports.md: -------------------------------------------------------------------------------- 1 | - Fix support for non-standard ports in channel handshake 2 | ([#1861](https://github.com/informalsystems/ibc-rs/issues/1861), 3 | [#1837](https://github.com/informalsystems/ibc-rs/issues/1837)) 4 | -------------------------------------------------------------------------------- /.changelog/v0.12.0/bug-fixes/ibc-relayer/1872-clear-packets.md: -------------------------------------------------------------------------------- 1 | - Fixed bug where Hermes cleared packets at startup, despite 2 | `clear_on_start = false` ([#1872](https://github.com/informalsystems/ibc-rs/issues/1872)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.12.0/bug-fixes/ibc/1706-fix-formatting-for-some-tendermint-errors.md: -------------------------------------------------------------------------------- 1 | - Fixed the formatting of NotEnoughTimeElapsed and NotEnoughBlocksElapsed 2 | in tendermint errors 3 | ([#1706](https://github.com/informalsystems/ibc-rs/issues/1706)) 4 | -------------------------------------------------------------------------------- /.changelog/v0.12.0/bug-fixes/ibc/1770-deterministic-host-timestamp.md: -------------------------------------------------------------------------------- 1 | - IBC handlers now retrieve the host timestamp from the latest host consensus 2 | state ([#1770](https://github.com/informalsystems/ibc-rs/issues/1770)) -------------------------------------------------------------------------------- /.changelog/v0.12.0/features/1797-ibc-v3.md: -------------------------------------------------------------------------------- 1 | - Upgrade protos and compatibility to IBC v3.0.0-rc.0 and Cosmos SDK v0.45.1 2 | ([#1797](https://github.com/informalsystems/ibc-rs/issues/1797)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.12.0/features/ibc-relayer-cli/1895-rust-log.md: -------------------------------------------------------------------------------- 1 | - Allow overriding the tracing filter with `RUST_LOG` environment variable 2 | ([#1895](https://github.com/informalsystems/ibc-rs/issues/1895)) -------------------------------------------------------------------------------- /.changelog/v0.12.0/improvements/ibc-relayer-cli/1834-clear-packets-cmd.md: -------------------------------------------------------------------------------- 1 | - Added `clear packets` command, combining the effects of 2 | `tx raw packet-recv` and `tx raw packet-ack`. 3 | ([#1834](https://github.com/informalsystems/ibc-rs/pull/1834)) 4 | -------------------------------------------------------------------------------- /.changelog/v0.12.0/improvements/ibc-relayer/1388-more-health-checks.md: -------------------------------------------------------------------------------- 1 | - Add two more health checks: tx indexing enabled and historical entries > 0 2 | ([#1388](https://github.com/informalsystems/ibc-rs/issues/1388)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.12.0/improvements/ibc-relayer/1880-nonallocating-verions-method.md: -------------------------------------------------------------------------------- 1 | - Changed `ConnectionEnd::versions` method to be non-allocating by having it return a `&[Version]` instead of `Vec`. ([#1880](https://github.com/informalsystems/ibc-rs/pull/1880)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.12.0/improvements/ibc/1706-add-client-state-tests.md: -------------------------------------------------------------------------------- 1 | - Added more unit tests to verify Tendermint ClientState 2 | ([#1706](https://github.com/informalsystems/ibc-rs/issues/1706)) -------------------------------------------------------------------------------- /.changelog/v0.12.0/improvements/ibc/1769-cap-reader-keeper.md: -------------------------------------------------------------------------------- 1 | - Define CapabilityReader and CapabilityKeeper traits 2 | ([#1769](https://github.com/informalsystems/ibc-rs/issues/1769)) -------------------------------------------------------------------------------- /.changelog/v0.13.0/bug-fixes/ibc-relayer/1835-ordered-channels.md: -------------------------------------------------------------------------------- 1 | - Fixed relayer behavior on ordered channels 2 | ([#1835](https://github.com/informalsystems/ibc-rs/issues/1835)) -------------------------------------------------------------------------------- /.changelog/v0.13.0/bug-fixes/ibc-relayer/1991-packet-worker-chan-open.md: -------------------------------------------------------------------------------- 1 | - Do not spawn packet worker on chan open ack/confirm events 2 | ([#1991](https://github.com/informalsystems/ibc-rs/issues/1991)) -------------------------------------------------------------------------------- /.changelog/v0.13.0/bug-fixes/ibc-relayer/2008-slow-relayer.md: -------------------------------------------------------------------------------- 1 | - Fix a bug which would cause the relayer to slow down exponentially when either 2 | the average block time was low or when it was relaying on too many chains at 3 | once ([#2008](https://github.com/informalsystems/ibc-rs/issues/2008)) 4 | -------------------------------------------------------------------------------- /.changelog/v0.13.0/features/ibc-proto/1913-cosmwasm-support.md: -------------------------------------------------------------------------------- 1 | - Add CosmWasm support to the generated Protobuf code ([#1913](https://github.com/informalsystems/ibc-rs/issues/1913)) 2 | * Add a new `client` feature to gate the tonic client code, implies the `std` feature. 3 | * Add a new `json-schema` feature to derive `schemars::JsonSchema` on some proto types, implies the `std` feature. 4 | * Add `#[serde(default)]` to fields that might be omitted by Golang `omitempty` directive. 5 | * Change serialization of byte arrays to Base64 for compatibility with Go. 6 | -------------------------------------------------------------------------------- /.changelog/v0.13.0/features/ibc-proto/1988-serde-serialize-deserialize.md: -------------------------------------------------------------------------------- 1 | - Derive `Serialize` and `Deserialize` for `ibc-proto::ibc::core` and `ibc_proto::ibc::applications` structs, 2 | and switch to Google's Protobuf standard types instead of Prost's types. 3 | ([#1988](https://github.com/informalsystems/ibc-rs/issues/1988)) 4 | -------------------------------------------------------------------------------- /.changelog/v0.13.0/features/ibc-relayer/1908-caching-layer.md: -------------------------------------------------------------------------------- 1 | - Added caching layer for hermes start command 2 | ([#1908](https://github.com/informalsystems/ibc-rs/issues/1908)) -------------------------------------------------------------------------------- /.changelog/v0.13.0/features/ibc-relayer/1927-packet-filtering-wildcards.md: -------------------------------------------------------------------------------- 1 | - Add support for wildcards in port and channel identifiers in the packet filter configuration, 2 | which enable operators to filter ICA channels based on the port prefix 3 | ([#1927](https://github.com/informalsystems/ibc-rs/issues/1927)) 4 | -------------------------------------------------------------------------------- /.changelog/v0.13.0/improvements/ibc-integration-test/1961-test-framework.md: -------------------------------------------------------------------------------- 1 | - Split out test framework as new crate `ibc-test-framework` from `ibc-integration-test`. ([#1961](https://github.com/informalsystems/ibc-rs/pull/1961)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.13.0/improvements/ibc-relayer-cli/1559-cli-output.md: -------------------------------------------------------------------------------- 1 | - Print packet data on one line ([#1559](https://github.com/informalsystems/ibc-rs/issues/1559)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.13.0/improvements/ibc-relayer/1908-caching-layer-documentation.md: -------------------------------------------------------------------------------- 1 | - Add documentation for the caching layer implemented in ([#1908](https://github.com/informalsystems/ibc-rs/issues/1908)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.13.0/improvements/ibc/718-rework-ics04_channel-events.md: -------------------------------------------------------------------------------- 1 | - Refactored ics04_channel events 2 | ([#718](https://github.com/informalsystems/ibc-rs/issues/718)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/breaking-changes/2081-msrv-1.60.md: -------------------------------------------------------------------------------- 1 | - Update MSRV to Rust 1.60 2 | ([#2081](https://github.com/informalsystems/ibc-rs/issues/2081)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.14.0/bug-fixes/ibc-relayer-cli/1288-upgrade-chain-confirmation.md: -------------------------------------------------------------------------------- 1 | - Skip waiting for confirmation events on tx raw upgrade-chain 2 | ([#1288](https://github.com/informalsystems/ibc-rs/issues/1288)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/bug-fixes/ibc-relayer-cli/1921-create-client-options.md: -------------------------------------------------------------------------------- 1 | - Apply client options specified with the `create client` command. 2 | ([#1921](https://github.com/informalsystems/ibc-rs/issues/1921)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.14.0/bug-fixes/ibc-relayer/1772-fix-conn-delay-check.md: -------------------------------------------------------------------------------- 1 | - Fix the connection delay logic to use the timestamp of the host block when the client update header was installed. 2 | ([#1772](https://github.com/informalsystems/ibc-rs/issues/1772)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/bug-fixes/ibc-relayer/1792-fix-hermes-retrying-not-regenerating-msgs.md: -------------------------------------------------------------------------------- 1 | - Fixed Hermes retrying mechanism not regenerating operational data for messages ([#1792](https://github.com/informalsystems/ibc-rs/pull/1951)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.14.0/bug-fixes/ibc-relayer/1998-default-max-block-time.md: -------------------------------------------------------------------------------- 1 | - Adjusted max_block_time default value to 30s 2 | ([#1998](https://github.com/informalsystems/ibc-rs/issues/1998)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/bug-fixes/ibc-relayer/2075-wildcard-filter-middle.md: -------------------------------------------------------------------------------- 1 | - Fix a bug in the wildcard filter where pattern would match in the middle of a 2 | string ([#2075](https://github.com/informalsystems/ibc-rs/issues/2075)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/bug-fixes/ibc-relayer/2097-misbehavior-height.md: -------------------------------------------------------------------------------- 1 | - Fixed target height used in misbehavior detection. 2 | ([#2097](https://github.com/informalsystems/ibc-rs/issues/2097)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/bug-fixes/ibc/2035-handler-event-height.md: -------------------------------------------------------------------------------- 1 | - Make all handlers emit an IbcEvent with current host chain height as height parameter value. 2 | ([#2035](https://github.com/informalsystems/ibc-rs/issues/2035)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/bug-fixes/ibc/2062-conn-open-init-version.md: -------------------------------------------------------------------------------- 1 | - Use the version in the message when handling a MsgConnOpenInit 2 | ([#2062](https://github.com/informalsystems/ibc-rs/issues/2062)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/features/ibc-relayer/2036-caching-metrics.md: -------------------------------------------------------------------------------- 1 | - Add a metric for query cache hits 2 | ([#2036](https://github.com/informalsystems/ibc-rs/issues/2036)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/improvements/1936-missing-chain-warn.md: -------------------------------------------------------------------------------- 1 | - Log `missing chain in configuration` errors emitted during event processing at 2 | debug level ([#1936](https://github.com/informalsystems/ibc-rs/issues/1936)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.14.0/improvements/2045-tendermint-0.23.6.md: -------------------------------------------------------------------------------- 1 | - Update tendermint-rs dependencies to v0.23.6 2 | ([#2045](https://github.com/informalsystems/ibc-rs/issues/2045)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/improvements/ibc-relayer-cli/1421-create-channel-cli.md: -------------------------------------------------------------------------------- 1 | - Change `create channel` CLI command such that it is more difficult to create 2 | clients / connections using it ([#1421](https://github.com/informalsystems/ibc-rs/issues/1421)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.14.0/improvements/ibc-relayer-cli/2096-query-packet-pending.md: -------------------------------------------------------------------------------- 1 | - Added `query packet pending` command to list outstanding packet 2 | commitments that are either unreceived or pending acknowledgement 3 | at both ends of a channel. 4 | ([#1862](https://github.com/informalsystems/ibc-rs/issues/1862)) 5 | -------------------------------------------------------------------------------- /.changelog/v0.14.0/improvements/ibc/1758-complete-ics26.md: -------------------------------------------------------------------------------- 1 | - Complete ICS26 implementation ([#1758](https://github.com/informalsystems/ibc-rs/issues/1758)) -------------------------------------------------------------------------------- /.changelog/v0.14.0/improvements/ibc/2068-chan-id-u64.md: -------------------------------------------------------------------------------- 1 | - Improve `ChannelId` validation. ([#2068](https://github.com/informalsystems/ibc-rs/issues/2068)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.14.1/bug-fixes/ibc-relayer/1970-app-latest-height.md: -------------------------------------------------------------------------------- 1 | - Fixed query for application status when application lags blockchain state. 2 | ([#1970](https://github.com/informalsystems/ibc-rs/issues/1970)) -------------------------------------------------------------------------------- /.changelog/v0.14.1/summary.md: -------------------------------------------------------------------------------- 1 | This release improves the reliability of the relayer by fixing an edge case where 2 | some queries would fail if they reach a full node after a new block is committed but before the application state updates to reflect the changes in that block. 3 | -------------------------------------------------------------------------------- /.changelog/v0.15.0/2181-update-codeowners.md: -------------------------------------------------------------------------------- 1 | - Update `.github/CODEOWNERS` file so that each root-level directory is assigned 2 | a default reviewer. ([#2181](https://github.com/informalsystems/ibc-rs/pull/2181)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.15.0/bug-fixes/ibc-relayer/1971-non-batch-fix.md: -------------------------------------------------------------------------------- 1 | - Fix a bug where connection and channel handshakes would fail with non-batching transactions 2 | ([#1971](https://github.com/informalsystems/ibc-rs/issues/1971)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.15.0/bug-fixes/ibc-relayer/2180-client-expiry-time.md: -------------------------------------------------------------------------------- 1 | - Fixed client expiry computation to avoid using local time. 2 | ([#2180](https://github.com/informalsystems/ibc-rs/issues/2180)) -------------------------------------------------------------------------------- /.changelog/v0.15.0/bug-fixes/ibc/2104-fix-commitment-computation.md: -------------------------------------------------------------------------------- 1 | - Fix packet commitment calculation to match IBC-Go 2 | ([#2104](https://github.com/informalsystems/ibc-rs/issues/2104)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.15.0/bug-fixes/ibc/2114-fix-ack-verification.md: -------------------------------------------------------------------------------- 1 | - Fix incorrect acknowledgement verification 2 | ([#2114](https://github.com/informalsystems/ibc-rs/issues/2114)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.15.0/bug-fixes/ibc/2178-conn-ack-bug-fix.md: -------------------------------------------------------------------------------- 1 | - Fix connection identifier mix-up in connection acknowledgement processing 2 | ([#2178](https://github.com/informalsystems/ibc-rs/issues/2178)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.15.0/features/1986-gaia-e2e-tests.md: -------------------------------------------------------------------------------- 1 | - Replaced gaia v5 with v7 in E2E tests. 2 | ([#1986](https://github.com/informalsystems/ibc-rs/issues/1986)) -------------------------------------------------------------------------------- /.changelog/v0.15.0/features/ibc-relayer/2112-new-metrics.md: -------------------------------------------------------------------------------- 1 | - Add six new metrics: `wallet_balance`, `ws_events`, `ws_reconnect`, 2 | `tx_latency_submitted`, `tx_latency_confirmed`, `msg_num` 3 | ([#2112](https://github.com/informalsystems/ibc-rs/issues/2112)) -------------------------------------------------------------------------------- /.changelog/v0.15.0/improvements/ibc-relayer/1971-max-msg-num-min-bound.md: -------------------------------------------------------------------------------- 1 | - Ensure `max_msg_num` is between 1 and 100 with a default of 30 2 | ([#1971](https://github.com/informalsystems/ibc-rs/issues/1971)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.15.0/improvements/ibc-relayer/2031-misleading-misbehavior-error.md: -------------------------------------------------------------------------------- 1 | - Fixed misleading error message leaking from the misbehavior detection task. 2 | ([#2031](https://github.com/informalsystems/ibc-rs/issues/2031)) -------------------------------------------------------------------------------- /.changelog/v0.15.0/improvements/ibc-relayer/2087-incremental-packet-clearing.md: -------------------------------------------------------------------------------- 1 | - Added support for incremental processing of packet clearing commands. 2 | ([#2087](https://github.com/informalsystems/ibc-rs/issues/2087)) -------------------------------------------------------------------------------- /.changelog/v0.15.0/improvements/ibc-relayer/2192-adr009-impl.md: -------------------------------------------------------------------------------- 1 | - Implement ADR 9: add domain type for request messages that are passed to query 2 | functions ([#2192](https://github.com/informalsystems/ibc-rs/issues/2192)) -------------------------------------------------------------------------------- /.changelog/v0.15.0/improvements/ibc/2159-remove-ocaps.md: -------------------------------------------------------------------------------- 1 | - Remove object capabilities from the modules 2 | ([#2159](https://github.com/informalsystems/ibc-rs/issues/2159)) -------------------------------------------------------------------------------- /.changelog/v0.15.0/summary.md: -------------------------------------------------------------------------------- 1 | This release brings a number of bug fixes, some performance improvements, 2 | notably when [clearing packets](https://github.com/informalsystems/ibc-rs/issues/2087), 3 | as well as [new metrics](https://github.com/informalsystems/ibc-rs/issues/2112) 4 | for better observability of the relayer's operations. 5 | -------------------------------------------------------------------------------- /.changelog/v0.6.2/bug-fixes/1247-add-missing-protobuf-impl.md: -------------------------------------------------------------------------------- 1 | - Add missing `Protobuf` impl for `ics03_connection::connection::Counterparty` ([#1247]) 2 | 3 | [#1247]: https://github.com/informalsystems/ibc-rs/issues/1247 4 | -------------------------------------------------------------------------------- /.changelog/v0.6.2/features/1020-augment-error-type.md: -------------------------------------------------------------------------------- 1 | - Augment ClientCreationFailed error with chain id and WS address ([#1020]) 2 | 3 | [#1020]: https://github.com/informalsystems/ibc-rs/issues/1020 4 | -------------------------------------------------------------------------------- /.changelog/v0.6.2/features/1021-cli-indicate-config-file-error.md: -------------------------------------------------------------------------------- 1 | - Improve the error message for config file parse errors ([#1021]) 2 | 3 | [#1021]: https://github.com/informalsystems/ibc-rs/issues/1021 -------------------------------------------------------------------------------- /.changelog/v0.6.2/features/1229-upgrade-clis.md: -------------------------------------------------------------------------------- 1 | - Fix for upgrade CLI regression using new type ics02::TrustThreshold ([#1229]) 2 | 3 | [#1229]: https://github.com/informalsystems/ibc-rs/issues/1229 4 | -------------------------------------------------------------------------------- /.changelog/v0.6.2/features/988-flex-error.md: -------------------------------------------------------------------------------- 1 | - Use the [`flex-error`](https://docs.rs/flex-error/) crate to define and 2 | handle errors ([#1158]) 3 | 4 | [#1158]: https://github.com/informalsystems/ibc-rs/issues/1158 5 | -------------------------------------------------------------------------------- /.changelog/v0.6.2/improvements/1245-max-params-validation.md: -------------------------------------------------------------------------------- 1 | - Add semantic validation of of `max_tx_size` and `max_num_msg` config options ([#1245]) 2 | 3 | [#1245]: https://github.com/informalsystems/ibc-rs/issues/1245 4 | -------------------------------------------------------------------------------- /.changelog/v0.6.2/summary.md: -------------------------------------------------------------------------------- 1 | This minor release of Hermes re-enables the `upgrade client`, `upgrade clients`, 2 | `tx raw upgrade-clients`, and `tx raw upgrade-chain`, and otherwise 3 | contains a few bug fixes and internal improvements. 4 | 5 | Upgrading from version `0.6.1` to `0.6.2` requires no explicit steps. 6 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/bug-fixes/1261-gm-req-detect.md: -------------------------------------------------------------------------------- 1 | - [gm] Fix silent exit when requirements are missing 2 | 3 | [#1261]: https://github.com/informalsystems/ibc-rs/issues/1261 4 | 5 | 6 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/bug-fixes/1285-fix-typeok-bug.md: -------------------------------------------------------------------------------- 1 | - Fix small typo in IBC.tla specification 2 | 3 | [#1285]: https://github.com/informalsystems/ibc-rs/pull/1285 4 | 5 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/bug-fixes/ibc/1257-set-capability-index.md: -------------------------------------------------------------------------------- 1 | - Set the index of `ibc::ics05_port::capabilities::Capability` ([#1257]) 2 | 3 | [#1257]: https://github.com/informalsystems/ibc-rs/issues/1257 4 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/features/1065-keys-delete.md: -------------------------------------------------------------------------------- 1 | - Added `keys delete` CLI command ([#1065]) 2 | 3 | [#1065]: https://github.com/informalsystems/ibc-rs/issues/1065 4 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/features/1175-update-ci.md: -------------------------------------------------------------------------------- 1 | - Update CI to test with gaiad v5.0.5 ([#1175]) 2 | 3 | 4 | [#1175]: https://github.com/informalsystems/ibc-rs/issues/1175 5 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/features/1287-upgrade-legacy.md: -------------------------------------------------------------------------------- 1 | - Add `--legacy | -l` flag to support upgrades for chains built with Cosmos SDK < v0.43.0 ([#1287]) 2 | 3 | [#1287]: https://github.com/informalsystems/ibc-rs/issues/1287 4 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/features/843-rest-api.md: -------------------------------------------------------------------------------- 1 | - Expose the Hermes config and internal state over a REST API ([#843]) 2 | 3 | [#843]: https://github.com/informalsystems/ibc-rs/issues/843 4 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/features/901-conditionally-spawn-worker.md: -------------------------------------------------------------------------------- 1 | - Spawn packet workers only when there are outstanding packets or acknowledgements to relay ([#901]) 2 | 3 | [#901]: https://github.com/informalsystems/ibc-rs/issues/901 4 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/features/948-upgrade-to-cosmos-sdk-v0.43.md: -------------------------------------------------------------------------------- 1 | - Upgrade to Cosmos SDK proto (v0.43.0) & ibc-go proto (v1.0.0) ([#948]) 2 | 3 | - [#948]: https://github.com/informalsystems/ibc-rs/pull/948 4 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/improvements/1132-query-channels-filter.md: -------------------------------------------------------------------------------- 1 | - Add optional destination chain and `--verbose` options for `query channels` CLI ([#1132]) 2 | 3 | [#1132]: https://github.com/informalsystems/ibc-rs/issues/1132 4 | 5 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/improvements/1191-ica-compat.md: -------------------------------------------------------------------------------- 1 | - Improve support for Interchain Accounts (ICS 027) ([#1191]) 2 | 3 | [#1191]: https://github.com/informalsystems/ibc-rs/issues/1191 4 | 5 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/improvements/1249-update-modelator.md: -------------------------------------------------------------------------------- 1 | - Update Modelator to 0.2.0 ([#1249]) 2 | 3 | [#1249]: https://github.com/informalsystems/ibc-rs/pull/1249 4 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/improvements/1265-async-tx-confirmation.md: -------------------------------------------------------------------------------- 1 | - Improve performance and reliability of the relayer by asynchronously waiting for tx confirmations ([#1124], [#1265]) 2 | 3 | [#1124]: https://github.com/informalsystems/ibc-rs/issues/1124 4 | [#1265]: https://github.com/informalsystems/ibc-rs/issues/1265 5 | 6 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/improvements/ibc/1297-impl-consensus-state.md: -------------------------------------------------------------------------------- 1 | - Implement `ics02_client::client_consensus::ConsensusState` for `AnyConsensusState` ([#1297]) 2 | 3 | [#1297]: https://github.com/informalsystems/ibc-rs/issues/1297 4 | -------------------------------------------------------------------------------- /.changelog/v0.7.0/summary.md: -------------------------------------------------------------------------------- 1 | This release of Hermes is the first to be compatible with the development version of Cosmos SDK 0.43. 2 | Hermes 0.7.0 also improves the performance and reliability of the relayer, notably by waiting asynchronously for transactions to be confirmed. 3 | Additionnally, Hermes now includes a REST server which exposes the relayer's internal state over HTTP. 4 | -------------------------------------------------------------------------------- /.changelog/v0.7.1/bug-fixes/1312-fix-gm-stderr.md: -------------------------------------------------------------------------------- 1 | 2 | - [gm](scripts/gm) 3 | - Fix gaiad keys add prints to stderr instead of stdout in SDK 0.43 ([#1312]) 4 | - Bumped default rpc_timeout in Hermes config to 5s ([#1312]) 5 | 6 | [#1312]: https://github.com/informalsystems/ibc-rs/issues/1312 7 | 8 | -------------------------------------------------------------------------------- /.changelog/v0.7.1/bug-fixes/1343-fix-header-decoding-error.md: -------------------------------------------------------------------------------- 1 | - Fix header decoding error which resulted in killing the chain runtime ([#1342](https://github.com/informalsystems/ibc-rs/issues/1342)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.7.1/features/1267-ethermint-support.md: -------------------------------------------------------------------------------- 1 | - Added post-Stargate (v0.5+) Ethermint support ([#1267] [#1071]) 2 | 3 | [#1267]: https://github.com/informalsystems/ibc-rs/issues/1267 4 | [#1071]: https://github.com/informalsystems/ibc-rs/issues/1071 5 | -------------------------------------------------------------------------------- /.changelog/v0.7.1/improvements/1281-derive-traits-module-errors.md: -------------------------------------------------------------------------------- 1 | - Derive `Debug`, `PartialEq` and `Eq` traits for module errors ([#1281]) 2 | 3 | [#1281]: https://github.com/informalsystems/ibc-rs/issues/1281 4 | 5 | -------------------------------------------------------------------------------- /.changelog/v0.7.1/improvements/1311-mbt-test-client-upgrade.md: -------------------------------------------------------------------------------- 1 | - Add MBT tests for ICS 07 Client Upgrade ([#1311]) 2 | 3 | [#1311]: https://github.com/informalsystems/ibc-rs/issues/1311 4 | 5 | -------------------------------------------------------------------------------- /.changelog/v0.7.1/improvements/1319-u256-amount-transfer.md: -------------------------------------------------------------------------------- 1 | - Add support for uint256 transfer amounts ([#1319]) 2 | 3 | [#1319]: https://github.com/informalsystems/ibc-rs/issues/1319 4 | 5 | -------------------------------------------------------------------------------- /.changelog/v0.7.1/improvements/ibc/1268-reader-result.md: -------------------------------------------------------------------------------- 1 | - Change all `*Reader` traits to return `Result` instead of `Option` ([#1268]) 2 | 3 | [#1268]: https://github.com/informalsystems/ibc-rs/issues/1268 4 | -------------------------------------------------------------------------------- /.changelog/v0.7.1/improvements/ibc/1333-modules-error.md: -------------------------------------------------------------------------------- 1 | 7 | - Clean up modules' errors ([#1333]) 8 | 9 | [#1333]: https://github.com/informalsystems/ibc-rs/issues/1333 10 | -------------------------------------------------------------------------------- /.changelog/v0.7.1/summary.md: -------------------------------------------------------------------------------- 1 | This minor release of Hermes notably features support for Ethermint chains and transfer amounts expressed as a 256-bit unsigned integer. 2 | This release also fixes a bug where the chain runtime within the relayer would crash when failing to decode a invalid header included in a `ClientUpdate` IBC event. 3 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/features/1155-secp256k1-signatures.md: -------------------------------------------------------------------------------- 1 | - Support for chains which use Secp256k1 signatures in consensus votes ([#1155](https://github.com/informalsystems/ibc-rs/issues/1155)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/features/1290-stubborn-workers.md: -------------------------------------------------------------------------------- 1 | - Modified packet worker to use stubborn strategy ([#1290](https://github.com/informalsystems/ibc-rs/issues/1290)) 2 | 3 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/features/1362-skip-consensus-states.md: -------------------------------------------------------------------------------- 1 | - Skip `consensus_heights` query in `update_client` when possible ([#1362](https://github.com/informalsystems/ibc-rs/issues/1362)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/features/1371-gm-features.md: -------------------------------------------------------------------------------- 1 | 2 | - [gm](scripts/gm) 3 | - Binaries in the config can be defined as URLs now. 4 | - Add the option to set gm-lib path via the $GM_LIB environment variable ([#1365](https://github.com/informalsystems/ibc-rs/issues/1365)) 5 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/features/1380-toggle-confirmations.md: -------------------------------------------------------------------------------- 1 | - Support for disabling tx confirmation mechanism ([#1380](https://github.com/informalsystems/ibc-rs/issues/1380)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/improvements/1156-use-core-alloc.md: -------------------------------------------------------------------------------- 1 | - Use `core` and `alloc` crates for `no_std` compatibility ([#1156](https://github.com/informalsystems/ibc-rs/issues/1156)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/improvements/1336-better-health-check.md: -------------------------------------------------------------------------------- 1 | - Improve performance of health check, and only perform it on `hermes start`. 2 | Add a `hermes health-check` command. ([#1336](https://github.com/informalsystems/ibc-rs/issues/1336)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/improvements/1337-semver-pre-compat.md: -------------------------------------------------------------------------------- 1 | - Treat pre-releases of the Cosmos SDK as their standard version in compatibility check ([#1337](https://github.com/informalsystems/ibc-rs/issues/1337)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/improvements/1344-bump-compat-0.44.md: -------------------------------------------------------------------------------- 1 | - Bump Cosmos SDK compatibility to v0.44.0 ([#1344](https://github.com/informalsystems/ibc-rs/issues/1344)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/improvements/1376-consensus-params-explicit-height.md: -------------------------------------------------------------------------------- 1 | - Improve reliability of health check ([#1382](https://github.com/informalsystems/ibc-rs/issues/1376)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.7.2/summary.md: -------------------------------------------------------------------------------- 1 | This minor release brings substantial performance improvements as well as 2 | support for chains using Secp256k1 signatures in consensus votes. 3 | 4 | It also bumps the compatibility to Cosmos SDK 0.44. 5 | -------------------------------------------------------------------------------- /.changelog/v0.7.3/bug-fixes/ibc-relayer/1345-fix-tx-simulation-0.42.md: -------------------------------------------------------------------------------- 1 | - Fix a bug introduced in Hermes v0.7.0 where tx simulations would fail on 2 | chains based on Cosmos SDK 0.42. This would cause Hermes to use the max 3 | gas specified in the config when submitted the tx, leading to high fees. 4 | ([#1345](https://github.com/informalsystems/ibc-rs/issues/1345)) -------------------------------------------------------------------------------- /.changelog/v0.7.3/bug-fixes/ibc-relayer/1402-fix-account-seq-error-case.md: -------------------------------------------------------------------------------- 1 | - Only increase cached account sequence number when `broadcast_tx_sync` fails, 2 | therefore ensuring that the cached sequence number stays in sync with the 3 | node. ([#1402](https://github.com/informalsystems/ibc-rs/issues/1402)) -------------------------------------------------------------------------------- /.changelog/v0.7.3/improvements/ibc-relayer/1392-trusting-period-default.md: -------------------------------------------------------------------------------- 1 | - Set default trusting period to be 2/3 of unbonding period for Cosmos chains 2 | ([#1392](https://github.com/informalsystems/ibc-rs/issues/1392)) -------------------------------------------------------------------------------- /.changelog/v0.7.3/summary.md: -------------------------------------------------------------------------------- 1 | This minor release most notably includes a fix for a bug introduced in v0.7.0 2 | where Hermes would always use the max gas when submitting transactions to 3 | chains based on Cosmos SDK <= 0.42. 4 | It also improves the handling of account sequence numbers 5 | -------------------------------------------------------------------------------- /.changelog/v0.8.0-pre.1/breaking-changes/ibc/1214-ics07.md: -------------------------------------------------------------------------------- 1 | - The `check_header_and_update_state` method of the `ClientDef` 2 | trait (ICS02) has been expanded to facilitate ICS07 3 | ([#1214](https://github.com/informalsystems/ibc-rs/issues/1214)) -------------------------------------------------------------------------------- /.changelog/v0.8.0-pre.1/features/1433-memo-field.md: -------------------------------------------------------------------------------- 1 | - Add support for the `tx.memo` field ([#1433]) 2 | 3 | [#1433]: https://github.com/informalsystems/ibc-rs/issues/1433 4 | -------------------------------------------------------------------------------- /.changelog/v0.8.0-pre.1/features/ibc-relayer/1457-default-gas.md: -------------------------------------------------------------------------------- 1 | - Add a `default_gas` setting to be used for submitting a tx when tx simulation 2 | fails ([#1457](https://github.com/informalsystems/ibc-rs/issues/1457)) -------------------------------------------------------------------------------- /.changelog/v0.8.0-pre.1/features/ibc-relayer/1464-ibc-go-check.md: -------------------------------------------------------------------------------- 1 | - Update compatibility check for IBC-Go dependency 2 | ([#1464](https://github.com/informalsystems/ibc-rs/issues/1464)) -------------------------------------------------------------------------------- /.changelog/v0.8.0-pre.1/features/ibc/1214-ics07.md: -------------------------------------------------------------------------------- 1 | - Add ICS07 verification functionality by using `tendermint-light-client` 2 | ([#1214](https://github.com/informalsystems/ibc-rs/issues/1214)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.8.0-pre.1/improvements/ibc-relayer/1231-begin-end-block-events.md: -------------------------------------------------------------------------------- 1 | - Handle SendPacket events originating from Tendermint ABCI's BeginBlock 2 | and EndBlock methods ([#1231](https://github.com/informalsystems/ibc-rs/issues/1231)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.8.0-pre.1/improvements/ibc-relayer/1440-improve-error-msg-create-client.md: -------------------------------------------------------------------------------- 1 | - Improve error message when `create client` fails and add a health 2 | check for the trusting period being smaller than the unbonding period 3 | ([#1440](https://github.com/informalsystems/ibc-rs/issues/1440)) 4 | -------------------------------------------------------------------------------- /.changelog/v0.8.0-pre.1/summary.md: -------------------------------------------------------------------------------- 1 | This is a pre-release which depends on forks of various Rust libraries. 2 | As such, it is advised to avoid depending on the `ibc` and `ibc-relayer` crates 3 | at version 0.8.0-pre.1. 4 | 5 | However, Hermes v0.8.0-pre.1 is considered stable and it is recommended for all 6 | users to update to this version. 7 | 8 | This release notably includes a new [`memo_prefix`][memo] configuration option 9 | for specifying a prefix to be include in the memo of each transaction submitted 10 | by Hermes. 11 | -------------------------------------------------------------------------------- /.changelog/v0.8.0/breaking-changes/1519-msrv-1.56.md: -------------------------------------------------------------------------------- 1 | - Update MSRV to Rust 1.56 and use the 2021 edition 2 | ([#1519](https://github.com/informalsystems/ibc-rs/issues/1519)) -------------------------------------------------------------------------------- /.changelog/v0.8.0/bug-fixes/1445-clock-drift.md: -------------------------------------------------------------------------------- 1 | - Fix for client state clock drift [#1445]: 2 | * Added new config param `max_clock_drift` to prevent 3 | the problem for appearing in newly-created clients. 4 | * Added a synchronos waiting in client update logic 5 | to allow destination chain to reach a new height 6 | before submitting a client update message. 7 | 8 | 9 | [#1445]: https://github.com/informalsystems/ibc-rs/issues/1445 10 | -------------------------------------------------------------------------------- /.changelog/v0.8.0/bug-fixes/1504-timeout_check.md: -------------------------------------------------------------------------------- 1 | - Fix for packet timeout computation 2 | ([#1504](https://github.com/informalsystems/ibc-rs/issues/1504)) -------------------------------------------------------------------------------- /.changelog/v0.8.0/improvements/1417-update-client-misbehavior-perf.md: -------------------------------------------------------------------------------- 1 | - Improve performance of misbehaviour checks triggered by an `UpdateClient` 2 | event ([#1417](https://github.com/informalsystems/ibc-rs/issues/1417)) -------------------------------------------------------------------------------- /.changelog/v0.8.0/improvements/1502-update-prost-09.md: -------------------------------------------------------------------------------- 1 | - Update to official releases of `prost` 0.9 and `tonic` 0.6 2 | ([#1502](https://github.com/informalsystems/ibc-rs/issues/1502)) -------------------------------------------------------------------------------- /.changelog/v0.8.0/improvements/ibc/1436-restructure-to-match-ibc-go.md: -------------------------------------------------------------------------------- 1 | - Restructure the layout of the `ibc` crate to match `ibc-go`'s [layout][ibc-go-layout] ([#1436][issue-1436]). 2 | 3 | [issue-1436]: https://github.com/informalsystems/ibc-rs/issues/1436 4 | [ibc-go-layout]: https://github.com/cosmos/ibc-go#contents 5 | -------------------------------------------------------------------------------- /.changelog/v0.8.0/improvements/ibc/1460-path-fromstr.md: -------------------------------------------------------------------------------- 1 | - Implement `FromStr` to enable string-encoded paths to be converted into Path identifiers ([#1460](https://github.com/informalsystems/ibc-rs/issues/1460)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.8.0/improvements/ibc/838-converting-IbcEvent-into-AbciEvent.md: -------------------------------------------------------------------------------- 1 | - Support for converting `ibc::events::IbcEvent` into `tendermint::abci::Event` ([#838](https://github.com/informalsystems/ibc-rs/issues/838)) 2 | -------------------------------------------------------------------------------- /.changelog/v0.8.0/summary.md: -------------------------------------------------------------------------------- 1 | This is the final release of version 0.8.0, which now depends on the official releases of the `prost` and `tonic` crates. 2 | In addition to everything that's included in v0.8.0-pre.1, this release updates the minimum supported Rust version to 1.56, 3 | and contains various bug fixes and performance improvements which make the relayer more reliable. 4 | 5 | #### Notice for operators 6 | A new setting was added to the Hermes configuration: `max_block_time`. 7 | This setting specifies the maximum time per block for this chain. 8 | The block time together with the clock drift are added to the source drift to estimate 9 | the maximum clock drift when creating a client on this chain. 10 | For Cosmos-SDK chains a good approximation is `timeout_propose` + `timeout_commit` 11 | -------------------------------------------------------------------------------- /.changelog/v0.9.0/bug-fixes/ibc/1532-connOpenAck-counterparty-conn-id-not-set.md: -------------------------------------------------------------------------------- 1 | - Set the connection counterparty in the ICS03 [`connOpenAck` handler][conn-open-ack-handler] 2 | ([#1532](https://github.com/informalsystems/ibc-rs/issues/1532)) 3 | 4 | [conn-open-ack-handler]: https://github.com/cosmos/ibc-rs/blob/main/crates/ibc/src/core/ics03_connection/handler/conn_open_ack.rs 5 | 6 | -------------------------------------------------------------------------------- /.changelog/v0.9.0/features/1408-vega-protos.md: -------------------------------------------------------------------------------- 1 | - Support for compatibility with gaia Vega upgrade (protos matching ibc-go v1.2.2 and SDK v0.44.3) 2 | ([#1408](https://github.com/informalsystems/ibc-rs/issues/1408)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.9.0/features/1534-ibc-queries.md: -------------------------------------------------------------------------------- 1 | - Optimize the WS client to subscribe to IBC events only (instead of all Tx 2 | events) ([#1534](https://github.com/informalsystems/ibc-rs/issues/1534)) -------------------------------------------------------------------------------- /.changelog/v0.9.0/features/ibc-relayer/1518-config-modes.md: -------------------------------------------------------------------------------- 1 | - Allow for more granular control of relaying modes. The `mode` configuration section replaces the `strategy` option. 2 | ([#1518](https://github.com/informalsystems/ibc-rs/issues/1518)) 3 | -------------------------------------------------------------------------------- /.changelog/v0.9.0/improvements/1544-typed-tla-mbt-specs.md: -------------------------------------------------------------------------------- 1 | - Upgrade IBC-rs TLA+ MBT models to modern Apalache type annotations 2 | ([#1544](https://github.com/informalsystems/ibc-rs/issues/1544)) -------------------------------------------------------------------------------- /.changelog/v0.9.0/improvements/1556-arch-doc.md: -------------------------------------------------------------------------------- 1 | - Add architecture.md doc that gives a high-level overview of the structure of the codebase. 2 | - Add some module-level documentation 3 | ([#1556][1556]) 4 | 5 | [1556]: https://github.com/informalsystems/ibc-rs/pulls/1556 6 | -------------------------------------------------------------------------------- /.changelog/v0.9.0/improvements/ibc-relayer-cli/1515-single-line-errors.md: -------------------------------------------------------------------------------- 1 | - Output errors on a single line if ANSI output is disabled 2 | ([#1515](https://github.com/informalsystems/ibc-rs/issues/1515)) -------------------------------------------------------------------------------- /.changelog/v0.9.0/improvements/ibc-relayer-cli/1555-fee-amount-overflow.md: -------------------------------------------------------------------------------- 1 | - Compute fee amount using big integers to prevent overflow 2 | when using denominations with high decimal places 3 | ([#1555](https://github.com/informalsystems/ibc-rs/issues/1555)) -------------------------------------------------------------------------------- /.changelog/v0.9.0/improvements/ibc-relayer/1479-abort-failed-simulated-txs.md: -------------------------------------------------------------------------------- 1 | - The relayer will now avoid submitting a tx after the simulation failed 2 | (in all but one special case) to avoid wasting fees unnecessarily 3 | ([#1479](https://github.com/informalsystems/ibc-rs/issues/1479)) -------------------------------------------------------------------------------- /.changelog/v0.9.0/improvements/ibc/1546-add-partialeq-ibcevent.md: -------------------------------------------------------------------------------- 1 | - Derive `PartialEq` and `Eq` on `IbcEvent` and inner types 2 | ([#1546](https://github.com/informalsystems/ibc-rs/issues/1546)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/breaking-changes/ibc-relayer-cli/1075-change-key-name-flag.md: -------------------------------------------------------------------------------- 1 | - Merged commands `keys add` and `keys restore` into single command `keys add`. 2 | The flag to specify the key name for the CLI command `keys add` has been changed from `-n` to `-k`. 3 | Restoring a key now takes a file containing the mnemonic as input instead of directly taking the mnemonic. 4 | ([#1075](https://github.com/informalsystems/ibc-rs/issues/1075)) 5 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/breaking-changes/ibc-relayer-cli/2174-gas-multiplier.md: -------------------------------------------------------------------------------- 1 | - Deprecate `gas_adjustment` setting in favor of new `gas_multiplier` setting 2 | ([#2174](https://github.com/informalsystems/ibc-rs/issues/2174)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/breaking-changes/ibc-relayer-cli/2239-changed-args-to-flags.md: -------------------------------------------------------------------------------- 1 | - Updated all CLI commands to take flags instead of positional arguments. 2 | ([#2239](https://github.com/informalsystems/ibc-rs/issues/2239)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/breaking-changes/ibc-relayer-cli/2379-pending-consistency.md: -------------------------------------------------------------------------------- 1 | - Rename `query packet unreceived-packets` to `query packet pending-sends` 2 | and `query packet unreceived-acks` to `query packet pending-acks` 3 | ([#2379](https://github.com/informalsystems/ibc-rs/issues/2379)) 4 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/breaking-changes/ibc-relayer-cli/594-unify-cli.md: -------------------------------------------------------------------------------- 1 | - New ADR which describes the changes to the Hermes commands, specifically 2 | the move to flags instead of positional arguments. 3 | ([#594](https://github.com/informalsystems/ibc-rs/issues/594)) 4 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/breaking-changes/ibc/2361-string-channel-id.md: -------------------------------------------------------------------------------- 1 | - Change `ChannelId` representation to a string, allowing all IDs valid per ICS 024 2 | ([#2330](https://github.com/informalsystems/ibc-rs/issues/2330)). 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/bug-fixes/ibc-relayer-cli/2143-config-validate-cli.md: -------------------------------------------------------------------------------- 1 | - CLI command `config validate` now correctly outputs an error if the configuration file 2 | does not exist or is empty. ([#2143](https://github.com/informalsystems/ibc-rs/issues/2143)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/bug-fixes/ibc-relayer-cli/2168-conn-handshake-retry.md: -------------------------------------------------------------------------------- 1 | - Fix the flow for crate connection to ensure success 2 | despite concurrent relayers racing to finish the handshake. 3 | ([#2168](https://github.com/informalsystems/ibc-rs/issues/2168)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/bug-fixes/ibc-relayer/1153-fix-execute-schedule-leaky-pipeline.md: -------------------------------------------------------------------------------- 1 | - Fix `execute_schedule` method dropping operational data due to improper 2 | handling of errors. ([#2118](https://github.com/informalsystems/ibc-rs/issues/1153)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/bug-fixes/ibc-relayer/2093-fix-duplicate-packets-on-start.md: -------------------------------------------------------------------------------- 1 | - Fix duplicate packets being generated on start. ([#2093](https://github.com/informalsystems/ibc-rs/issues/2093)) 2 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/bug-fixes/ibc-relayer/2185-client-upgrade.md: -------------------------------------------------------------------------------- 1 | - Use appropriate height when querying for client upgrade state 2 | ([#2185](https://github.com/informalsystems/ibc-rs/issues/2185)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/bug-fixes/ibc-relayer/2254-fix-channel-handshake.md: -------------------------------------------------------------------------------- 1 | - Fix the channel handshake issues that occur when concurrent relayers are 2 | present ([#2254](https://github.com/informalsystems/ibc-rs/issues/2254)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/bug-fixes/ibc-relayer/2333-error-for-all-msgs.md: -------------------------------------------------------------------------------- 1 | - When Hermes submits `N` messages to a chain, it will now always gets back `N` responses, even in the presence of errors. 2 | ([#2333](https://github.com/informalsystems/ibc-rs/issues/2333)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/bug-fixes/ibc/2293-fix-recv-packet-dest-portchan.md: -------------------------------------------------------------------------------- 1 | - Fix `recv_packet` handler incorrectly querying `packet_receipt` and `next_sequence_recv` using 2 | packet's `source_{port, channel}`. 3 | ([#2293](https://github.com/informalsystems/ibc-rs/issues/2293)) 4 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/bug-fixes/ibc/2361-channel-id-max-len-64.md: -------------------------------------------------------------------------------- 1 | - Permit channel identifiers with length up to 64 characters, 2 | as per the ICS 024 specification. 3 | ([#2330](https://github.com/informalsystems/ibc-rs/issues/2330)). 4 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/features/ibc-proto/2277-proto-server.md: -------------------------------------------------------------------------------- 1 | - Generate gRPC server code under feature 'server' 2 | ([#2277](https://github.com/informalsystems/ibc-rs/issues/2277)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/features/ibc-relayer-cli/2201-new-query-denom-trace-cli.md: -------------------------------------------------------------------------------- 1 | - Added CLI command `query transfer denom-trace` which outputs the base denomination and path of a given 2 | trace hash. ([#2201](https://github.com/informalsystems/ibc-rs/issues/2201)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/features/ibc-relayer-cli/2358-add-unit-testing-commands.md: -------------------------------------------------------------------------------- 1 | - Add unit tests for all Hermes commands with at least one argument 2 | ([#2358](https://github.com/informalsystems/ibc-rs/issues/2358)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/features/ibc-relayer-cli/912-balance-subcommand-cli.md: -------------------------------------------------------------------------------- 1 | - Added CLI command `keys balance` which outputs the balance of an account associated with a 2 | key. ([#912](https://github.com/informalsystems/ibc-rs/issues/912)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/features/ibc-relayer-cli/999-channel-client-subcommand-cli.md: -------------------------------------------------------------------------------- 1 | - Added CLI command `query channel client` which outputs the channel's client state. 2 | ([#999](https://github.com/informalsystems/ibc-rs/issues/999)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/features/ibc-relayer/2240-chain-types.md: -------------------------------------------------------------------------------- 1 | - Add preliminary support for multiple chain types, which can be specified in 2 | the chain configuration. At the moment only the `CosmosSdk` chain type is 3 | supported. ([#2240](https://github.com/informalsystems/ibc-rs/issues/2240)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/features/ibc-relayer/2301-tendermint-version-support.md: -------------------------------------------------------------------------------- 1 | - Add support for fetching & parsing the Tendermint version of a network that 2 | Hermes is connected to. ([#2301](https://github.com/informalsystems/ibc-rs/issues/2301)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/features/ibc-telemetry/2175-pending-packet-tracking-metrics.md: -------------------------------------------------------------------------------- 1 | - Added new metrics to track the number of relayed `SendPacket` and `WriteAcknowledgement` 2 | messages, the sequence number and the timestamp of the oldest pending `SendPacket` 3 | ([#2175](https://github.com/informalsystems/ibc-rs/issues/2175)) 4 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc-relayer-cli/2111-packet-clearing-select-specific-wallet.md: -------------------------------------------------------------------------------- 1 | - Add support for selecting a specific wallet in the `clear packets` CLI flow ([#2111](https://github.com/informalsystems/ibc-rs/issues/2111)) 2 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc-relayer-cli/2300-add-upgrade-height-flag-to-upgrade-client-command.md: -------------------------------------------------------------------------------- 1 | - Added a required flag `--upgrade-height` that halts the reference chain at the 2 | specified height when performing a client upgrade 3 | ([#2300](https://github.com/informalsystems/ibc-rs/issues/2300)) 4 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc-relayer-cli/2317-add-flag-to-skip-new-client-connection.md: -------------------------------------------------------------------------------- 1 | - Added `--yes` flag to the `create channel` flow to enable skipping the 2 | `--new-client-connection` step ([#2317](https://github.com/informalsystems/ibc-rs/issues/2317)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc-relayer/1400-fee-related-error-message.md: -------------------------------------------------------------------------------- 1 | - Added handler for SDK error 13 in order to output an understandable error message. 2 | ([#1400](https://github.com/informalsystems/ibc-rs/issues/1400)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc-relayer/2155-remove-infinite-loop.md: -------------------------------------------------------------------------------- 1 | - Do not retry indefinitely on command handling failure in the packet worker 2 | ([#2155](https://github.com/informalsystems/ibc-rs/issues/2155)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc-relayer/2223-consolidate-chain-query-proven.md: -------------------------------------------------------------------------------- 1 | - Consolidate `ChainEndpoint::proven_*` methods with their corresponding `query_*` form 2 | ([#2223](https://github.com/informalsystems/ibc-rs/issues/2223)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc-relayer/2249-ignore-nonce-mismatch.md: -------------------------------------------------------------------------------- 1 | - Reduce relaying delay when some account mismatch errors occur during Tx 2 | simulation ([#2249](https://github.com/informalsystems/ibc-rs/issues/2249)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc/1009-height-zero-complete.md: -------------------------------------------------------------------------------- 1 | - Remove the concept of a zero Height 2 | ([#1009](https://github.com/informalsystems/ibc-rs/issues/1009)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc/1759-complete-ics20.md: -------------------------------------------------------------------------------- 1 | - Complete ICS20 implementation ([#1759](https://github.com/informalsystems/ibc-rs/issues/1759)) 2 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc/2279-u256-serde-derive.md: -------------------------------------------------------------------------------- 1 | - Derive `serde::{Serialize, Deserialize}` for `U256`. ([#2279](https://github.com/informalsystems/ibc-rs/issues/2279)) 2 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/improvements/ibc/2280-ics20-api-improvements.md: -------------------------------------------------------------------------------- 1 | - Remove unnecessary supertraits requirements from ICS20 traits. 2 | ([#2280](https://github.com/informalsystems/ibc-rs/pull/2280)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.0/summary.md: -------------------------------------------------------------------------------- 1 | This is the release candidate 0 for Hermes v1.0.0 🎉 2 | 3 | ### Note for operators 4 | 5 | > ⚠️ This release contains multiple breaking changes to the Hermes command-line interface and configuration. 6 | > ⚠️ Please consult the `UPGRADING.md` document for instructions on how to upgrade Hermes to v1.0.0-rc.0. 7 | 8 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/breaking-changes/ibc-relayer-cli/2376-refactor-tx-raw-commands.md: -------------------------------------------------------------------------------- 1 | - Refactored old `tx raw` commands to drop the `raw` subcommand. 2 | Replaced `--src-` and `--dst-` flag prefixes in old `tx raw` commands with more meaningful prefixes. 3 | Removed commands `tx raw update-client`, `tx raw upgrade-client`, `tx raw upgrade-client` and 4 | `tx raw create-client`. 5 | ([#2376](https://github.com/informalsystems/ibc-rs/issues/2376)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/breaking-changes/ibc-relayer-cli/2410-tx-cli-flags.md: -------------------------------------------------------------------------------- 1 | - Rename `--a-` and `--b-` prefixes in `hermes tx` subcommands to `--src-` and `--dst-` 2 | ([#2410](https://github.com/informalsystems/ibc-rs/issues/2410)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/bug-fixes/ibc-relayer-cli/1132-fixed-query-channels-filter.md: -------------------------------------------------------------------------------- 1 | - Fixed filtering counterparty chain in Hermes command `query channels` 2 | ([#1132](https://github.com/informalsystems/ibc-rs/issues/1132)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/bug-fixes/ibc-relayer-cli/2405-fixed-ft-transfer-receiver-flag.md: -------------------------------------------------------------------------------- 1 | - Fixed command `tx raw ft-transfer` to correctly use the address given by 2 | the `--receiver` flag. 3 | ([#2405](https://github.com/informalsystems/ibc-rs/issues/2405)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/bug-fixes/ibc-relayer/2411-retry-snerr.md: -------------------------------------------------------------------------------- 1 | - Fix a regression where Hermes would not retry relaying packet on account 2 | mismatch error when the sequence number used was smaller than the expected one 3 | ([#2411](https://github.com/informalsystems/ibc-rs/issues/2411)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/bug-fixes/ibc-relayer/2444-abci-info-data.md: -------------------------------------------------------------------------------- 1 | - Fix a bug where the relayer would fail to relay any packets when the 2 | `/acbi_info` endpoint of a chain did not include `data` and `version` fields 3 | ([#2444](https://github.com/informalsystems/ibc-rs/issues/2444)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/bug-fixes/ibc/2386-fix-ics20-ds-serde.md: -------------------------------------------------------------------------------- 1 | - Fix serde implementations for ICS20 packet data structures 2 | ([#2386](https://github.com/informalsystems/ibc-rs/issues/2386)). 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/bug-fixes/ibc/2387-fix-get_channel_escrow_address.md: -------------------------------------------------------------------------------- 1 | - Remove provided `Ics20Reader::get_channel_escrow_address()` implementation and make `cosmos_adr028_escrow_address()` 2 | public. 3 | ([#2387](https://github.com/informalsystems/ibc-rs/issues/2387)) 4 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/bug-fixes/ibc/2424-add-write-acknowledgement-packet-process-and-store.md: -------------------------------------------------------------------------------- 1 | - Add Write Acknowledgement Process on packet callback 2 | ([#2424](https://github.com/informalsystems/ibc-rs/issues/2424)). -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/bug-fixes/ibc/2428-fix-handle-process-write-acknowledgement-incorrect-store-type.md: -------------------------------------------------------------------------------- 1 | - Mirror fix write_acknowledgement handler incorrectly uses packet's source_{port, channel} as key for storing acks 2 | ([#2428](https://github.com/informalsystems/ibc-rs/issues/2428)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/features/ibc-relayer-cli/2310-new-optional-flags-query-connections.md: -------------------------------------------------------------------------------- 1 | - New optional flags `--counterparty-chain` and `--verbose` for the command 2 | `query connections` ([#2310](https://github.com/informalsystems/ibc-rs/issues/2310)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/features/ibc-relayer-cli/2311-new-optional-flag-upgrade-clients.md: -------------------------------------------------------------------------------- 1 | - Added new optional flag `--host-chain` to filter which clients are upgraded when 2 | running `upgrade clients` command 3 | ([#2311](https://github.com/informalsystems/ibc-rs/issues/2311)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/features/ibc-relayer-cli/2429-show-counterparty.md: -------------------------------------------------------------------------------- 1 | Add a `--show-counterparty` flag to `hermes query channels` which outputs every channel along with its corresponding port, and the counterparty chain's id, in a pretty way. 2 | ([#2429](https://github.com/informalsystems/ibc-rs/issues/2429)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/2455-tendermint-0.23.8.md: -------------------------------------------------------------------------------- 1 | - Bump tendermint-rs dependencies to 0.23.8 2 | ([#2455](https://github.com/informalsystems/ibc-rs/issues/2455)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/guide/1935-global-options-doc.md: -------------------------------------------------------------------------------- 1 | - Documented explicitly the ordering of global Hermes options. 2 | ([#1935](https://github.com/informalsystems/ibc-rs/issues/1935)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/guide/2189-cleanup-dev-env-from-hermes-guide.md: -------------------------------------------------------------------------------- 1 | - cleanup dev-env from hermes guide ([2189](https://github.com/informalsystems/ibc-rs/issues/2189)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/ibc-proto/2403-update-protobufs.md: -------------------------------------------------------------------------------- 1 | - Update protobufs for IBC-Go to v4.0.0-rc0 and Cosmos SDK to v0.45.6 2 | ([#2403](https://github.com/informalsystems/ibc-rs/issues/2403)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/ibc-relayer-cli/2375-keys-add-overwrite.md: -------------------------------------------------------------------------------- 1 | - Hermes command `keys add` now checks for existing key 2 | and overwrites only if the flag `--overwrite` is passed. 3 | ([#2375](https://github.com/informalsystems/ibc-rs/issues/2375)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/ibc-relayer-cli/2431-colored_output.md: -------------------------------------------------------------------------------- 1 | - Output status is now colored in green for success and red for error 2 | ([#2431](https://github.com/informalsystems/ibc-rs/issues/2431)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/ibc-relayer-cli/2435-gas-multiplier.md: -------------------------------------------------------------------------------- 1 | - Increase default value for `gas_multiplier` setting to 1.1 2 | ([#2435](https://github.com/informalsystems/ibc-rs/issues/2435)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/ibc-telemetry/2381-converted-wallet-balance-metric-to-f64.md: -------------------------------------------------------------------------------- 1 | - Updated telemetry metric `wallet_balance` to f64 and removed downscaling 2 | displayed value. Please note that when converting the balance to f64 a loss in 3 | precision might be introduced in the displayed value. 4 | ([#2381](https://github.com/informalsystems/ibc-rs/issues/2381)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/ibc-telemetry/2408-better-metrics-naming-and-description.md: -------------------------------------------------------------------------------- 1 | - Improved naming and description of some telemetry metrics and added 2 | histogram buckets for `tx_latency` metrics. 3 | In addition the default value of the configuration `tx_confirmation` 4 | in Hermes `config.toml` has been changed from `true` to `false`. 5 | ([#2408](https://github.com/informalsystems/ibc-rs/issues/2408)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/ibc/2356-adr011.md: -------------------------------------------------------------------------------- 1 | - Propose ADR011 for light client extraction. 2 | ([#2356](https://github.com/informalsystems/ibc-rs/pull/2356)). 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/improvements/ibc/2447-move-relayer-specific-module-code.md: -------------------------------------------------------------------------------- 1 | - Move relayer-specific code from the modules crate into the relayer crate. 2 | ([#2447](https://github.com/informalsystems/ibc-rs/pull/2447)). 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.1/summary.md: -------------------------------------------------------------------------------- 1 | This is the second release candidate for Hermes v1.0.0 🎉 2 | 3 | ### Note for operators 4 | 5 | > ⚠️ This release contains multiple breaking changes to the Hermes command-line interface and configuration. 6 | > ⚠️ Please consult the `UPGRADING` document for instructions to update to Hermes v1.0.0-rc.1. 7 | 8 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.2/bug-fixes/ibc-relayer/2433-wait-consensus-height.md: -------------------------------------------------------------------------------- 1 | - For the `ConnOpenTry` and `ConnOpenAck` steps, wait for the destination 2 | app height to be higher than the consensus height, otherwise we fail to 3 | complete the handshake when the block times of the two chains involved differ 4 | significantly ([#2433](https://github.com/informalsystems/ibc-rs/issues/2433)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.2/bug-fixes/ibc-relayer/2477-prevent-oversized-tx-batch.md: -------------------------------------------------------------------------------- 1 | - Fix code that could result in message batch size growing above 2 | the transaction size limit 3 | ([#2477](https://github.com/informalsystems/ibc-rs/issues/2477)). 4 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.2/features/ibc-relayer/2380-ipv6.md: -------------------------------------------------------------------------------- 1 | - Enable connecting to full nodes over IPv6 2 | ([#2380](https://github.com/informalsystems/ibc-rs/issues/2380)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.2/improvements/guide/2459-2459.md: -------------------------------------------------------------------------------- 1 | - Document how to use HTTP basic authentication in the guide 2 | ([#2459](https://github.com/informalsystems/ibc-rs/issues/2459)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.2/improvements/guide/2466-clean-raw-guide.md: -------------------------------------------------------------------------------- 1 | - Remove tutorial featuring raw commands from the guide 2 | ([#2466](https://github.com/informalsystems/ibc-rs/issues/2466)) -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.2/improvements/ibc/2481-remove-deserialize-ibcevent: -------------------------------------------------------------------------------- 1 | - Remove Deserialize from IbcEvent and variants ([#2481]) 2 | 3 | [#2481]: https://github.com/informalsystems/ibc-rs/issues/2481 4 | -------------------------------------------------------------------------------- /.changelog/v1.0.0-rc.2/summary.md: -------------------------------------------------------------------------------- 1 | This is the third release candidate for Hermes v1.0.0 🎉 2 | -------------------------------------------------------------------------------- /.changelog/v1.0.0/breaking-changes/ibc/2542-remove-ibcevent-height.md: -------------------------------------------------------------------------------- 1 | - Remove `height` attribute from `IbcEvent` and its variants 2 | ([#2542](https://github.com/informalsystems/ibc-rs/issues/2542)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.0.0/bug-fixes/ibc/2534-fix-timeout-on-close.md: -------------------------------------------------------------------------------- 1 | - Fix MsgTimeoutOnClose ([#2534](https://github.com/informalsystems/ibc-rs/issues/2534)) -------------------------------------------------------------------------------- /.changelog/v1.0.0/features/ibc-relayer/2479-metric_discovery.md: -------------------------------------------------------------------------------- 1 | - Introduces discovery phase to initialize Prometheus metrics. 2 | ([#2479](https://github.com/informalsystems/ibc-rs/issues/2479)) -------------------------------------------------------------------------------- /.changelog/v1.0.0/improvements/ibc-relayer/2548-runtime-light-client.md: -------------------------------------------------------------------------------- 1 | - Refactor the `ChainEndpoint` trait to expose the light client 2 | functionality directly. Instead of exposing a getter for the 3 | `LightClient` trait, the `ChainEndpoint` trait now defines the 4 | two methods `verify_header` and `check_misbehaviour` directly. 5 | ([#2548](https://github.com/informalsystems/ibc-rs/issues/2548)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/breaking-changes/2677-tendermint-v0.25.0.md: -------------------------------------------------------------------------------- 1 | - Bump tendermint-rs dependencies to v0.25.0 2 | ([#2677](https://github.com/informalsystems/ibc-rs/issues/2677)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/bug-fixes/2667-fix-github-workflow-paths.md: -------------------------------------------------------------------------------- 1 | - Fix incorrect Github workflow trigger paths. 2 | ([#2667](https://github.com/informalsystems/ibc-rs/issues/2667)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.1.0/bug-fixes/2750-update-config-documentation.md: -------------------------------------------------------------------------------- 1 | - Fix comment in `config.toml` to correctly state that the default value 2 | of `clear_on_start` is `true`. 3 | ([#2750](https://github.com/informalsystems/ibc-rs/issues/2750)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/bug-fixes/ibc-relayer/2595-modify-default-max-tx-size.md: -------------------------------------------------------------------------------- 1 | - Set max_tx_size's default value to 180kb instead of 2MB 2 | ([#2595](https://github.com/informalsystems/ibc-rs/issues/2595)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/bug-fixes/ibc-relayer/2670-clear-packets-ordered.md: -------------------------------------------------------------------------------- 1 | Fix several bugs which were preventing Hermes to clear packets on ordered channels 2 | in some specific conditions, as exhibited on the Interchain Security testnet 3 | -------------------------------------------------------------------------------- /.changelog/v1.1.0/bug-fixes/ibc-relayer/2739-fix-decode-header.md: -------------------------------------------------------------------------------- 1 | - Fix how headers are decoded from events 2 | ([#2739](https://github.com/informalsystems/ibc-rs/issues/2739)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/features/ibc-integration-test/2442-evmos-integration-tests.md: -------------------------------------------------------------------------------- 1 | - Added Evmos compatible integration tests 2 | ([#2442](https://github.com/informalsystems/ibc-rs/issues/2442)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/features/ibc-relayer-cli/2187-auto-config.md: -------------------------------------------------------------------------------- 1 | - Add `hermes auto config` CLI command to automatically generate a config file with data 2 | from the chain-registry ([#2187](https://github.com/informalsystems/ibc-rs/issues/2187)) 3 | - `chain_registry.rs` contains functions to generate `Vec` 4 | -------------------------------------------------------------------------------- /.changelog/v1.1.0/features/ibc-relayer-cli/2453-optional-height-flag-for-packet-recv.md: -------------------------------------------------------------------------------- 1 | - Added new optional flag `--packet-data-query-height` to CLI 2 | `hermes tx packet-recv` in order to specify the height at 3 | which the packet data is queried. 4 | ([#2453](https://github.com/informalsystems/ibc-rs/issues/2453)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/features/ibc-relayer-cli/2714-fee-transfer-command.md: -------------------------------------------------------------------------------- 1 | - New command `fee transfer` which transfers tokens with fees 2 | ([#2714](https://github.com/informalsystems/ibc-rs/issues/2714)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/features/ibc-relayer/2187-auto-config.md: -------------------------------------------------------------------------------- 1 | - Add `len()` and `is_empty()` methods to `ChannelFilters` in order to get the number of filters. Useful for testing purposes. 2 | ([#2187](https://github.com/informalsystems/ibc-rs/issues/2187)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.1.0/features/ibc-relayer/2566-extension-options.md: -------------------------------------------------------------------------------- 1 | - Support custom extension options to be able to specify `max_priority_price` for Ethermint dynamic tx fee 2 | ([#2566](https://github.com/informalsystems/ibc-rs/issues/2566)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/2667-remove-proto-crates.md: -------------------------------------------------------------------------------- 1 | - Delete the `ibc-proto` and `ibc-proto-compiler` crates from the repository. 2 | ([#2667](https://github.com/informalsystems/ibc-rs/issues/2667)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/2754-split-gm-out-of-hermes.md: -------------------------------------------------------------------------------- 1 | - Removed `gm` folder and its contents 2 | - Updated the guide to reflect the new repo 3 | - ([#2754](https://github.com/informalsystems/hermes/issues/2754)) 4 | -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/2770-bump-ibc-proto.md: -------------------------------------------------------------------------------- 1 | - Bump `ibc-proto` to v0.21.0 2 | ([#2770](https://github.com/informalsystems/ibc-rs/issues/2770)) 3 | -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/guide/2605-integration-mdbook-templates.md: -------------------------------------------------------------------------------- 1 | - Integration with `mdbook` templates 2 | ([#2605](https://github.com/informalsystems/ibc-rs/issues/2605)) 3 | - New script `auto_gen_templates.sh` to automatically generate templates files and warns users when one of them is updated. It is the responsibility of the users to update the guide when a template file is updated. 4 | - New CI job to check that every template is up-to-date. -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/guide/update-gm.toml-template.md: -------------------------------------------------------------------------------- 1 | - Update gm.toml file for better clarity in reference to the issue in gm repo 2 | https://github.com/informalsystems/gm/issues/2 -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/ibc-relayer-cli/1538-clean-logs.md: -------------------------------------------------------------------------------- 1 | - Clean up the logs emitted by the relayer and add more 2 | structured information to the messages recorded in the logs 3 | ([#1538](https://github.com/informalsystems/ibc-rs/issues/1538)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/ibc-relayer-cli/2653-clear-packets-log.md: -------------------------------------------------------------------------------- 1 | - Log the packets cleared by the `clear packets` command 2 | ([#2653](https://github.com/informalsystems/ibc-rs/issues/2653)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/ibc-relayer-cli/2726-new-keys-balance-flag.md: -------------------------------------------------------------------------------- 1 | - Added a new optional flag, `--denom` to the `hermes keys balance` command in order 2 | to specify for which denomination the balance is queried. A special 3 | value, `all`, can be used to query the balance for all denominations 4 | ([#2726](https://github.com/informalsystems/ibc-rs/issues/2726)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/ibc-relayer-types/2603-less-clone-happy-apis.md: -------------------------------------------------------------------------------- 1 | - Improved `core::ics04_channel` APIs, avoiding poor ergonomics of 2 | reference-to-tuple arguments and inconsistent ownership patterns. 3 | ([#2603](https://github.com/informalsystems/ibc-rs/pull/2603)). 4 | -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/ibc-relayer/2484-no-new-block-conn-chan.md: -------------------------------------------------------------------------------- 1 | - The channel and connection workers do not act needlessly on `NewBlock` events 2 | anymore ([#2484](https://github.com/informalsystems/ibc-rs/issues/2484)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/ibc-relayer/2487-gas-estimation-corner-cases.md: -------------------------------------------------------------------------------- 1 | - Added health-check to warn user if 'gas_multiplier' is smaller than 1.1. 2 | Improved client refresh frequency to depend on 'trusting_period'. 3 | ([#2487](https://github.com/informalsystems/ibc-rs/issues/2487)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/ibc-relayer/2532-compat-0.46.md: -------------------------------------------------------------------------------- 1 | - Bump compatibility with IBC-Go v5 and Cosmos SDK v0.46 2 | ([#2532](https://github.com/informalsystems/ibc-rs/issues/2532)) -------------------------------------------------------------------------------- /.changelog/v1.1.0/improvements/ibc-relayer/2575-tx-size-encoding.md: -------------------------------------------------------------------------------- 1 | - Account for full transaction encoding when batching messages 2 | ([#2575](https://github.com/informalsystems/ibc-rs/issues/2575)) -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | target/ -------------------------------------------------------------------------------- /.github/actions-rs/grcov.yml: -------------------------------------------------------------------------------- 1 | branch: true 2 | ignore-not-existing: true 3 | llvm: true 4 | output-type: lcov 5 | output-file: ./lcov.info 6 | prefix-dir: /home/user/build/ 7 | -------------------------------------------------------------------------------- /.github/markdown-link-check.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignorePatterns": [ 3 | { 4 | "pattern": "^https://crates.io" 5 | }, 6 | { 7 | "pattern": "^https?://localhost" 8 | } 9 | ], 10 | "aliveStatusCodes": [429, 200] 11 | } 12 | -------------------------------------------------------------------------------- /.github/workflows/audit.yaml: -------------------------------------------------------------------------------- 1 | name: Security Audit 2 | on: 3 | schedule: 4 | - cron: '0 0 * * *' 5 | 6 | jobs: 7 | security_audit: 8 | name: Security Audit 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - name: Cache cargo bin 13 | uses: actions/cache@v1 14 | with: 15 | path: ~/.cargo/bin 16 | key: ${{ runner.os }}-cargo-audit-v0.11.2 17 | - uses: actions-rs/audit-check@v1.2.0 18 | with: 19 | token: ${{ secrets.GITHUB_TOKEN }} 20 | -------------------------------------------------------------------------------- /.github/workflows/cargo-doc.yaml: -------------------------------------------------------------------------------- 1 | name: Publish Cargo Doc 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: {} 8 | 9 | jobs: 10 | deploy: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | 15 | - uses: actions-rs/toolchain@v1 16 | with: 17 | toolchain: stable 18 | 19 | - run: cargo doc 20 | 21 | - name: Deploy 22 | if: github.ref == 'refs/heads/master' 23 | uses: peaceiris/actions-gh-pages@v3 24 | with: 25 | deploy_key: ${{ secrets.IBC_RS_DOC_PRIVATE_KEY }} 26 | external_repository: informalsystems/hermes-api-doc 27 | publish_dir: ./target/doc 28 | -------------------------------------------------------------------------------- /.github/workflows/markdown-link-check.yml: -------------------------------------------------------------------------------- 1 | name: Check Markdown links 2 | 3 | on: 4 | schedule: 5 | - cron: '0 0 * * *' 6 | 7 | workflow_dispatch: 8 | 9 | jobs: 10 | md-link-check: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - name: markdown-link-check 15 | uses: gaurav-nelson/github-action-markdown-link-check@1.0.13 16 | with: 17 | config-file: '.github/markdown-link-check.json' 18 | use-quiet-mode: 'yes' 19 | use-verbose-mode: 'yes' 20 | -------------------------------------------------------------------------------- /.github/workflows/scripts.yaml: -------------------------------------------------------------------------------- 1 | name: ShellCheck Scripts 2 | on: 3 | pull_request: 4 | paths: 5 | - scripts/** 6 | push: 7 | branches: master 8 | paths: 9 | - scripts/** 10 | 11 | jobs: 12 | shellcheck: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Run ShellCheck 16 | uses: ludeeus/action-shellcheck@master 17 | with: 18 | scandir: './scripts' 19 | additional_files: 'scripts/dev-env scripts/one-chain scripts/init-hermes' 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | target/ 4 | 5 | # These are backup files generated by rustfmt 6 | **/*.rs.bk 7 | 8 | # Ignore database folders 9 | **/*.db/ 10 | 11 | # Ignore Jetbrains 12 | .idea 13 | 14 | # Ignore VisualStudio 15 | .vscode 16 | 17 | # Ignore chain's data 18 | data 19 | 20 | # Ignore Python artifacts 21 | .mypy_cache/ 22 | __pycache__/ 23 | 24 | # Ignore modelator aritfacts 25 | .modelator 26 | mc.log 27 | 28 | # Ignore OSX .DS_Store file 29 | .DS_Store 30 | -------------------------------------------------------------------------------- /.rustfmt.toml: -------------------------------------------------------------------------------- 1 | max_width = 100 2 | reorder_imports = true 3 | 4 | # nightly only 5 | 6 | # unstable_features = true 7 | # format_strings = false 8 | # comment_width = 100 9 | # wrap_comments = true 10 | -------------------------------------------------------------------------------- /ci/.gitignore: -------------------------------------------------------------------------------- 1 | /gaia/**/* 2 | data/**/* 3 | *.log -------------------------------------------------------------------------------- /ci/no-std-check/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | -------------------------------------------------------------------------------- /ci/release/hermes.Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Used for running hermes in docker containers 3 | # 4 | # Usage: 5 | # docker build . --build-arg TAG=v0.3.0 -t informalsystems/hermes:0.3.0 -f hermes.Dockerfile 6 | 7 | FROM rust:1-buster AS build-env 8 | 9 | ARG TAG 10 | WORKDIR /root 11 | 12 | RUN git clone -b ${TAG} --depth 1 https://github.com/informalsystems/hermes \ 13 | && cd hermes \ 14 | && cargo build --release 15 | 16 | FROM ubuntu:rolling 17 | LABEL maintainer="hello@informal.systems" 18 | RUN useradd -m hermes -s /bin/bash 19 | WORKDIR /home/hermes 20 | USER hermes:hermes 21 | ENTRYPOINT ["/usr/bin/hermes"] 22 | 23 | COPY --chown=0:0 --from=build-env /root/hermes/target/release/hermes /usr/bin/hermes 24 | -------------------------------------------------------------------------------- /clippy.toml: -------------------------------------------------------------------------------- 1 | msrv = "1.60.0" 2 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | codecov: 2 | require_ci_to_pass: yes 3 | allow_coverage_offsets: true 4 | 5 | ignore: 6 | 7 | coverage: 8 | precision: 1 9 | round: down 10 | range: "70...100" 11 | 12 | status: 13 | project: true 14 | patch: true 15 | changes: true 16 | 17 | parsers: 18 | gcov: 19 | branch_detection: 20 | conditional: yes 21 | loop: yes 22 | method: yes 23 | macro: no 24 | -------------------------------------------------------------------------------- /crates/chain-registry/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod asset_list; 2 | pub mod chain; 3 | pub mod constants; 4 | pub mod error; 5 | pub mod fetchable; 6 | pub mod formatter; 7 | pub mod paths; 8 | pub mod querier; 9 | -------------------------------------------------------------------------------- /crates/relayer-cli/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | 4 | *.sh 5 | *.db 6 | -------------------------------------------------------------------------------- /crates/relayer-cli/src/commands/config.rs: -------------------------------------------------------------------------------- 1 | //! `config` subcommand 2 | 3 | use abscissa_core::clap::Parser; 4 | use abscissa_core::{Command, Runnable}; 5 | 6 | mod auto; 7 | mod validate; 8 | 9 | /// `config` subcommand 10 | #[derive(Command, Debug, Parser, Runnable)] 11 | pub enum ConfigCmd { 12 | /// Validate the relayer configuration 13 | Validate(validate::ValidateCmd), 14 | 15 | ///Automatically generate a configuration file by fetching data from the chain-registry. If a pair of chains exists in the _IBC folder of the chain-registry then a corresponding packet filter is added to the configuration 16 | Auto(auto::AutoCmd), 17 | } 18 | -------------------------------------------------------------------------------- /crates/relayer-cli/src/commands/keys.rs: -------------------------------------------------------------------------------- 1 | //! `keys` subcommand 2 | use abscissa_core::clap::Parser; 3 | use abscissa_core::{Command, Runnable}; 4 | 5 | mod add; 6 | mod balance; 7 | mod delete; 8 | mod list; 9 | 10 | /// `keys` subcommand 11 | #[derive(Command, Debug, Parser, Runnable)] 12 | pub enum KeysCmd { 13 | /// Adds key to a configured chain or restores a key to a configured chain using a mnemonic 14 | Add(add::KeysAddCmd), 15 | 16 | /// Delete key(s) from a configured chain 17 | Delete(delete::KeysDeleteCmd), 18 | 19 | /// List keys configured on a chain 20 | List(list::KeysListCmd), 21 | 22 | /// Query balance for a key from a configured chain. If no key is given, the key is retrieved from the configuration file. 23 | Balance(balance::KeyBalanceCmd), 24 | } 25 | -------------------------------------------------------------------------------- /crates/relayer-cli/src/commands/query/transfer.rs: -------------------------------------------------------------------------------- 1 | //! `query transfer` subcommand 2 | 3 | use abscissa_core::clap::Parser; 4 | use abscissa_core::{Command, Runnable}; 5 | 6 | mod denom_trace; 7 | 8 | /// `query transfer` subcommand 9 | #[derive(Command, Debug, Parser, Runnable)] 10 | pub enum TransferCmd { 11 | /// Query the denomination trace info from a trace hash 12 | DenomTrace(denom_trace::DenomTraceCmd), 13 | } 14 | -------------------------------------------------------------------------------- /crates/relayer-cli/src/commands/query/tx.rs: -------------------------------------------------------------------------------- 1 | //! `query tx` subcommand 2 | 3 | use abscissa_core::clap::Parser; 4 | use abscissa_core::{Command, Runnable}; 5 | 6 | mod events; 7 | 8 | /// `query tx` subcommand 9 | #[derive(Command, Debug, Parser, Runnable)] 10 | pub enum QueryTxCmd { 11 | /// Query the events emitted by transaction 12 | Events(events::QueryTxEventsCmd), 13 | } 14 | -------------------------------------------------------------------------------- /crates/relayer-cli/src/commands/update.rs: -------------------------------------------------------------------------------- 1 | //! `update` subcommand 2 | 3 | use abscissa_core::clap::Parser; 4 | use abscissa_core::{Command, Runnable}; 5 | 6 | use crate::commands::tx::client::TxUpdateClientCmd; 7 | 8 | #[derive(Command, Debug, Parser, Runnable)] 9 | pub enum UpdateCmds { 10 | /// Update an IBC client 11 | Client(TxUpdateClientCmd), 12 | } 13 | -------------------------------------------------------------------------------- /crates/relayer-cli/src/commands/upgrade.rs: -------------------------------------------------------------------------------- 1 | //! `upgrade` subcommand 2 | 3 | use abscissa_core::clap::Parser; 4 | use abscissa_core::{Command, Runnable}; 5 | 6 | use crate::commands::tx::client::{TxUpgradeClientCmd, TxUpgradeClientsCmd}; 7 | 8 | #[derive(Command, Debug, Parser, Runnable)] 9 | pub enum UpgradeCmds { 10 | /// Upgrade an IBC client 11 | Client(TxUpgradeClientCmd), 12 | 13 | /// Upgrade all IBC clients that target a specific chain 14 | Clients(TxUpgradeClientsCmd), 15 | } 16 | -------------------------------------------------------------------------------- /crates/relayer-cli/src/commands/version.rs: -------------------------------------------------------------------------------- 1 | //! `version` subcommand 2 | 3 | use super::CliCmd; 4 | use abscissa_core::clap::Parser; 5 | use abscissa_core::{Command, Runnable}; 6 | 7 | /// `version` subcommand 8 | /// 9 | /// This subcommand is implemented for backward compatibility reasons. 10 | /// Its behavior should be the same as that of the `--version` flag which 11 | /// is handled internally by clap. 12 | #[derive(Command, Debug, Default, Parser)] 13 | #[clap(hide = true)] 14 | pub struct VersionCmd {} 15 | 16 | impl Runnable for VersionCmd { 17 | /// Print version message 18 | fn run(&self) { 19 | println!("{} {}", CliCmd::name(), clap::crate_version!()); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /crates/relayer-cli/src/prelude.rs: -------------------------------------------------------------------------------- 1 | //! Application-local prelude. 2 | //! 3 | //! Conveniently import types/functions/macros 4 | //! which are generally useful and should be available in every module with 5 | //! `use crate::prelude::*; 6 | 7 | /// Abscissa core prelude 8 | pub use abscissa_core::prelude::*; 9 | 10 | /// Application state accessors 11 | pub use crate::application::{app_config, app_reader}; 12 | -------------------------------------------------------------------------------- /crates/relayer-rest/src/config.rs: -------------------------------------------------------------------------------- 1 | use core::fmt::{Display, Error as FmtError, Formatter}; 2 | 3 | /// REST server configuration 4 | #[derive(Clone, Debug)] 5 | pub struct Config { 6 | pub host: String, 7 | pub port: u16, 8 | } 9 | 10 | impl Config { 11 | pub fn new(host: String, port: u16) -> Self { 12 | Self { host, port } 13 | } 14 | 15 | pub fn address(&self) -> (&str, u16) { 16 | (&self.host, self.port) 17 | } 18 | } 19 | 20 | impl Display for Config { 21 | fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), FmtError> { 22 | write!(f, "{}:{}", self.host, self.port) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /crates/relayer-rest/src/lib.rs: -------------------------------------------------------------------------------- 1 | #[macro_use] 2 | extern crate rouille; 3 | 4 | mod config; 5 | pub use config::Config; 6 | 7 | pub mod server; 8 | 9 | pub(crate) mod handle; 10 | -------------------------------------------------------------------------------- /crates/relayer-types/src/applications/ics29_fee/mod.rs: -------------------------------------------------------------------------------- 1 | //! The implementation of the ICS 29 fee payment [spec](https://github.com/cosmos/ibc/blob/main/spec/app/ics-029-fee-payment/README.md). 2 | //! Enables an incentivization layer for relayers such that relayer operators are rewarded 3 | //! for successfully relaying packets. 4 | //! 5 | //! The documentation for this module makes use of some terminology, which is defined below: 6 | //! 1. Forward relayer: The relayer that submits the `recv_packet` message for a given packet. 7 | //! 2. Reverse relayer: The relayer that submits the `ack_packet` message for a given packet. 8 | //! 3. Timeout relayer: The relayer that submits the `timeout_packet` message for a given packet. 9 | 10 | pub mod error; 11 | pub mod events; 12 | pub mod msgs; 13 | pub mod packet_fee; 14 | -------------------------------------------------------------------------------- /crates/relayer-types/src/applications/ics29_fee/msgs/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod pay_packet; 2 | pub mod pay_packet_async; 3 | pub mod register_payee; 4 | -------------------------------------------------------------------------------- /crates/relayer-types/src/applications/mod.rs: -------------------------------------------------------------------------------- 1 | //! Various packet encoding semantics which underpin the various types of transactions. 2 | 3 | pub mod ics29_fee; 4 | pub mod transfer; 5 | -------------------------------------------------------------------------------- /crates/relayer-types/src/applications/transfer/msgs.rs: -------------------------------------------------------------------------------- 1 | pub mod transfer; 2 | -------------------------------------------------------------------------------- /crates/relayer-types/src/bigint.rs: -------------------------------------------------------------------------------- 1 | pub use primitive_types::U256; 2 | -------------------------------------------------------------------------------- /crates/relayer-types/src/clients/ics07_tendermint/mod.rs: -------------------------------------------------------------------------------- 1 | //! ICS 07: Tendermint Client implements a client verification algorithm for blockchains which use 2 | //! the Tendermint consensus algorithm. 3 | 4 | pub mod client_state; 5 | pub mod consensus_state; 6 | pub mod error; 7 | pub mod header; 8 | pub mod misbehaviour; 9 | -------------------------------------------------------------------------------- /crates/relayer-types/src/clients/mod.rs: -------------------------------------------------------------------------------- 1 | //! Implementations of client verification algorithms for specific types of chains. 2 | 3 | pub mod ics07_tendermint; 4 | -------------------------------------------------------------------------------- /crates/relayer-types/src/core/ics02_client/mod.rs: -------------------------------------------------------------------------------- 1 | //! ICS 02: Client implementation for verifying remote IBC-enabled chains. 2 | 3 | pub mod client_state; 4 | pub mod client_type; 5 | pub mod consensus_state; 6 | pub mod error; 7 | pub mod events; 8 | pub mod header; 9 | pub mod height; 10 | pub mod misbehaviour; 11 | pub mod msgs; 12 | pub mod trust_threshold; 13 | -------------------------------------------------------------------------------- /crates/relayer-types/src/core/ics03_connection/mod.rs: -------------------------------------------------------------------------------- 1 | //! ICS 03: Connection implementation for connecting a client 2 | //! on the local chain with a client on a remote chain. 3 | 4 | pub mod connection; 5 | pub mod error; 6 | pub mod events; 7 | pub mod msgs; 8 | pub mod version; 9 | -------------------------------------------------------------------------------- /crates/relayer-types/src/core/ics04_channel/mod.rs: -------------------------------------------------------------------------------- 1 | //! ICS 04: Channel implementation that facilitates communication between 2 | //! applications and the chains those applications are built upon. 3 | 4 | pub mod channel; 5 | pub mod commitment; 6 | pub mod error; 7 | pub mod events; 8 | pub mod msgs; 9 | pub mod packet; 10 | pub mod packet_id; 11 | pub mod timeout; 12 | pub mod version; 13 | -------------------------------------------------------------------------------- /crates/relayer-types/src/core/ics23_commitment/mock.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /crates/relayer-types/src/core/ics23_commitment/mod.rs: -------------------------------------------------------------------------------- 1 | //! ICS 23: Commitment implementation of a cryptographic scheme that verifies 2 | //! state transitions between chains. 3 | 4 | pub mod commitment; 5 | pub mod error; 6 | pub mod merkle; 7 | pub mod mock; 8 | pub mod specs; 9 | -------------------------------------------------------------------------------- /crates/relayer-types/src/core/ics24_host/mod.rs: -------------------------------------------------------------------------------- 1 | //! ICS 24: Host defines the minimal set of interfaces that a 2 | //! state machine hosting an IBC-enabled chain must implement. 3 | 4 | pub use path::{ClientUpgradePath, Path, IBC_QUERY_PATH, SDK_UPGRADE_QUERY_PATH}; 5 | 6 | pub mod error; 7 | pub mod identifier; 8 | pub mod path; 9 | pub mod validate; 10 | -------------------------------------------------------------------------------- /crates/relayer-types/src/core/ics26_routing/mod.rs: -------------------------------------------------------------------------------- 1 | //! ICS 26: Routing module keeps a lookup table of modules for looking 2 | //! the appropriate module to relay to when a packet is received. 3 | 4 | pub mod error; 5 | pub mod msgs; 6 | -------------------------------------------------------------------------------- /crates/relayer-types/src/core/mod.rs: -------------------------------------------------------------------------------- 1 | //! The designs and logic pertaining to the transport, authentication, and 2 | //! ordering layers of the IBC protocol. 3 | 4 | pub mod ics02_client; 5 | pub mod ics03_connection; 6 | pub mod ics04_channel; 7 | pub mod ics23_commitment; 8 | pub mod ics24_host; 9 | pub mod ics26_routing; 10 | -------------------------------------------------------------------------------- /crates/relayer-types/src/dynamic_typing.rs: -------------------------------------------------------------------------------- 1 | use core::any::Any; 2 | 3 | pub trait AsAny: Any { 4 | fn as_any(&self) -> &dyn Any; 5 | } 6 | 7 | impl AsAny for M { 8 | fn as_any(&self) -> &dyn Any { 9 | self 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /crates/relayer-types/src/keys.rs: -------------------------------------------------------------------------------- 1 | pub const MODULE_NAME: &str = "ibc"; 2 | pub const STORE_KEY: &str = MODULE_NAME; 3 | pub const QUERIER_ROUTE: &str = MODULE_NAME; 4 | pub const ROUTER_KEY: &str = MODULE_NAME; 5 | -------------------------------------------------------------------------------- /crates/relayer-types/src/mock/mod.rs: -------------------------------------------------------------------------------- 1 | //! Implementation of mocks for context, host chain, and client. 2 | 3 | pub mod client_state; 4 | pub mod consensus_state; 5 | pub mod header; 6 | pub mod host; 7 | pub mod misbehaviour; 8 | -------------------------------------------------------------------------------- /crates/relayer-types/src/prelude.rs: -------------------------------------------------------------------------------- 1 | pub use core::prelude::v1::*; 2 | 3 | // Re-export according to alloc::prelude::v1 because it is not yet stabilized 4 | // https://doc.rust-lang.org/src/alloc/prelude/v1.rs.html 5 | pub use alloc::borrow::ToOwned; 6 | pub use alloc::boxed::Box; 7 | pub use alloc::string::{String, ToString}; 8 | pub use alloc::vec::Vec; 9 | 10 | pub use alloc::format; 11 | pub use alloc::vec; 12 | 13 | // Those are exported by default in the std prelude in Rust 2021 14 | pub use core::convert::{TryFrom, TryInto}; 15 | pub use core::iter::FromIterator; 16 | -------------------------------------------------------------------------------- /crates/relayer-types/src/relayer/ics18_relayer/mod.rs: -------------------------------------------------------------------------------- 1 | //! ICS 18: Relayer contains utilities for testing `ibc` against the Hermes relayer. 2 | 3 | pub mod context; 4 | pub mod error; 5 | -------------------------------------------------------------------------------- /crates/relayer-types/src/relayer/mod.rs: -------------------------------------------------------------------------------- 1 | //! Utilities for testing the `ibc` crate against the [Hermes IBC relayer][relayer-repo]. 2 | //! 3 | //! [relayer-repo]: https://github.com/informalsystems/hermes/tree/master/crates/relayer 4 | 5 | pub mod ics18_relayer; 6 | -------------------------------------------------------------------------------- /crates/relayer-types/src/utils/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod pretty; 2 | -------------------------------------------------------------------------------- /crates/relayer-types/tests/support/query/serialization/consensus_state.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 0, 3 | "log": "", 4 | "info": "", 5 | "index": "0", 6 | "key": "Y29uc2Vuc3VzU3RhdGUvaWJjb25lY2xpZW50LzIy", 7 | "value": "wAE7xH38CgsIzLyC9AUQyLufJBImzXAxMQogavkPRiTGTZVjEAqT4pLlKPmyTcziso2UrYVU/KnU0EYYFiKCAQo/ChT26opfBMJw1ORvd6zC2b3pAKYCgRIlFiTeZCBdmybLcqCWKo8EBc9ZOM+rYKVUx4QmxhMYv93tBdcNDxhkEj8KFPbqil8EwnDU5G93rMLZvekApgKBEiUWJN5kIF2bJstyoJYqjwQFz1k4z6tgpVTHhCbGExi/3e0F1w0PGGQ=", 8 | "proof": null, 9 | "height": "60295", 10 | "codespace": "" 11 | } -------------------------------------------------------------------------------- /crates/relayer/src/account.rs: -------------------------------------------------------------------------------- 1 | //! Data structures related to the accounts used by the relayer. 2 | 3 | use serde::{Deserialize, Serialize}; 4 | 5 | /// The balance for a specific denom 6 | #[derive(Clone, Debug, Serialize, Deserialize)] 7 | pub struct Balance { 8 | /// The amount of coins in the account, as a string to allow for large amounts 9 | pub amount: String, 10 | /// The denomination for that coin 11 | pub denom: String, 12 | } 13 | -------------------------------------------------------------------------------- /crates/relayer/src/chain/cosmos/types/events/fee.rs: -------------------------------------------------------------------------------- 1 | use ibc_relayer_types::applications::ics29_fee::events::IncentivizedPacket; 2 | use ibc_relayer_types::events::{IbcEvent, IbcEventType}; 3 | use tendermint::abci::Event as AbciEvent; 4 | 5 | pub fn try_from_tx(event: &AbciEvent) -> Option { 6 | let event_type = event.type_str.parse::().ok()?; 7 | 8 | if let IbcEventType::IncentivizedPacket = event_type { 9 | let event = IncentivizedPacket::try_from(&event.attributes).ok()?; 10 | Some(IbcEvent::IncentivizedPacket(event)) 11 | } else { 12 | None 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /crates/relayer/src/chain/cosmos/types/events/mod.rs: -------------------------------------------------------------------------------- 1 | use ibc_relayer_types::Height; 2 | use tendermint::abci::Event as AbciEvent; 3 | 4 | use crate::event::{ibc_event_try_from_abci_event, IbcEventWithHeight}; 5 | 6 | pub mod channel; 7 | pub mod fee; 8 | 9 | pub fn from_tx_response_event(height: Height, event: &AbciEvent) -> Option { 10 | ibc_event_try_from_abci_event(event) 11 | .ok() 12 | .map(|ibc_event| IbcEventWithHeight::new(ibc_event, height)) 13 | } 14 | -------------------------------------------------------------------------------- /crates/relayer/src/chain/cosmos/types/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod account; 2 | pub mod config; 3 | pub mod events; 4 | pub mod gas; 5 | pub mod tx; 6 | -------------------------------------------------------------------------------- /crates/relayer/src/chain/cosmos/types/tx.rs: -------------------------------------------------------------------------------- 1 | use ibc_proto::cosmos::tx::v1beta1::{AuthInfo, TxBody}; 2 | use tendermint_rpc::endpoint::broadcast::tx_sync::Response; 3 | 4 | use crate::event::IbcEventWithHeight; 5 | 6 | pub struct SignedTx { 7 | pub body: TxBody, 8 | pub body_bytes: Vec, 9 | pub auth_info: AuthInfo, 10 | pub auth_info_bytes: Vec, 11 | pub signatures: Vec>, 12 | } 13 | 14 | pub enum TxStatus { 15 | Pending { message_count: usize }, 16 | ReceivedResponse, 17 | } 18 | 19 | pub struct TxSyncResult { 20 | // the broadcast_tx_sync response 21 | pub response: Response, 22 | // the events generated by a Tx once executed 23 | pub events: Vec, 24 | pub status: TxStatus, 25 | } 26 | -------------------------------------------------------------------------------- /crates/relayer/src/channel/version.rs: -------------------------------------------------------------------------------- 1 | //! Helper module for the relayer channel logic. 2 | //! 3 | //! Provides support for resolving the appropriate 4 | //! channel version to be used in a channel open 5 | //! handshake. 6 | 7 | use ibc_relayer_types::{applications::transfer, core::ics24_host::identifier::PortId}; 8 | 9 | pub use ibc_relayer_types::core::ics04_channel::version::Version; 10 | 11 | /// Returns the default channel version, depending on the the given [`PortId`]. 12 | pub fn default_by_port(port_id: &PortId) -> Option { 13 | if port_id.as_str() == transfer::PORT_ID_STR { 14 | // https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#forwards-compatibility 15 | Some(Version::ics20()) 16 | } else { 17 | None 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /crates/relayer/src/config/error.rs: -------------------------------------------------------------------------------- 1 | use flex_error::{define_error, TraceError}; 2 | 3 | define_error! { 4 | Error { 5 | Io 6 | [ TraceError ] 7 | |_| { "config I/O error" }, 8 | 9 | Decode 10 | [ TraceError ] 11 | |_| { "invalid configuration" }, 12 | 13 | Encode 14 | [ TraceError ] 15 | |_| { "invalid configuration" }, 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /crates/relayer/src/denom.rs: -------------------------------------------------------------------------------- 1 | //! Data structures related to the denomination of coins used by the relayer. 2 | 3 | use serde::{Deserialize, Serialize}; 4 | 5 | /// The denom trace 6 | #[derive(Clone, Debug, Serialize, Deserialize)] 7 | pub struct DenomTrace { 8 | /// The chain of port/channel identifiers used for tracing the source of the coin. 9 | pub path: String, 10 | /// The base denomination for that coin 11 | pub base_denom: String, 12 | } 13 | -------------------------------------------------------------------------------- /crates/relayer/src/supervisor/cmd.rs: -------------------------------------------------------------------------------- 1 | use crossbeam_channel::Sender; 2 | 3 | use super::dump_state::SupervisorState; 4 | 5 | #[derive(Clone, Debug)] 6 | pub enum SupervisorCmd { 7 | DumpState(Sender), 8 | } 9 | -------------------------------------------------------------------------------- /crates/relayer/src/util.rs: -------------------------------------------------------------------------------- 1 | mod block_on; 2 | pub use block_on::block_on; 3 | 4 | pub mod diff; 5 | pub mod iter; 6 | pub mod lock; 7 | pub mod pretty; 8 | pub mod queue; 9 | pub mod retry; 10 | pub mod stream; 11 | pub mod task; 12 | -------------------------------------------------------------------------------- /crates/relayer/src/util/block_on.rs: -------------------------------------------------------------------------------- 1 | //! Utility function to execute a future synchronously 2 | 3 | use futures::Future; 4 | 5 | /// Spawns a new tokio runtime and use it to block on the given future. 6 | pub fn block_on(future: F) -> F::Output { 7 | tokio::runtime::Builder::new_current_thread() 8 | .enable_all() 9 | .build() 10 | .unwrap() 11 | .block_on(future) 12 | } 13 | -------------------------------------------------------------------------------- /crates/relayer/src/util/iter.rs: -------------------------------------------------------------------------------- 1 | pub trait SplitResults: Iterator { 2 | fn split_results(self) -> (Vec, Vec) 3 | where 4 | Self: Iterator> + Sized, 5 | { 6 | let mut oks = vec![]; 7 | let mut errs = vec![]; 8 | 9 | for item in self { 10 | match item { 11 | Ok(ok) => oks.push(ok), 12 | Err(err) => errs.push(err), 13 | } 14 | } 15 | 16 | (oks, errs) 17 | } 18 | } 19 | 20 | impl SplitResults for T where T: Iterator {} 21 | -------------------------------------------------------------------------------- /crates/relayer/tests/config/fixtures/relayer-seed.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "relayer-584b9db9", 3 | "type": "local", 4 | "address": "cosmos1dvu2zm4vzma30q403d0ezww3wpl7wcpp0nhcph", 5 | "pubkey": "{\"@type\":\"/cosmos.crypto.secp256k1.PubKey\",\"key\":\"A5W0C7iEAuonX56sR81PiwaKTE0GvZlCYuGwHTMpWJo+\"}", 6 | "mnemonic": "such walnut usual noble image raise cabin suspect combine key absurd detail present bless yard grief amazing slam brown donate fabric opera desk minor" 7 | } -------------------------------------------------------------------------------- /crates/telemetry/src/path_identifier.rs: -------------------------------------------------------------------------------- 1 | /// Structure used by the telemetry in order to define a UID 2 | /// to track the SendPacket and WriteAcknowledgement and Timeouts for a given 3 | /// chain, channel and port. 4 | #[derive(Debug, Hash, PartialEq, Eq)] 5 | pub struct PathIdentifier { 6 | chain_id: String, 7 | channel_id: String, 8 | port_id: String, 9 | } 10 | 11 | impl PathIdentifier { 12 | pub fn new(chain_id: String, channel_id: String, port_id: String) -> Self { 13 | Self { 14 | chain_id, 15 | channel_id, 16 | port_id, 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /docs/architecture/assets/IBC_client_heights.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/docs/architecture/assets/IBC_client_heights.jpeg -------------------------------------------------------------------------------- /docs/architecture/assets/IBC_conn_handshake_relay.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/docs/architecture/assets/IBC_conn_handshake_relay.jpeg -------------------------------------------------------------------------------- /docs/architecture/assets/IBC_relayer.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/docs/architecture/assets/IBC_relayer.jpeg -------------------------------------------------------------------------------- /docs/architecture/assets/IBC_relayer_threads.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/docs/architecture/assets/IBC_relayer_threads.jpeg -------------------------------------------------------------------------------- /docs/architecture/assets/ibc-rs-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/docs/architecture/assets/ibc-rs-layout.png -------------------------------------------------------------------------------- /docs/architecture/assets/relayer-v0-arch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/docs/architecture/assets/relayer-v0-arch.jpg -------------------------------------------------------------------------------- /docs/architecture/assets/relayer-v0-link.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/docs/architecture/assets/relayer-v0-link.jpeg -------------------------------------------------------------------------------- /docs/spec/README.md: -------------------------------------------------------------------------------- 1 | # Specification and verification of IBC protocols 2 | 3 | * [tla](./tla) comprises TLA+ specification for the IBC specification. 4 | 5 | * [connection-handshake](./connection-handshake) [Deprecated] contains English and TLA+ specifications for the IBC Connection Handshake Protocol (ICS 003). 6 | 7 | * [relayer](./relayer) contains English specification of the relayer. 8 | -------------------------------------------------------------------------------- /docs/spec/connection-handshake/CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/docs/spec/connection-handshake/CHANGELOG.md -------------------------------------------------------------------------------- /docs/spec/tla/client/MC_SingleChain.tla: -------------------------------------------------------------------------------- 1 | --------------------------- MODULE MC_SingleChain --------------------------- 2 | 3 | MaxHeight == 4 4 | NrClientsChainA == 2 5 | ClientIDsChainA == {"B1", "B2"} 6 | 7 | VARIABLES 8 | \* @type: CHAINSTORE; 9 | chainAstore, \* store of ChainA 10 | \* @type: Set(DATAGRAM); 11 | datagramsChainA, \* set of datagrams incoming to ChainA 12 | \* @type: Str -> [created: Bool, updated: Bool]; 13 | history \* history variable 14 | 15 | INSTANCE ICS02SingleChainEnvironment 16 | 17 | ============================================================================= 18 | -------------------------------------------------------------------------------- /docs/spec/tla/client/MC_TwoChains.tla: -------------------------------------------------------------------------------- 1 | ---------------------------- MODULE MC_TwoChains ---------------------------- 2 | 3 | MaxHeight == 4 4 | NrClientsChainA == 2 5 | NrClientsChainB == 2 6 | ClientIDsChainA == {"B1", "B2"} 7 | ClientIDsChainB == {"A1", "A2"} 8 | 9 | VARIABLES 10 | \* @type: CHAINSTORE; 11 | chainAstore, \* store of ChainA 12 | \* @type: CHAINSTORE; 13 | chainBstore, \* store of ChainB 14 | \* @type: Set(DATAGRAM); 15 | datagramsChainA, \* set of datagrams incoming to ChainA 16 | \* @type: Set(DATAGRAM); 17 | datagramsChainB, \* set of datagrams incoming to ChainB 18 | \* @type: Str -> [created: Bool, updated: Bool]; 19 | history \* history variable 20 | 21 | INSTANCE ICS02TwoChainsEnvironment 22 | ============================================================================= -------------------------------------------------------------------------------- /docs/spec/tla/fungible-token-transfer/IBCTokenTransfer.cfg: -------------------------------------------------------------------------------- 1 | CONSTANTS 2 | MaxHeight = 5 3 | MaxPacketSeq = 5 4 | MaxBalance = 5 5 | NativeDenominationChainA = "atom" 6 | NativeDenominationChainB = "eth" 7 | 8 | INIT Init 9 | NEXT Next 10 | 11 | INVARIANTS 12 | TypeOK 13 | ICS20Inv 14 | 15 | PROPERTIES 16 | ICS20Prop -------------------------------------------------------------------------------- /docs/spec/tla/ibc-core/IBCCore.cfg: -------------------------------------------------------------------------------- 1 | CONSTANTS 2 | MaxHeight = 2 3 | MaxVersion = 1 4 | MaxPacketSeq = 1 5 | ClientDatagramsRelayer1 = TRUE 6 | ClientDatagramsRelayer2 = FALSE 7 | ConnectionDatagramsRelayer1 = TRUE 8 | ConnectionDatagramsRelayer2 = FALSE 9 | ChannelDatagramsRelayer1 = TRUE 10 | ChannelDatagramsRelayer2 = FALSE 11 | PacketDatagramsRelayer1 = TRUE 12 | PacketDatagramsRelayer2 = FALSE 13 | ChannelOrdering = "UNORDERED" 14 | 15 | INIT Init 16 | NEXT Next 17 | 18 | INVARIANTS 19 | TypeOK 20 | IBCInv 21 | 22 | \* PROPERTIES 23 | \* IBCSafety 24 | \* IBCDelivery -------------------------------------------------------------------------------- /docs/spec/tla/packet-delay/IBCPacketDelay.cfg: -------------------------------------------------------------------------------- 1 | CONSTANTS 2 | MaxHeight = 3 3 | ChannelOrdering = "UNORDERED" 4 | MaxPacketSeq = 1 5 | MaxDelay = 1 6 | 7 | INIT Init 8 | NEXT Next 9 | 10 | INVARIANTS 11 | TypeOK 12 | Inv -------------------------------------------------------------------------------- /e2e/README.md: -------------------------------------------------------------------------------- 1 | 2 | # End-to-end tests for Hermes 3 | 4 | This folder contains end-to-end tests for Hermes, written in Python. 5 | 6 | Unlike the Rust-based integration tests which hook into the relayer API, 7 | this test suite calls the `hermes` binary for setting up clients, 8 | connections and channels, and perform token transfers. 9 | 10 | ## Usage 11 | 12 | To run the end-to-end tests defined in this folder, run the following 13 | command from the root of the repository: 14 | 15 | ```bash 16 | $ cargo test -p ibc-integration-test -- python_end_to_end_tests 17 | ``` 18 | 19 | -------------------------------------------------------------------------------- /e2e/e2e/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/e2e/e2e/__init__.py -------------------------------------------------------------------------------- /e2e/e2e/relayer.py: -------------------------------------------------------------------------------- 1 | 2 | from subprocess import Popen 3 | import logging as l 4 | 5 | from .cmd import Config 6 | 7 | 8 | def start(c: Config) -> Popen: 9 | full_cmd = f'{c.relayer_cmd} --config {c.config_file} --json start'.split(' ') 10 | l.debug(' '.join(full_cmd)) 11 | return Popen(full_cmd) 12 | -------------------------------------------------------------------------------- /e2e/pyrightconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /guide/.gitignore: -------------------------------------------------------------------------------- 1 | book 2 | -------------------------------------------------------------------------------- /guide/book.toml: -------------------------------------------------------------------------------- 1 | [book] 2 | authors = ["Informal Systems Inc."] 3 | language = "en" 4 | multilingual = false 5 | src = "src" 6 | title = "Hermes (IBC Relayer CLI) Documentation" 7 | 8 | [preprocessor.mermaid] 9 | command = "mdbook-mermaid" 10 | 11 | [preprocessor.toc] 12 | command = "mdbook-toc" 13 | renderer = ["html"] 14 | 15 | [output.html] 16 | additional-js = ["mermaid.min.js", "mermaid-init.js"] 17 | 18 | # Uncomment to trigger the link check 19 | # [output.linkcheck] 20 | 21 | [preprocessor.template] 22 | 23 | -------------------------------------------------------------------------------- /guide/mermaid-init.js: -------------------------------------------------------------------------------- 1 | // Adapt Mermaid theme to rustdoc theme. 2 | // https://github.com/mersinvald/aquamarine/blob/ce24cd6e3a84e4f80a60c21e218b9c6f26b001fa/src/attrs.rs#L89-L101 3 | 4 | function get_mermaid_theme() { 5 | let is_dark = /.*(dark|coal|navy|ayu).*/.test(document.documentElement.className); 6 | if (is_dark) { 7 | return 'dark'; 8 | } else { 9 | return 'default'; 10 | } 11 | } 12 | 13 | mermaid.initialize({ 14 | startOnLoad: true, 15 | theme: get_mermaid_theme() 16 | }); 17 | -------------------------------------------------------------------------------- /guide/src/CNAME: -------------------------------------------------------------------------------- 1 | hermes.informal.systems -------------------------------------------------------------------------------- /guide/src/advanced/index.md: -------------------------------------------------------------------------------- 1 | # Advanced 2 | 3 | Acquire advanced knowledges about `hermes`. In this section, we present a summary of the Hermes' features compared to other relayer implementations, and we provide general guidelines for troubleshooting. 4 | 5 | --- 6 | 7 | ## Sections 8 | 9 | - **[Features](./features.md)** 10 | * Learn about Hermes' features and how it compares to another relayer implementation. 11 | 12 | - **[Troubleshooting](./troubleshooting/index.md)** 13 | * Learn the general guidelines regarding troubleshooting. -------------------------------------------------------------------------------- /guide/src/documentation/commands/relaying/index.md: -------------------------------------------------------------------------------- 1 | # Relaying 2 | This section describes the types of relaying that hermes can perform. 3 | 4 | Hermes can send transactions triggered by IBC events. It currently handles channel handshake and packet events: 5 | - [packets messages only](./packets.md#packet-relaying) 6 | - [channel and packet messages](./handshakes.md) 7 | 8 | ## The `start` Command 9 | 10 | The `start` command can be used to start Hermes in IBC event listen mode. 11 | 12 | ```shell 13 | {{#include ../../../templates/help_templates/start.md}} 14 | ``` 15 | 16 | As described in next subsections, the type of relaying can be configured in the `global` section of the configuration file, by specifying different values in `strategy` field. 17 | -------------------------------------------------------------------------------- /guide/src/documentation/commands/upgrade/index.md: -------------------------------------------------------------------------------- 1 | # Client Upgrade 2 | 3 | ## Client Upgrade Command 4 | 5 | Use the `upgrade client` command to upgrade a client after a chain upgrade. 6 | 7 | ```shell 8 | {{#include ../../../templates/help_templates/upgrade/client.md}} 9 | ``` 10 | 11 | __Example__ 12 | 13 | Here is [an example](./test.md) of a chain upgrade proposal submission and client upgrade. 14 | -------------------------------------------------------------------------------- /guide/src/documentation/configuration/description.md: -------------------------------------------------------------------------------- 1 | # Description of the parameters 2 | 3 | This page provides a full example of a configuration file with two chains configured: 4 | 5 | >__NOTE__: Visit the [Relaying](../commands/relaying/index.md) section to learn more about Hermes' modes. 6 | 7 | ```toml 8 | {{#include ../../../../config.toml}} 9 | ``` 10 | -------------------------------------------------------------------------------- /guide/src/documentation/configuration/index.md: -------------------------------------------------------------------------------- 1 | # Configuration 2 | 3 | This section includes everything you need to know to configure Hermes. 4 | 5 | --- 6 | 7 | ## Sections 8 | 9 | * **[Configure Hermes](./configure-hermes.md)** 10 | * Learn how to configure Hermes and some supported features. 11 | 12 | * **[Description of the parameters](./description.md)** 13 | * Detailed description of every parameter of Hermes -------------------------------------------------------------------------------- /guide/src/documentation/example-config.md: -------------------------------------------------------------------------------- 1 | # Example Configuration File 2 | 3 | Here is a full example of a configuration file with two chains configured: 4 | 5 | ```toml 6 | {{#include ../../../config.toml}} 7 | ``` 8 | -------------------------------------------------------------------------------- /guide/src/documentation/index.md: -------------------------------------------------------------------------------- 1 | # Documentation 2 | 3 | This section includes detailed descriptions for configuring, monitoring and using the CLI. 4 | 5 | --- 6 | 7 | ## Sections 8 | - **[Configuration](./configuration/index.md)** 9 | * Detailed description of every parameter of Hermes. 10 | - **[Telemetry](./telemetry/index.md)** 11 | * Detailed description of Telemetry metrics. 12 | - **[REST API](./rest-api.md)** 13 | * Detailed description of the REST API. 14 | - **[Commands Reference](./commands/index.md)** 15 | * Detailed description of every command of Hermes. 16 | -------------------------------------------------------------------------------- /guide/src/images/grafana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FirmaChain/ibc-rs/cf06cdfa8bcccd7c34634ef022e60c1ca4512151/guide/src/images/grafana.png -------------------------------------------------------------------------------- /guide/src/quick-start/index.md: -------------------------------------------------------------------------------- 1 | # Quick Start 2 | 3 | In order to run Hermes, please make sure you have all the 4 | [prerequisites](./pre-requisites.md) installed on your machine. 5 | 6 | Once you have these prerequisites, you can 7 | [build and run Hermes](./installation.md). 8 | 9 | > The instructions in this guide have been tested on `Linux` and `MacOS` 10 | > environments. Most of the commands should work on both environments. It is 11 | > currently impossible to build and run `Hermes` on `Windows`. 12 | 13 | --- 14 | 15 | ## Sections 16 | - **[Prerequisites](./pre-requisites.md)** 17 | * Install the latest versions of `Rust` and `Golang`. 18 | - **[Installation](./installation.md)** 19 | * Install Hermes. 20 | -------------------------------------------------------------------------------- /guide/src/templates/commands/gaia/query_balances.md: -------------------------------------------------------------------------------- 1 | gaiad --node [[#node]] query bank balances $(gaiad --home [[#home]] keys --keyring-backend="test" show [[#wallet]] -a) -------------------------------------------------------------------------------- /guide/src/templates/commands/gaia/version.md: -------------------------------------------------------------------------------- 1 | gaiad version --log_level error --long | head -n4 -------------------------------------------------------------------------------- /guide/src/templates/commands/git/clone_ibc_rs.md: -------------------------------------------------------------------------------- 1 | git clone https://github.com/informalsystems/hermes.git 2 | -------------------------------------------------------------------------------- /guide/src/templates/commands/git/gaia.md: -------------------------------------------------------------------------------- 1 | git clone https://github.com/cosmos/gaia.git -------------------------------------------------------------------------------- /guide/src/templates/commands/gm/hermes_cc.md: -------------------------------------------------------------------------------- 1 | [[#binary gm]] hermes cc -------------------------------------------------------------------------------- /guide/src/templates/commands/gm/hermes_cc_exec.md: -------------------------------------------------------------------------------- 1 | [[#binary gm]] hermes cc --exec -------------------------------------------------------------------------------- /guide/src/templates/commands/gm/hermes_config.md: -------------------------------------------------------------------------------- 1 | [[#binary gm]] hermes config -------------------------------------------------------------------------------- /guide/src/templates/commands/gm/hermes_keys.md: -------------------------------------------------------------------------------- 1 | [[#binary gm]] hermes keys -------------------------------------------------------------------------------- /guide/src/templates/commands/gm/keys.md: -------------------------------------------------------------------------------- 1 | [[#binary gm]] keys -------------------------------------------------------------------------------- /guide/src/templates/commands/gm/reset.md: -------------------------------------------------------------------------------- 1 | [[#binary gm]] reset -------------------------------------------------------------------------------- /guide/src/templates/commands/gm/rm.md: -------------------------------------------------------------------------------- 1 | [[#binary gm]] rm [[#folder]] -------------------------------------------------------------------------------- /guide/src/templates/commands/gm/start.md: -------------------------------------------------------------------------------- 1 | [[#binary gm]] start -------------------------------------------------------------------------------- /guide/src/templates/commands/gm/status.md: -------------------------------------------------------------------------------- 1 | [[#binary gm]] status -------------------------------------------------------------------------------- /guide/src/templates/commands/gm/stop.md: -------------------------------------------------------------------------------- 1 | [[#binary gm]] stop -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/clear/packets_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] clear packets[[#OPTIONS]] --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/clear_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] clear [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/completions_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] completions --shell [[#SHELL]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/config/auto_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] config auto[[#OPTIONS]] --output [[#PATH]] --chains [[#CHAIN_NAME:OPTIONAL_KEY_NAME]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/config/validate_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] config validate -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/config_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] config [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/create/channel_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] create channel[[#OPTIONS]] --a-chain [[#A_CHAIN_ID]] --a-connection [[#A_CONNECTION_ID]] --a-port [[#A_PORT_ID]] --b-port [[#B_PORT_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/create/channel_2.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] create channel[[#OPTIONS]] --a-chain [[#A_CHAIN_ID]] --b-chain [[#B_CHAIN_ID]] --a-port [[#A_PORT_ID]] --b-port [[#B_PORT_ID]] --new-client-connection -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/create/client_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] create client[[#OPTIONS]] --host-chain [[#HOST_CHAIN_ID]] --reference-chain [[#REFERENCE_CHAIN_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/create/connection_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] create connection[[#OPTIONS]] --a-chain [[#A_CHAIN_ID]] --b-chain [[#B_CHAIN_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/create/connection_2.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] create connection[[#OPTIONS]] --a-chain [[#A_CHAIN_ID]] --a-client [[#A_CLIENT_ID]] --b-client [[#B_CLIENT_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/create_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] create [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/fee/register-counterparty-payee_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] fee register-counterparty-payee --chain [[#CHAIN_ID]] --channel [[#CHANNEL_ID]] --port [[#PORT_ID]] --counterparty-payee [[#COUNTERPARTY_PAYEE_ADDRESS]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/fee/register-payee_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] fee register-payee --chain [[#CHAIN_ID]] --channel [[#CHANNEL_ID]] --port [[#PORT_ID]] --payee [[#PAYEE_ADDRESS]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/fee/transfer_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] fee transfer[[#OPTIONS]] --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --src-port [[#SRC_PORT_ID]] --src-channel [[#SRC_CHANNEL_ID]] --amount [[#AMOUNT]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/fee_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] fee [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/health-check_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] health-check -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/help_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]][[#OPTIONS]][[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/keys/add_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] keys add[[#OPTIONS]] --chain [[#CHAIN_ID]] --key-file [[#KEY_FILE]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/keys/add_2.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] keys add[[#OPTIONS]] --chain [[#CHAIN_ID]] --mnemonic-file [[#MNEMONIC_FILE]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/keys/balance_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] keys balance[[#OPTIONS]] --chain [[#CHAIN_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/keys/delete_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] keys delete --chain [[#CHAIN_ID]] --key-name [[#KEY_NAME]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/keys/delete_2.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] keys delete --chain [[#CHAIN_ID]] --all -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/keys/list_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] keys list --chain [[#CHAIN_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/keys_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] keys [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/listen_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] listen[[#OPTIONS]] --chain [[#CHAIN_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/misbehaviour_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] misbehaviour --chain [[#CHAIN_ID]] --client [[#CLIENT_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/channel/client_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query channel client --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/channel/end_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query channel end[[#OPTIONS]] --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/channel/ends_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query channel ends[[#OPTIONS]] --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/channel_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query channel [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/channels_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query channels[[#OPTIONS]] --chain [[#CHAIN_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/client/connections_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query client connections[[#OPTIONS]] --chain [[#CHAIN_ID]] --client [[#CLIENT_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/client/consensus_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query client consensus[[#OPTIONS]] --chain [[#CHAIN_ID]] --client [[#CLIENT_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/client/header_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query client header[[#OPTIONS]] --chain [[#CHAIN_ID]] --client [[#CLIENT_ID]] --consensus-height [[#CONSENSUS_HEIGHT]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/client/state_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query client state[[#OPTIONS]] --chain [[#CHAIN_ID]] --client [[#CLIENT_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/client_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query client [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/clients_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query clients[[#OPTIONS]] --host-chain [[#HOST_CHAIN_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/connection/channels_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query connection channels --chain [[#CHAIN_ID]] --connection [[#CONNECTION_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/connection/end_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query connection end[[#OPTIONS]] --chain [[#CHAIN_ID]] --connection [[#CONNECTION_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/connection_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query connection [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/connections_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query connections[[#OPTIONS]] --chain [[#CHAIN_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/packet/ack_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query packet ack[[#OPTIONS]] --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] --sequence [[#SEQUENCE]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/packet/acks_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query packet acks --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/packet/commitment_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query packet commitment[[#OPTIONS]] --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] --sequence [[#SEQUENCE]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/packet/commitments_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query packet commitments --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/packet/pending-acks_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query packet pending-acks --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/packet/pending-sends_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query packet pending-sends --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/packet/pending_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query packet pending --chain [[#CHAIN_ID]] --port [[#PORT_ID]] --channel [[#CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/packet_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query packet [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/transfer/denom-trace_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query transfer denom-trace --chain [[#CHAIN_ID]] --hash [[#HASH]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/transfer_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query transfer [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/tx/events_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query tx events --chain [[#CHAIN_ID]] --hash [[#HASH]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query/tx_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query tx [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/query_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] query [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/start_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] start[[#OPTIONS]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/chan-close-confirm_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx chan-close-confirm --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --dst-connection [[#DST_CONNECTION_ID]] --dst-port [[#DST_PORT_ID]] --src-port [[#SRC_PORT_ID]] --dst-channel [[#DST_CHANNEL_ID]] --src-channel [[#SRC_CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/chan-close-init_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx chan-close-init --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --dst-connection [[#DST_CONNECTION_ID]] --dst-port [[#DST_PORT_ID]] --src-port [[#SRC_PORT_ID]] --dst-channel [[#DST_CHANNEL_ID]] --src-channel [[#SRC_CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/chan-open-ack_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx chan-open-ack --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --dst-connection [[#DST_CONNECTION_ID]] --dst-port [[#DST_PORT_ID]] --src-port [[#SRC_PORT_ID]] --dst-channel [[#DST_CHANNEL_ID]] --src-channel [[#SRC_CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/chan-open-confirm_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx chan-open-confirm --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --dst-connection [[#DST_CONNECTION_ID]] --dst-port [[#DST_PORT_ID]] --src-port [[#SRC_PORT_ID]] --dst-channel [[#DST_CHANNEL_ID]] --src-channel [[#SRC_CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/chan-open-init_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx chan-open-init[[#OPTIONS]] --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --dst-connection [[#DST_CONNECTION_ID]] --dst-port [[#DST_PORT_ID]] --src-port [[#SRC_PORT_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/chan-open-try_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx chan-open-try[[#OPTIONS]] --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --dst-connection [[#DST_CONNECTION_ID]] --dst-port [[#DST_PORT_ID]] --src-port [[#SRC_PORT_ID]] --src-channel [[#SRC_CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/conn-ack_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx conn-ack --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --dst-client [[#DST_CLIENT_ID]] --src-client [[#SRC_CLIENT_ID]] --dst-connection [[#DST_CONNECTION_ID]] --src-connection [[#SRC_CONNECTION_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/conn-confirm_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx conn-confirm --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --dst-client [[#DST_CLIENT_ID]] --src-client [[#SRC_CLIENT_ID]] --dst-connection [[#DST_CONNECTION_ID]] --src-connection [[#SRC_CONNECTION_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/conn-init_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx conn-init --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --dst-client [[#DST_CLIENT_ID]] --src-client [[#SRC_CLIENT_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/conn-try_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx conn-try[[#OPTIONS]] --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --dst-client [[#DST_CLIENT_ID]] --src-client [[#SRC_CLIENT_ID]] --src-connection [[#SRC_CONNECTION_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/ft-transfer_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx ft-transfer[[#OPTIONS]] --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --src-port [[#SRC_PORT_ID]] --src-channel [[#SRC_CHANNEL_ID]] --amount [[#AMOUNT]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/packet-ack_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx packet-ack --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --src-port [[#SRC_PORT_ID]] --src-channel [[#SRC_CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/packet-recv_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx packet-recv[[#OPTIONS]] --dst-chain [[#DST_CHAIN_ID]] --src-chain [[#SRC_CHAIN_ID]] --src-port [[#SRC_PORT_ID]] --src-channel [[#SRC_CHANNEL_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx/upgrade-chain_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx upgrade-chain[[#OPTIONS]] --reference-chain [[#REFERENCE_CHAIN_ID]] --host-chain [[#HOST_CHAIN_ID]] --host-client [[#HOST_CLIENT_ID]] --amount [[#AMOUNT]] --height-offset [[#HEIGHT_OFFSET]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/tx_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] tx [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/update/client_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] update client[[#OPTIONS]] --host-chain [[#HOST_CHAIN_ID]] --client [[#CLIENT_ID]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/update_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] update [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/upgrade/client_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] upgrade client --host-chain [[#HOST_CHAIN_ID]] --client [[#CLIENT_ID]] --upgrade-height [[#REFERENCE_UPGRADE_HEIGHT]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/upgrade/clients_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] upgrade clients[[#OPTIONS]] --reference-chain [[#REFERENCE_CHAIN_ID]] --upgrade-height [[#REFERENCE_UPGRADE_HEIGHT]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/upgrade_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] upgrade [[#SUBCOMMAND]] -------------------------------------------------------------------------------- /guide/src/templates/commands/hermes/version_1.md: -------------------------------------------------------------------------------- 1 | [[#BINARY hermes]][[#GLOBALOPTIONS]] version -------------------------------------------------------------------------------- /guide/src/templates/files/hermes/production/default_gas_cosmoshub.toml: -------------------------------------------------------------------------------- 1 | default_gas = 2000000 2 | max_gas = 10000000 3 | gas_multiplier = 1.1 4 | max_msg_num = 25 5 | # ... 6 | [chains.gas_price] 7 | price = 0.005 8 | denom = 'uatom' -------------------------------------------------------------------------------- /guide/src/templates/files/hermes/production/default_gas_osmosis.toml: -------------------------------------------------------------------------------- 1 | default_gas = 5000000 2 | max_gas = 15000000 3 | gas_multiplier = 1.1 4 | max_msg_num = 20 5 | # ... 6 | [chains.gas_price] 7 | price = 0.0026 8 | denom = 'uosmo' -------------------------------------------------------------------------------- /guide/src/templates/help_templates/clear.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Clear objects, such as outstanding packets on a channel 3 | 4 | USAGE: 5 | hermes clear 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | help Print this message or the help of the given subcommand(s) 12 | packets Clear outstanding packets (i.e., packet-recv and packet-ack) on a given channel 13 | in both directions. The channel is identified by the chain, port, and channel IDs 14 | at one of its ends 15 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/completions.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Generate auto-complete scripts for different shells 3 | 4 | USAGE: 5 | hermes completions --shell 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --shell [possible values: bash, elvish, fish, powershell, zsh] 12 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/config.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Validate Hermes configuration file 3 | 4 | USAGE: 5 | hermes config 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | auto Automatically generate a configuration file by fetching data from the 12 | chain-registry. If a pair of chains exists in the _IBC folder of the 13 | chain-registry then a corresponding packet filter is added to the configuration 14 | help Print this message or the help of the given subcommand(s) 15 | validate Validate the relayer configuration 16 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/config/validate.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Validate the relayer configuration 3 | 4 | USAGE: 5 | hermes config validate 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/create.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Create objects (client, connection, or channel) on chains 3 | 4 | USAGE: 5 | hermes create 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | channel Create a new channel between two chains 12 | client Create a new IBC client 13 | connection Create a new connection between two chains 14 | help Print this message or the help of the given subcommand(s) 15 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/fee.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Interact with the fee middleware 3 | 4 | USAGE: 5 | hermes fee 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | help Print this message or the help of the given subcommand(s) 12 | register-counterparty-payee Register a counterparty payee for a channel 13 | register-payee Register a payee for a channel 14 | transfer Perform a token transfer supported with a fee 15 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/fee/register-counterparty-payee.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Register a counterparty payee for a channel 3 | 4 | USAGE: 5 | hermes fee register-counterparty-payee --chain --channel --port --counterparty-payee 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | FLAGS: 11 | --chain 12 | Identifier of the chain 13 | 14 | --channel 15 | Identifier of the channel [aliases: chan] 16 | 17 | --counterparty-payee 18 | Address of the counterparty payee 19 | 20 | --port 21 | Identifier of the port 22 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/fee/register-payee.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Register a payee for a channel 3 | 4 | USAGE: 5 | hermes fee register-payee --chain --channel --port --payee 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | FLAGS: 11 | --chain Identifier of the chain 12 | --channel Identifier of the channel [aliases: chan] 13 | --payee Address of the payee 14 | --port Identifier of the port 15 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/health-check.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Performs a health check of all chains in the the config 3 | 4 | USAGE: 5 | hermes health-check 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/keys.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Manage keys in the relayer for each chain 3 | 4 | USAGE: 5 | hermes keys 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | add Adds key to a configured chain or restores a key to a configured chain using a 12 | mnemonic 13 | balance Query balance for a key from a configured chain. If no key is given, the key is 14 | retrieved from the configuration file 15 | delete Delete key(s) from a configured chain 16 | help Print this message or the help of the given subcommand(s) 17 | list List keys configured on a chain 18 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/keys/delete.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Delete key(s) from a configured chain 3 | 4 | USAGE: 5 | hermes keys delete --chain --key-name 6 | 7 | hermes keys delete --chain --all 8 | 9 | OPTIONS: 10 | -h, --help Print help information 11 | 12 | FLAGS: 13 | --all Delete all keys 14 | --chain Identifier of the chain 15 | --key-name Name of the key 16 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/keys/list.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | List keys configured on a chain 3 | 4 | USAGE: 5 | hermes keys list --chain 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain 12 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/listen.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Listen to and display IBC events emitted by a chain 3 | 4 | USAGE: 5 | hermes listen [OPTIONS] --chain 6 | 7 | OPTIONS: 8 | --events ... Add an event type to listen for, can be repeated. Listen for all 9 | events by default (available: Tx, NewBlock) 10 | -h, --help Print help information 11 | 12 | REQUIRED: 13 | --chain Identifier of the chain to listen for events from 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/misbehaviour.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Listen to client update IBC events and handles misbehaviour 3 | 4 | USAGE: 5 | hermes misbehaviour --chain --client 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain where client updates are monitored for 12 | misbehaviour 13 | --client Identifier of the client to be monitored for misbehaviour 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/channel.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query information about channels 3 | 4 | USAGE: 5 | hermes query channel 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | client Query channel's client state 12 | end Query channel end 13 | ends Query channel ends and underlying connection and client objects 14 | help Print this message or the help of the given subcommand(s) 15 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/channel/client.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query channel's client state 3 | 4 | USAGE: 5 | hermes query channel client --chain --port --channel 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain to query 12 | --channel Identifier of the channel to query [aliases: chan] 13 | --port Identifier of the port to query 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/channel/end.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query channel end 3 | 4 | USAGE: 5 | hermes query channel end [OPTIONS] --chain --port --channel 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | --height Height of the state to query 10 | 11 | REQUIRED: 12 | --chain Identifier of the chain to query 13 | --channel Identifier of the channel to query [aliases: chan] 14 | --port Identifier of the port to query 15 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/channel/ends.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query channel ends and underlying connection and client objects 3 | 4 | USAGE: 5 | hermes query channel ends [OPTIONS] --chain --port --channel 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | --height Height of the state to query 10 | --verbose Enable verbose output, displaying all details of channels, connections 11 | & clients 12 | 13 | REQUIRED: 14 | --chain Identifier of the chain to query 15 | --channel Identifier of the channel to query [aliases: chan] 16 | --port Identifier of the port to query 17 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/channels.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query the identifiers of all channels on a given chain 3 | 4 | USAGE: 5 | hermes query channels [OPTIONS] --chain 6 | 7 | OPTIONS: 8 | --counterparty-chain 9 | Filter the query response by the this counterparty chain 10 | 11 | -h, --help 12 | Print help information 13 | 14 | --show-counterparty 15 | Show the counterparty chain, port, and channel 16 | 17 | --verbose 18 | Enable verbose output, displaying the client and connection ids for each channel in the 19 | response 20 | 21 | REQUIRED: 22 | --chain Identifier of the chain to query 23 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/client.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query information about clients 3 | 4 | USAGE: 5 | hermes query client 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | connections Query the client connections 12 | consensus Query the client consensus state 13 | header Query for the header used in a client update at a certain height 14 | help Print this message or the help of the given subcommand(s) 15 | state Query the client state 16 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/client/connections.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query the client connections 3 | 4 | USAGE: 5 | hermes query client connections [OPTIONS] --chain --client 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | --height The chain height which this query should reflect 10 | 11 | REQUIRED: 12 | --chain Identifier of the chain to query 13 | --client Identifier of the client to query 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/client/consensus.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query the client consensus state 3 | 4 | USAGE: 5 | hermes query client consensus [OPTIONS] --chain --client 6 | 7 | OPTIONS: 8 | --consensus-height 9 | Height of the client's consensus state to query 10 | 11 | -h, --help 12 | Print help information 13 | 14 | --height 15 | The chain height context to be used, applicable only to a specific height 16 | 17 | --heights-only 18 | Show only consensus heights 19 | 20 | REQUIRED: 21 | --chain Identifier of the chain to query 22 | --client Identifier of the client to query 23 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/client/header.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query for the header used in a client update at a certain height 3 | 4 | USAGE: 5 | hermes query client header [OPTIONS] --chain --client --consensus-height 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | --height The chain height context for the query. Leave unspecified for latest 10 | height. 11 | 12 | REQUIRED: 13 | --chain Identifier of the chain to query 14 | --client Identifier of the client to query 15 | --consensus-height Height of header to query 16 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/client/state.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query the client state 3 | 4 | USAGE: 5 | hermes query client state [OPTIONS] --chain --client 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | --height The chain height context for the query 10 | 11 | REQUIRED: 12 | --chain Identifier of the chain to query 13 | --client Identifier of the client to query 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/clients.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query the identifiers of all clients on a chain 3 | 4 | USAGE: 5 | hermes query clients [OPTIONS] --host-chain 6 | 7 | OPTIONS: 8 | -h, --help 9 | Print help information 10 | 11 | --omit-chain-ids 12 | Omit printing the reference (or target) chain for each client 13 | 14 | --reference-chain 15 | Filter for clients which target a specific chain id (implies '--omit-chain-ids') 16 | 17 | REQUIRED: 18 | --host-chain Identifier of the chain to query 19 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/connection.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query information about connections 3 | 4 | USAGE: 5 | hermes query connection 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | channels Query connection channels 12 | end Query connection end 13 | help Print this message or the help of the given subcommand(s) 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/connection/channels.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query connection channels 3 | 4 | USAGE: 5 | hermes query connection channels --chain --connection 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain to query 12 | --connection Identifier of the connection to query [aliases: conn] 13 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/connection/end.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query connection end 3 | 4 | USAGE: 5 | hermes query connection end [OPTIONS] --chain --connection 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | --height Height of the state to query. Leave unspecified for latest height. 10 | 11 | REQUIRED: 12 | --chain Identifier of the chain to query 13 | --connection Identifier of the connection to query [aliases: conn] 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/connections.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query the identifiers of all connections on a chain 3 | 4 | USAGE: 5 | hermes query connections [OPTIONS] --chain 6 | 7 | OPTIONS: 8 | --counterparty-chain 9 | Filter the query response by the counterparty chain 10 | 11 | -h, --help 12 | Print help information 13 | 14 | --verbose 15 | Enable verbose output, displaying the client for each connection in the response 16 | 17 | REQUIRED: 18 | --chain Identifier of the chain to query 19 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/packet.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query information about packets 3 | 4 | USAGE: 5 | hermes query packet 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | ack Query packet acknowledgment 12 | acks Query packet acknowledgments 13 | commitment Query packet commitment 14 | commitments Query packet commitments 15 | help Print this message or the help of the given subcommand(s) 16 | pending Output a summary of pending packets in both directions 17 | pending-acks Query pending acknowledgments 18 | pending-sends Query pending send packets 19 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/packet/ack.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query packet acknowledgment 3 | 4 | USAGE: 5 | hermes query packet ack [OPTIONS] --chain --port --channel --sequence 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | --height Height of the state to query. Leave unspecified for latest height. 10 | 11 | REQUIRED: 12 | --chain Identifier of the chain to query 13 | --channel Identifier of the channel to query [aliases: chan] 14 | --port Identifier of the port to query 15 | --sequence Sequence of packet to query [aliases: seq] 16 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/packet/acks.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query packet acknowledgments 3 | 4 | USAGE: 5 | hermes query packet acks --chain --port --channel 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain to query 12 | --channel Identifier of the channel to query [aliases: chan] 13 | --port Identifier of the port to query 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/packet/commitment.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query packet commitment 3 | 4 | USAGE: 5 | hermes query packet commitment [OPTIONS] --chain --port --channel --sequence 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | --height Height of the state to query. Leave unspecified for latest height. 10 | 11 | REQUIRED: 12 | --chain Identifier of the chain to query 13 | --channel Identifier of the channel to query [aliases: chan] 14 | --port Identifier of the port to query 15 | --sequence Sequence of packet to query [aliases: seq] 16 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/packet/commitments.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query packet commitments 3 | 4 | USAGE: 5 | hermes query packet commitments --chain --port --channel 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain to query 12 | --channel Identifier of the channel to query [aliases: chan] 13 | --port Identifier of the port to query 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/packet/pending-acks.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query pending acknowledgments 3 | 4 | USAGE: 5 | hermes query packet pending-acks --chain --port --channel 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain to query the unreceived acknowledgments 12 | --channel Channel identifier [aliases: chan] 13 | --port Port identifier 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/packet/pending-sends.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query pending send packets 3 | 4 | USAGE: 5 | hermes query packet pending-sends --chain --port --channel 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain for the unreceived sequences 12 | --channel Channel identifier [aliases: chan] 13 | --port Port identifier 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/packet/pending.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Output a summary of pending packets in both directions 3 | 4 | USAGE: 5 | hermes query packet pending --chain --port --channel 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain at one end of the channel 12 | --channel Channel identifier on the chain given by [aliases: 13 | chan] 14 | --port Port identifier on the chain given by 15 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/transfer.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query information about token transfers 3 | 4 | USAGE: 5 | hermes query transfer 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | denom-trace Query the denomination trace info from a trace hash 12 | help Print this message or the help of the given subcommand(s) 13 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/transfer/denom-trace.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query the denomination trace info from a trace hash 3 | 4 | USAGE: 5 | hermes query transfer denom-trace --chain --hash 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain 12 | --hash Trace hash to query 13 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/tx.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query information about transactions 3 | 4 | USAGE: 5 | hermes query tx 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | events Query the events emitted by transaction 12 | help Print this message or the help of the given subcommand(s) 13 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/query/tx/events.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Query the events emitted by transaction 3 | 4 | USAGE: 5 | hermes query tx events --chain --hash 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --chain Identifier of the chain to query 12 | --hash Transaction hash to query 13 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/start.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Start the relayer in multi-chain mode. 3 | 4 | Relays packets and open handshake messages between all chains in the config. 5 | 6 | USAGE: 7 | hermes start [OPTIONS] 8 | 9 | OPTIONS: 10 | --full-scan 11 | Force a full scan of the chains for clients, connections and channels 12 | 13 | -h, --help 14 | Print help information 15 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/tx/conn-init.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Initialize a connection (ConnectionOpenInit) 3 | 4 | USAGE: 5 | hermes tx conn-init --dst-chain --src-chain --dst-client --src-client 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --dst-chain Identifier of the destination chain 12 | --dst-client Identifier of the destination client 13 | --src-chain Identifier of the source chain 14 | --src-client Identifier of the source client 15 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/tx/packet-ack.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Relay acknowledgment packets 3 | 4 | USAGE: 5 | hermes tx packet-ack [OPTIONS] --dst-chain --src-chain --src-port --src-channel 6 | 7 | OPTIONS: 8 | -h, --help 9 | Print help information 10 | 11 | --packet-data-query-height 12 | Exact height at which the packet data is queried via block_results RPC 13 | 14 | REQUIRED: 15 | --dst-chain Identifier of the destination chain 16 | --src-chain Identifier of the source chain 17 | --src-channel Identifier of the source channel [aliases: src-chan] 18 | --src-port Identifier of the source port 19 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/update.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Update objects (clients) on chains 3 | 4 | USAGE: 5 | hermes update 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | client Update an IBC client 12 | help Print this message or the help of the given subcommand(s) 13 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/update/client.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Update an IBC client 3 | 4 | USAGE: 5 | hermes update client [OPTIONS] --host-chain --client 6 | 7 | OPTIONS: 8 | -h, --help 9 | Print help information 10 | 11 | --height 12 | The target height of the client update. Leave unspecified for latest height. 13 | 14 | --trusted-height 15 | The trusted height of the client update. Leave unspecified for latest height. 16 | 17 | REQUIRED: 18 | --client Identifier of the chain targeted by the client 19 | --host-chain Identifier of the chain that hosts the client 20 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/upgrade.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Upgrade objects (clients) after chain upgrade 3 | 4 | USAGE: 5 | hermes upgrade 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | SUBCOMMANDS: 11 | client Upgrade an IBC client 12 | clients Upgrade all IBC clients that target a specific chain 13 | help Print this message or the help of the given subcommand(s) 14 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/upgrade/client.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Upgrade an IBC client 3 | 4 | USAGE: 5 | hermes upgrade client --host-chain --client --upgrade-height 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | 10 | REQUIRED: 11 | --client 12 | Identifier of the client to be upgraded 13 | 14 | --host-chain 15 | Identifier of the chain that hosts the client 16 | 17 | --upgrade-height 18 | The height at which the reference chain halts for the client upgrade 19 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/upgrade/clients.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | Upgrade all IBC clients that target a specific chain 3 | 4 | USAGE: 5 | hermes upgrade clients [OPTIONS] --reference-chain --upgrade-height 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | --host-chain Identifier of the chain hosting the clients to be upgraded 10 | 11 | REQUIRED: 12 | --reference-chain 13 | Identifier of the chain that underwent an upgrade; all clients targeting this chain will 14 | be upgraded 15 | 16 | --upgrade-height 17 | The height at which the reference chain halts for the client upgrade 18 | -------------------------------------------------------------------------------- /guide/src/templates/help_templates/version.md: -------------------------------------------------------------------------------- 1 | DESCRIPTION: 2 | The `version` subcommand, retained for backward compatibility 3 | 4 | USAGE: 5 | hermes version 6 | 7 | OPTIONS: 8 | -h, --help Print help information 9 | -------------------------------------------------------------------------------- /guide/src/templates/version.md: -------------------------------------------------------------------------------- 1 | v1.0.0 -------------------------------------------------------------------------------- /guide/src/tutorials/pre-requisites/index.md: -------------------------------------------------------------------------------- 1 | # Pre-requisites for local chains 2 | 3 | In order to follow the tutorials using local chains, please make sure that [Gaia](https://github.com/cosmos/gaia) and [Gaiad manager](./gaiad-manager.md) are installed on your machine. 4 | 5 | --- 6 | 7 | ## Sections 8 | 9 | * **[Gaia](./gaia.md)** 10 | * Install `Gaia`, the first implementation of the CosmosHub. 11 | 12 | * **[Gaiad Manager](./gaia.md)** 13 | * Install Gaiad Manager, a command-line tool (CLI) that helps manage local `gaiad` networks. -------------------------------------------------------------------------------- /tools/check-guide/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "check-guide" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | ibc-relayer-cli = { version = "1.1.0", path = "../../crates/relayer-cli" } 10 | clap = "3.2" 11 | lazy_static = "1.4.0" 12 | mdbook-template = "1.1.0" 13 | regex = "1" 14 | walkdir = "2.3.2" 15 | -------------------------------------------------------------------------------- /tools/integration-test/spec/.gitignore: -------------------------------------------------------------------------------- 1 | states/ 2 | _apalache-out/ 3 | run/ 4 | -------------------------------------------------------------------------------- /tools/integration-test/spec/MC_Transfer.cfg: -------------------------------------------------------------------------------- 1 | INIT Init 2 | NEXT Next 3 | -------------------------------------------------------------------------------- /tools/integration-test/spec/README.md: -------------------------------------------------------------------------------- 1 | # ICS20 Specification 2 | 3 | Add desired `Invariant` predicate in `MC_Transfer.tla`. Then execute, 4 | 5 | ```sh 6 | apalache check --inv=Invariant --run-dir=run MC_Transfer.tla 7 | ``` 8 | 9 | Provided invariants to pass, 10 | 11 | ``` 12 | LocalTransferInv 13 | RestoreRelayInv 14 | InterruptRelayInv 15 | IBCTransferSendPacketInv 16 | IBCTransferReceivePacketInv 17 | IBCTransferAcknowledgePacketInv 18 | IBCTransferTimeoutPacketInv 19 | ``` 20 | 21 | ```sh 22 | apalache check --inv=IBCTransferAcknowledgePacketInv --run-dir=run MC_Transfer.tla 23 | ``` 24 | -------------------------------------------------------------------------------- /tools/integration-test/src/lib.rs: -------------------------------------------------------------------------------- 1 | #[allow(clippy::too_many_arguments)] 2 | #[cfg(test)] 3 | pub mod tests; 4 | 5 | #[cfg(any(all(test, feature = "mbt"), doc))] 6 | #[macro_use] 7 | pub mod mbt; 8 | -------------------------------------------------------------------------------- /tools/integration-test/src/mbt/README.md: -------------------------------------------------------------------------------- 1 | # MBT for Hermes Integration Test 2 | 3 | Make sure [`apalache-mc`](https://github.com/informalsystems/apalache) is installed and setup properly. Check `apalache-mc version`. 4 | 5 | ```bash 6 | cargo test -p ibc-integration-test --features mbt mbt::transfer 7 | ``` 8 | -------------------------------------------------------------------------------- /tools/integration-test/src/mbt/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod utils; 2 | 3 | pub mod itf; 4 | pub mod state; 5 | 6 | pub mod handlers; 7 | 8 | pub mod transfer; 9 | -------------------------------------------------------------------------------- /tools/integration-test/src/tests/fee/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod auto_forward_relayer; 2 | pub mod forward_relayer; 3 | pub mod no_forward_relayer; 4 | pub mod non_fee_channel; 5 | pub mod pay_fee_async; 6 | pub mod register_payee; 7 | pub mod timeout_fee; 8 | -------------------------------------------------------------------------------- /tools/integration-test/src/tests/manual/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Tests that require manual human verification. 3 | 4 | Currently there are tests that require manual human observation of the 5 | relayer's behavior through the log messages to decide whether the test 6 | is working as expected. The test cases behind the [`manual`](self) module 7 | are only enabled when the `"manual"` feature flag is enabled manually. 8 | 9 | Any tests that require manual verification should be placed here. 10 | It is also fine to use [`suspend`](ibc_test_framework::util::suspend::suspend) 11 | inside the manual test, as the CI is not going to run the test. 12 | */ 13 | 14 | pub mod simulation; 15 | -------------------------------------------------------------------------------- /tools/integration-test/src/tests/tendermint/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod sequential; 2 | -------------------------------------------------------------------------------- /tools/test-framework/.gitignore: -------------------------------------------------------------------------------- 1 | data/ 2 | -------------------------------------------------------------------------------- /tools/test-framework/src/bootstrap/binary/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Helper functions for bootstrapping constructs that involve two chains. 3 | */ 4 | 5 | pub mod chain; 6 | pub mod channel; 7 | pub mod connection; 8 | -------------------------------------------------------------------------------- /tools/test-framework/src/bootstrap/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Helper functions for setting up test cases in an imperative way. 3 | 4 | Normal test authors should have no need to call functions provided 5 | by the `bootstrap` module, as they are implicitly called by the 6 | [`framework`](crate::framework) constructs. 7 | 8 | Advanced test authors with needs for more flexibility can call 9 | functions in the `bootstrap` module directly, so that they have 10 | more control of when exactly new chains and relayers should 11 | be spawned. 12 | */ 13 | 14 | pub mod binary; 15 | pub mod init; 16 | pub mod nary; 17 | pub mod single; 18 | -------------------------------------------------------------------------------- /tools/test-framework/src/bootstrap/nary/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Experimental work to bootstrap N-ary chains for testing. 3 | 4 | This is a work in progress and although it works, is currently 5 | lack of documentation. We put this behind the "experimental" 6 | feature flag so that developers who do not need this feature 7 | are not obligated to go though the code and understand what 8 | is happening under the hood. 9 | */ 10 | 11 | pub mod chain; 12 | pub mod channel; 13 | pub mod connection; 14 | -------------------------------------------------------------------------------- /tools/test-framework/src/chain/cli/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod bootstrap; 2 | pub mod ica; 3 | pub mod query; 4 | pub mod transfer; 5 | -------------------------------------------------------------------------------- /tools/test-framework/src/chain/ext/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod bootstrap; 2 | pub mod fee; 3 | pub mod ica; 4 | pub mod transfer; 5 | -------------------------------------------------------------------------------- /tools/test-framework/src/framework/binary/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Constructs for test cases that involve interaction between two chains. 3 | */ 4 | 5 | pub mod chain; 6 | pub mod channel; 7 | pub mod connection; 8 | pub mod node; 9 | -------------------------------------------------------------------------------- /tools/test-framework/src/framework/nary/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Run N-ary test cases that involve more than 2 chains. 3 | */ 4 | 5 | pub mod chain; 6 | pub mod channel; 7 | pub mod connection; 8 | pub mod node; 9 | -------------------------------------------------------------------------------- /tools/test-framework/src/ibc/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Code that may belong to the [`ibc`] module, but are currently 3 | in this crate for easier review or maintenance. 4 | */ 5 | 6 | pub mod denom; 7 | pub mod token; 8 | -------------------------------------------------------------------------------- /tools/test-framework/src/lib.rs: -------------------------------------------------------------------------------- 1 | // #![deny(warnings)] 2 | #![allow(clippy::too_many_arguments)] 3 | #![allow(clippy::type_complexity)] 4 | #![allow(clippy::ptr_arg)] 5 | #![doc = include_str!("../README.md")] 6 | 7 | extern crate alloc; 8 | 9 | pub mod bootstrap; 10 | pub mod chain; 11 | pub mod error; 12 | pub mod framework; 13 | pub mod ibc; 14 | pub mod prelude; 15 | pub mod relayer; 16 | pub mod types; 17 | pub mod util; 18 | -------------------------------------------------------------------------------- /tools/test-framework/src/types/binary/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Definitions for data structures involving two chains. 3 | */ 4 | 5 | pub mod chains; 6 | pub mod channel; 7 | pub mod client; 8 | pub mod connection; 9 | pub mod foreign_client; 10 | -------------------------------------------------------------------------------- /tools/test-framework/src/types/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | This module contains definitions of core data structures that are used 3 | in the test suite. 4 | 5 | A data type belongs to this module if it only comes with the struct 6 | definition with few methods associated to that struct. If a data 7 | type has many complicated methods or trait implementations, it 8 | probably does not belong to here. 9 | */ 10 | 11 | pub mod binary; 12 | pub mod config; 13 | pub mod env; 14 | pub mod id; 15 | pub mod nary; 16 | pub mod process; 17 | pub mod single; 18 | pub mod tagged; 19 | pub mod wallet; 20 | -------------------------------------------------------------------------------- /tools/test-framework/src/types/single/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Definitions for data types that involve a single chain. 3 | */ 4 | 5 | pub mod node; 6 | -------------------------------------------------------------------------------- /tools/test-framework/src/util/file.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Filesystem utilities. 3 | */ 4 | 5 | use std::fs; 6 | use std::io; 7 | use std::thread; 8 | 9 | use crate::error::Error; 10 | 11 | /** 12 | Pipe a streaming source implementing [`std::io::Read`] to a file in 13 | append mode. 14 | 15 | This is used to pipe log output from a full node's child process 16 | to log files. 17 | */ 18 | pub fn pipe_to_file( 19 | mut source: impl io::Read + Send + 'static, 20 | file_path: &str, 21 | ) -> Result<(), Error> { 22 | let mut file = fs::OpenOptions::new() 23 | .append(true) 24 | .create(true) 25 | .open(file_path)?; 26 | 27 | thread::spawn(move || { 28 | std::io::copy(&mut source, &mut file).unwrap(); 29 | }); 30 | 31 | Ok(()) 32 | } 33 | -------------------------------------------------------------------------------- /tools/test-framework/src/util/mod.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | Utility and helper functions used in the tests. 3 | */ 4 | 5 | pub mod array; 6 | pub mod assert; 7 | pub mod file; 8 | pub mod random; 9 | pub mod retry; 10 | pub mod suspend; 11 | --------------------------------------------------------------------------------