Releases: informalsystems/hermes
v1.5.1
June 5th, 2023
This is a patch release for Hermes, which includes a single bugfix and enables overflow checks in production builds.
BUG FIXES
- Fix a panic which can occur when querying connections filtered by counterparty chain using
hermes query connections
(#3381)
IMPROVEMENTS
- Overflow checks are now enabled when Hermes is built in release mode, in order to better catch and address potential logic errors leading to overflows (#3390)
What's Changed
- Fix Docker release job by installing QEMU on the worker by @romac in #3367
- Remove a couple tools from the workspace, to cut down on dependencies needing to be built for releases by @romac in #3369
- Bump cachix/install-nix-action from 20 to 21 by @dependabot in #3368
- Fix guide checker by @romac in #3371
- Remove debug log noise from event_monitor by @ancazamfir in #3373
- Update dependencies by @romac in #3379
- Small cleanups by @romac in #3384
- Work around Clippy false positives on 1.70 by @romac in #3389
- Fix panic when querying connections filtered by counterparty chain by @romac in #3381
- Clean code by @DaviRain-Su in #3383
- Panic on overflow in release mode by @romac in #3390
- Release Hermes v1.5.1 by @romac in #3393
Full Changelog: v1.5.0...v1.5.1
v1.5.0
May 24th, 2023
🎉 Hermes v1.5.0 is here, packed with a slew of exciting updates, including breaking changes💥, brand-new features🎁, performance enhancements🚀, and sweeping improvements✨.
The one breaking change is the removal of the unbonding_period
setting from the chain configuration. This is now replaced by a fresh ccv_consumer_chain
setting for Cross-Chain Validation (CCV) consumer chains.
Also, Hermes has strengthened its misbehavior detection. With the mode.misbehaviour.enabled
setting enabled (now the case by default) the relayer was already closely monitoring on-chain client updates, comparing submitted headers with those fetched from its RPC node. In the event of any discrepancy, Hermes would report the misbehaviour to the chain hosting the IBC client. As of this version, Hermes will also report the misbehaviour evidence to the reference chain.
This version rolls out a string of performance enhancements. Event batches are now delivered after a configurable delay, greatly trimming down latency when relaying, particularly on high-traffic channels. This can be adjusted using the batch_delay
setting in the per-chain configuration. Plus, packet acknowledgments are only queried when there are packet commitments on the counterparty, resulting in a major speed boost for packet clearing and on-start scanning! 🚀
In addition, the trusted_node
setting can now specify whether the full node Hermes connects to is trusted or not. If untrusted, the light client will verify headers included in the ClientUpdate
message. However, a word of caution: configuring the full node as trusted may cut down latency but could risk sending invalid client updates to the chain. Use wisely!
Our Hermes guide has been re-organized a bit, now featuring a new Performance Tuning page that details the settings for optimizing the performance of the relayer.
For all the debuggers out there, Hermes now equips a new --debug
global flag with several selectable values, and two bonus flags, --archive-address
and --restart-height
that enable a client update following a genesis restart without an IBC upgrade proposal.
When it comes to telemetry, the destination chain is now added to the labels of the confirmed packet metrics.
Take note that some metrics now have the suffix _total
. If you're using a running a Grafana dashboard or any other tool relying on the metric names or labels, an update might be needed. The corresponding page in the guide reflects the new metric names and labels for your convenience.
There's also a fresh configuration option to specify the directory used for the keyring store.
From this version onwards, multi-platform (arm64 and amd64) images will be distributed both on Docker Hub and the GitHub Content Repository.
Note for operators
⚠️ Be aware that this release contains a couple breaking
⚠️ changes to the Hermes configuration and telemetry metrics.
⚠️ Please consult theUPGRADING.md
document for more details.
What's changed
- Improved tests for 'hermes config auto' by @ljoss17 in #3287
- Use dependabot for Github Actions by @faddat in #3304
- Publish multi-platform (arm64/amd64) images to Docker Hub and GHCR by @faddat in #3305
- Add changelog entry for #3303 by @romac in #3316
- Output profiling data as JSON, with additional metadata by @romac in #3329
- Allow gRPC calls with larger query responses by @ljoss17 in #3335
- Add destination chain to confirmed packet metrics by @ljoss17 in #3302
- Document metric label updates by @ljoss17 in #3343
- Add migaloo ics29 tests by @ljoss17 in #3346
- Emit events batch after a configurable delay by @romac in #3327
- Detect light client attacks and report them to both the chain and the RPC node by @romac in #3224
- Only query for packet acks when there are packet commitments on the counterparty by @romac in #3347
- Allow disabling header verification by setting
trusted_node = true
in the chain config by @romac in #3328 - Improve visibility of
config auto
command by @seanchen1991 in #3301 - Add
--debug=rpc
and--debug=profiling
flags for enabling debug output by @romac in #3352 - Handle duplicate packet events and perform full clearing even in the presence of errors by @romac in #3361
- Revert "Send consumer misbehaviour message
IcsConsumerMisbehaviour
to the provider" by @romac in #3242 - Release Hermes v1.5.0 by @romac in #3363
Full Changelog: v1.4.1...v1.5.0
v1.4.1
v1.4.0
March 27th, 2023
Hermes v1.4.0 brings compatibility with chains based on Tendermint/CometBFT 0.37, while retaining compatibility with Tendermint/CometBFT 0.34. This is transparent and does not require any additional configuration.
The relayer now supports ICS consumer chains, which only requires operators to specify the unbonding_period
parameter in the chain settings. This is a temporary requirement, in the future Hermes will seamlessy support consumer chains with minimal changes to the configuration.
This release also deprecates support for chains based on Cosmos SDK 0.43.x and lower, and bumps the compatibility to Cosmos SDK 0.47.x.
The relayer now also allows operators to filter out packets to relay based on whether or not they contain a fee, and the minimal amount of such fee.
Please check the relevant documentation in the Hermes guide for more information.
Additionally, Hermes now also tracks metrics for ICS29 fees.
This release includes a new query client status
CLI to quickly check whether a client is active, expired or frozen.
v1.3.0
February 17th, 2023
Hermes v1.3.0 adds support for Cross-chain Queries (ICS 031), implements optimistic channel handshake for lower latency, and comes with a major performance improvement when clearing packets on busy channels for chains using a recent version of IBC-Go.
This release also brings a few bug fixes related to closing ordered channels and upgrading clients.
v1.2.0
Hermes v1.2.0
December 14th, 2022
Hermes v1.2.0 brings a bunch of new features and other improvements, such as support for Ed25519 keys, more robust health check which takes into account the Tendermint min_gas_price
setting, and various bug fixes related to the handling of begin- and end-block events in the Tendermint indexer.
Additionally, IBC clients with a trust level between 1/3
and 2/3
inclusive are now allowed.
v1.1.0
Hermes v1.1.0
August 29th, 2022
Note to developers
The ibc
and ibc-proto
crates have been split into their own repositories under the cosmos
organization.
Moreover, Hermes will not be using the original ibc
crate anymore, and will from now on use instead the ibc-relayer-types
crate, which is a trimmed down version of the ibc
crate that contains only the data structures used by Hermes.
This change does not impact end-users of Hermes, but may affect downstream consumers of the ibc-relayer
library in some cases.
Please reach out to us if you encounter any issue following from this reorganization of the repository.
v1.0.0
Hermes v1.0.0
August 22nd, 2022
After more than 2 years in the works, this is the first stable release of the Hermes relayer! 🎉
For reaching this milestone, we thank the valuable contributions of over 50 individuals, spread across more than 800 documented & resolved issues. Beside Cosmos-SDK and Tendermint, we are fortunate to maintain some of the most active and intense repository in the Cosmos ecosystem. Most importantly, we thank the relentless work of relayer operators that have already relayed billions worth of value in IBC production networks, and have provided us with invaluable feedback on improving Hermes and raising the overall stability of IBC. Kudos to everyone!
Note for operators
⚠️ If upgrading from Hermes v0.15.0, be aware that this release contains multiple breaking
⚠️ changes to the Hermes command-line interface and configuration.
⚠️ Please consult the UPGRADING document for instructions for more details.
Highlights
- The performance and reliability of the relayer has been greatly improved
- Merged commands
keys add
andkeys restore
into single commandkeys add
The flag to specify the key name for the CLI commandkeys add
has been changed
from-n
to-k
. Restoring a key now takes a file containing the mnemonic as
input instead of directly taking the mnemonic - Deprecated
gas_adjustment
setting in favor of newgas_multiplier
setting.
Check out the upgrading instructions for more details about the new setting. - Updated all CLI commands to take flags instead of positional arguments
- Renamed
query packet unreceived-packets
toquery packet pending-sends
andquery packet unreceived-acks
toquery packet pending-acks
- Added CLI command
keys balance
which outputs the balance of an account associated with a key - Added CLI command
query channel client
which outputs the channel's client state - Added CLI command
query transfer denom-trace
which outputs the base denomination and path of a given trace hash - Dropped the
raw
prefix from all thetx raw
commands - Remove the four duplicate commands:
tx raw update-client
, which is the same asupdate client
tx raw upgrade-client
, which is the same asupgrade client
tx raw upgrade-clients
, which is the same asupgrade clients
tx raw create-client
, which is the same ascreate client
- [A new section was added to guide][telemetry-guide] which describes how the new metrics
can be used to observe both the current state of the relayer and the networks it is connected to - Added many new metrics to the telemetry. The full list can be found in new the guide section linked above
v1.0.0-rc.2
v1.0.0-rc.1
July 27th, 2022
This is the second release candidate for Hermes v1.0.0 🎉
Note for operators
⚠️ This release contains multiple breaking changes to the Hermes command-line interface and configuration.
⚠️ Please consult the UPGRADING document for instructions to update to Hermes v1.0.0-rc.1.