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 theUPGRADING.md
document for more details.
BREAKING CHANGES
- The
websocket_addr
configuration option has been removed in favour of the newevent_source
setting.
Please consult theUPGRADING.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 themessage
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 functionsrun_binary_interchain_security_node_test
andrun_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
tofalse
, 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)
- By disabling clients, connections and channels workers, and setting
- Relayer Library
- Telemetry & Metrics
- Add two new configurations for the telemetry
buckets
: latency_submitted
used to specify the range and number of buckets for thetx_latency_submitted
metric.latency_confirmed
used to specify the range and number of buckets for thetx_latency_confirmed
metric.
(#3366)
- Add two new configurations for the telemetry
- Integration Test Framework
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 themax_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