github informalsystems/hermes v1.8.1

latest release: v1.8.2
2 months ago

March 7th, 2024

This v1.8.1 release brings better reliability when relaying, more enhanced configuration and improved monitoring.

Reliability has been improved:

  • It is now possible to relay ICS-04 packets with non-UTF-8 payloads
  • Packet sequences are now verified for ordered channels before trying to relay

Additional per-chain configurations have been added:

  • excluded_sequences used to skip problematic packets when clearing
  • memo_overwrite allowing users to overwrite the relayer memo when chains have a strict limit for the size of the memo.

Monitoring issues improvements:

  • A new metric simulate_errors which counts the number of failed simulated transactions
  • Out of gas error diagnostic gives more information and a dedicated entry to the guide has been added
  • Failed gas simulation will not be considered as unrecoverable for legacy chains.
  • The compatibility check during the health-check has been improved will assess more correctly the versions for Ibc-Go and Cosmos SDK

Special thanks to our contributors for their valuable additions to this release:

  • Sergey (@freak12techno) for adding the simulate_errors metric (#3845)
  • Martin Dyring-Andersen (@mdyring) for adding recovery from failed gas simulation for legacy chains (#3792)

BUG FIXES

  • Allow relaying ICS-04 packets with non-UTF-8 payloads (#3770)
    Hermes does not assume anymore that an ICS-04 packet data is valid UTF-8,
    by using the packet_data_hex attribute when assembling a packet from events, instead of the deprecated packet_data attribute.
    Relying on the packet_data attribute enforces a UTF-8 encoded payload (eg. JSON), disallowing eg. Protobuf-encoded payloads.
    The packet_data attribute has been deprecated in favor of packet_data_hex since IBC-Go v1.0.0.
  • Improve reliability of compatibility check and fix parsing of expected modules versions (#3831)

FEATURES

  • Add a per-chain configuration excluded_sequences allowing users to specify a list of packet sequences which will not be cleared.
    This configuration has no impact on standard packet relaying. (#3754)
  • Add a per-chain configuration memo_overwrite allowing users to overwrite the relayer memo used for each transaction (#3811)
  • Added a new Prometheus metric simulate_errors for tracking when a transaction simulation fails, with the following labels: (#3845)
    • recoverable (can the execution continue if this happened?)

    • account (account from which the tx was sent)

    • error_description (description of the error)

      # HELP simulate_errors_total Number of errors observed by Hermes when simulating a Tx
      # TYPE simulate_errors_total counter
      simulate_errors_total{account="osmo17ndx5qfku28ymxgmq6zq4a6d02dvpfjjul0hyh",error_description="Unknown error",recoverable="false",service_name="unknown_service",otel_scope_name="hermes",otel_scope_version=""} 4
      

IMPROVEMENTS

  • Use the consensus state at client latest height in status CLI (#3814)
  • Add syncing check for gRPC node (#3814)
  • Improve the log diagnostic when an out of gas error is thrown. A new entry related to gas error has been added to the Hermes guide. (#3530)
  • Improve resilience when relaying on ordered channels.
    When relaying packets on an ordered channel, Hermes will now attempt to detect whether the next message to send has the sequence number expected on that channel. If there is a mismatch, then Hermes will trigger a packet clear on the channel to unblock it before resuming operations on that channel. (#3540)
  • Recover from gas simulation failures on legacy chains. (#3792)

Don't miss a new hermes release

NewReleases is sending notifications on new releases.