github informalsystems/hermes v1.5.0

latest releases: v1.8.2, v1.8.1, v1.8.0...
11 months ago

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 the UPGRADING.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

Don't miss a new hermes release

NewReleases is sending notifications on new releases.