October 20th, 2023
This v1.7 release introduces new features and improvements to Hermes.
One of the key highlights is the addition of new misbehavior detection features.
- Hermes now includes a new command called
evidence
, which monitors the blocks emitted by a chain for any presence of misbehavior evidence. - If misbehavior is detected, the CLI will report that evidence to all counterparty clients of that chain.
On top of that, misbehavior evidence detected on a chain that is a CCV (Cross-Chain Validation) consumer is now sent to its provider chain, alerting it directly of the misbehaving consumer chain. - Furthermore, when misbehavior is detected from an on-chain client, such as a light client attack or a double-sign, the evidence is now submitted to all counterparty clients of the misbehaving chain, rather than just the counterparty client of the misbehaving client.
In addition, the REST server of Hermes now has a /clear_packets
endpoint which allows triggering packet clearing for a specific chain or all chains if no specific chain is provided.
Another notable improvement is the ability to change tracing
directives at runtime.
This feature lets users adjust tracing settings dynamically as needed, providing a more customizable and efficient debugging experience.
Overall, the new misbehavior detection features in Hermes contribute to a more robust and secure environment, enabling timely identification and response to potential misbehaving actors.
FEATURES
- Relayer CLI
- Add a new
evidence
command for monitoring the blocks emitted by a chain for the presence of a misbehaviour evidence, and report that evidence to all counteparty clients of that chain. (#3456) - Add a
/clear_packets?chain=CHAIN_ID
endpoint to the built-in REST server to trigger packet clear for the chain specified in the chain query param or for all chains if the query param is omitted. (#3398) - Add support for changing
tracing
directives at runtime. ([#3564]
Please see the corresponding page in the Hermes guide for more information.(#3564))
- Add a new
IMPROVEMENTS
- Relayer Library
- When Hermes detects a misbehaviour on a chain that is CCV consumer, it will now send the misbehaviour evidence to the provider chain using the new
IcsConsumerMisbehaviour
message. (#3219) - When Hermes detects a misbehaviour from a on-chain client, eg. a light client attack or a double-sign, it will now submit the misbehaviour evidence to all counterparty clients of the misbehaving chain instead of to the counterparty client of the misbehaving client only. (#3223)
- Improve error message when scanning unsupported client (#3531)
- Regard the
finalize_block_events
field of theblock_results
RPC endpoint, added in CometBFT 0.38 (#3548) - Change fallback compatibility version for CometBFT from v0.37 to v0.34 (#3666)
- When Hermes detects a misbehaviour on a chain that is CCV consumer, it will now send the misbehaviour evidence to the provider chain using the new
- Relayer CLI
- The
listen
command now works with bothpush
andpull
event sources (#3501)
- The
BUG FIXES
- Relayer CLI
- Revert Docker image to Ubuntu LTS and set the UID and GID explicitly (#3580)
- IBC Data structures
- Fix build of
ibc-relayer-types
documentation on docs.rs (#3549)
- Fix build of
What's Changed
- Add date to release in changelog by @romac in #3490
- Add Stride v12.1.0 to ICS tests by @ljoss17 in #3492
- Add ICA transfer test to interchain-security tests by @ljoss17 in #3493
- Add ICQ tests for interchain-security tests by @ljoss17 in #3494
- Bump dyn-clone from 1.0.11 to 1.0.12 by @dependabot in #3497
- Bump signal-hook from 0.3.15 to 0.3.17 by @dependabot in #3500
- Bump async-trait from 0.1.71 to 0.1.72 by @dependabot in #3515
- Bump bitcoin from 0.30.0 to 0.30.1 by @dependabot in #3512
- Bump erased-serde from 0.3.27 to 0.3.28 by @dependabot in #3511
- Bump Swatinem/rust-cache from 1 to 2 by @dependabot in #3517
- Fix interchain-security tests flakiness by @ljoss17 in #3518
- Bump moka from 0.11.2 to 0.11.3 by @dependabot in #3526
- Bump ibc-proto from 0.32.0 to 0.32.1 by @dependabot in #3536
- Enable
listen
command withpull
event source by @romac in #3502 - Bump ed25519-dalek from 1.0.1 to 2.0.0 by @dependabot in #3537
- Reduce CI flakiness by using
cargo-nextest
by @soareschen in #3544 - Update to tendermint-rs 0.33.0 and adapt to RPC changes in CometBFT 0.38 by @mzabaluev in #3372
- Bump ics23 from 0.10.1 to 0.10.2 by @dependabot in #3551
- Remove dependency on
safe-regex
forregex
by @romac in #3556 - Bump rustls-webpki from 0.101.1 to 0.101.4 by @dependabot in #3557
- Small fix in the
config.toml``trust_threshold
for chainibc-1
by @ljoss17 in #3560 - Fix Clippy warnings on Rust 1.72 by @romac in #3562
- Add
KeyFile
associated type toSigningKeyPair
trait by @DaviRain-Su in #3568 - Improve error message when scanning unsupported client by @DaviRain-Su in #3567
- Use lychee to check markdown links by @romac in #3576
- Limit link checker concurrency and use GitHub token by @romac in #3577
- Revert Docker image to Ubuntu LTS and set the UID and GID explicitly by @romac in #3581
- Bump actions/checkout from 3 to 4 by @dependabot in #3583
- Bump regex from 1.9.1 to 1.9.5 by @dependabot in #3599
- Split Docker build into its own workflow by @romac in #3602
- Add support for changing
tracing
directives at runtime by @ljoss17 in #3565 - Add REST endpoint
/clear_packets
to trigger packet clearing by @romac in #3401 - Bump docker/setup-qemu-action from 2 to 3 by @dependabot in #3608
- Bump docker/login-action from 2 to 3 by @dependabot in #3607
- Bump docker/metadata-action from 4 to 5 by @dependabot in #3606
- Bump docker/setup-buildx-action from 2 to 3 by @dependabot in #3605
- Bump docker/build-push-action from 4 to 5 by @dependabot in #3604
- Use only Gaia v11 on CI by @romac in #3546
- Bump ibc-proto from 0.33.0 to 0.34.0 by @dependabot in #3552
- docs: fix # of crates by @rootulp in #3621
- fix: link to gaiad-manager by @rootulp in #3613
- Document
discard_abci_responses
and pull-mode relaying interaction in the Hermes guide by @seanchen1991 in #3635 - Document Hermes' gRPC endpoint requirements by @seanchen1991 in #3529
- Update
gaiad
version andconfig.toml
example in Hermes guide by @seanchen1991 in #3640 - Document how to read a key/mnemonic from stdin in
keys add
command by @romac in #3645 - Remove file committed by mistake by @romac in #3652
- Update tendermint-rs to v0.34, prost to v0.12 and tonic to v0.10 by @romac in #3651
- Fix new clippy warnings on Rust 1.74 by @romac in #3653
- Improve ICS test bootstrapping by @ljoss17 in #3657
- Add
evidence
command for monitoring and reporting misbehavior evidence to counterparty clients by @romac in #3456 - Bump Swatinem/rust-cache from 1 to 2 by @dependabot in #3665
- Bump actions/checkout from 3 to 4 by @dependabot in #3664
- Set CompatMode fallback to v0.34 when the version query fails by @ljoss17 in #3663
- Fix commented gas_price line in example config file by @ljoss17 in #3668
- Docs improvements by @seanchen1991 in #3661
- Update to ibc-proto v0.38.0 and remove unneeded object-safe trait definitions by @romac in #3671
- Release Hermes 1.7.0 by @romac in #3639
New Contributors
Full changes: v1.6.0...v1.7.0