v1.6.0
July 19th, 2023
This release of Hermes notably features a new pull-based event source which fetches events from the chain periodically using
the `/block_results` RPC endpoint instead of getting them over WebSocket.
To use the new pull-based event source, set
``` event_source = { mode = 'pull', interval = '1s' }` ```
in the per-chain configuration.
Check the `event_source` setting in the example `config.toml` file in the Hermes repository for more details.
Additionally, it is now possible to skip the scanning phase during Hermes startup, by disabling clients, connections and channels workers, and setting `clear_on_start` to `false`. This significantly improve startup time when relaying on chains with hundreds or thousands of open channels, connections and clients.
See the Performance tuning page of the guide for more information.
Note for operators
⚠️ Be aware that this release contains breaking changes to the Hermes configuration.
⚠️ Please consult the `UPGRADING.md` document for more details.
BREAKING CHANGES
• The `websocket_addr` configuration option has been removed in favour of the new `event_source` setting.
Please consult the `UPGRADING.md` document for more details.
• Bump MSRV to 1.71 ( #3478 )
BUG FIXES
• Relayer CLI • Install CA certificates in Docker image for Hermes to be able to connect to TLS endpoints ( #3423 )
• Relayer Library • Fix a bug where Hermes would discard the client updates corresponding to the supporting headers returned by the light client when assembling messages to relay from the operational data ( #3465 )
FEATURES
• Relayer Library • Add a pull-based event source which fetches events from the chain periodically using the `/block_results` RPC endpoint instead of getting them over WebSocket.
To use the pull-based event source, set `event_source = { mode = 'pull', interval = '1s' }` in the per-chain configuration.
Warning
Only use this if you think Hermes is not getting all the events it should, eg. when relaying for a CosmWasm-enabled blockchain which emits IBC events in a smart contract where the events lack the `message` attribute key.
See #3190 and #2809 for more background information.
( #2850 )
• Integration Test Framework • Add integration tests for the Fee Grant module. ( #3416 )
• Add a new trait `InterchainSecurityChainTest` and two functions `run_binary_interchain_security_node_test` and `run_binary_interchain_security_channel_test` which can be used to bootstrap a Provider and Consumer chain for integration tests. Add a CI job to run tests with Gaia as a provider chain and Neutron as a Consumer chain.
( #3450 ) ( #3387 )
IMPROVEMENTS
• Relayer CLI • By disabling clients, connections and channels workers, and setting `clear_on_start` to `false`, Hermes will now skip the scanning phase during startup, significantly improve startup time when relaying on chains with hundreds or thousands of open channels, connections and/or clients. See the Performance tuning page of the guide for more information. ( #3403 )
• Relayer Library • Hermes will now automatically shutdown inactive workers to reduce the consumption of host system resources ( #3385 )
• Query the /genesis RPC endpoint to retrieve the value of `max_expected_time_per_block` and use it for `max_block_time`. ( #3211 )
• Telemetry & Metrics • Add two new configurations for the telemetry `buckets`:
• `latency_submitted` used to specify the range and number of buckets for the `tx_latency_submitted` metric.
• `latency_confirmed` used to specify the range and number of buckets for the `tx_latency_confirmed` metric.
( #3366 )
• Integration Test Framework • Update ICA tests to use ibc-go's `simd` instead of `interchain-accounts-demo`. ( #3353 )
• Update `simd` version used in integration tests from `v7.0.0` to `v7.1.0` ( #3434 )
What's Changed
• Add poll-based event source by @romac in #3323
• Remove debug noise when deadline elapses by @romac in #3400
• Update disclaimer in guide by @romac in #3406
• Build Docker multi-platform images in parallel by @romac in #3405
• Use CometBFT 0.37 compatibility mode for unsupported Tendermint versions (eg. Tendermint 0.35 and 0.36) by @seanchen1991 in #3404
• Add documentation on relaying for consumer chains to the Hermes guide by @seanchen1991 in #3407
• Fix link to `prometheus.yml` file in guide by @ljoss17 in #3409
• Bump moka from 0.11.1 to 0.11.2 by @dependabot in #3413
• Bump time from 0.3.20 to 0.3.22 by @dependabot in #3412
• Bump tempfile from 3.5.0 to 3.6.0 by @dependabot in #3411
• Bump serde from 1.0.163 to 1.0.164 by @dependabot in #3410
• Disable scanning when client, channel and connection workers are disabled and `clear_on_start = false` by @ljoss17 in #3365
• Configurable range for histogram buckets for latency metrics by @ljoss17 in #3382
• Improve ICA tests by @ljoss17 in #3415
• Add integration tests for fee granters by @ljoss17 in #3418
• Bump actions/checkout from 2 to 3 by @dependabot in #3425
• Fix some CI flakiness by ensuring we don't bind the same port twice on chain startup by @romac in #3422
• Set chain's `gas_price` based off of fetched chain data by @seanchen1991 in #3426
• Bump cachix/install-nix-action from 21 to 22 by @dependabot in #3433
• Install CA certificates in container by @romac in #3424
• Update `simd` v7 used in integration tests by @ljoss17 in #3427
• Increase the timeout on CI by @romac in #3436
• Misc cleanups by @romac in #3438
• Add CCV chain bootstrap to CI with Neutron and Gaia by @ljoss17 in #3451
• Bump serde from 1.0.164 to 1.0.166 by @dependabot in #3458
• Bump async-trait from 0.1.68 to 0.1.69 by @dependabot in #3459
• Bump erased-serde from 0.3.25 to 0.3.26 by @dependabot in #3460
• Document clock drift parameters in guide by @seanchen1991 in #3420
• Bump uuid from 1.3.3 to 1.4.0 by @dependabot in #3461
• Fix wrong sequence number in `MsgTimeoutOnClose` by @puneet2019 in #3440
• Include client updates for supporting messages when assembling messages to relay from the operational data by @romac in #3468
• Use `max_expected_time_per_block` value for the `max_block_time` by @ljoss17 in #3467
• `config auto` now generates a config file even when it encounters an error by @seanchen1991 in #3466
• Fix clippy warnings on Rust 1.71 by @romac in #3477
• Bump MSRV to 1.70 by @romac in #3479
• Fix: typos by @omahs in #3481
• Update guide templates by @romac in #3482
• Release Hermes v1.6.0 by @romac in #3476
New Contributors
• @puneet2019 made their first contribution in #3440
Full changes : v1.5.1...v1.6.0