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 clearingmemo_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 thepacket_data_hex
attribute when assembling a packet from events, instead of the deprecatedpacket_data
attribute.
Relying on thepacket_data
attribute enforces a UTF-8 encoded payload (eg. JSON), disallowing eg. Protobuf-encoded payloads.
Thepacket_data
attribute has been deprecated in favor ofpacket_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)