Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge upstream changes from informalsystems/hermes #23

Merged
merged 93 commits into from
Apr 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
446731b
Update release-template.md to include a workflow with the comms team …
adizere Jan 31, 2024
8217d10
Update link to IBC website (#3834)
romac Feb 2, 2024
fae5132
fix: use the consensus state at client latest height in status CLI (#…
ancazamfir Feb 2, 2024
6a8d2d7
Index fetched data by the given chain name to account for mismatch be…
romac Feb 2, 2024
afc46a7
fix: add syncing check for gRPC node (#3833)
ancazamfir Feb 2, 2024
fe80bdf
Use cosmos.nix S3 cache on CI (#3842)
romac Feb 6, 2024
5307151
Bump ics23 from 0.11.0 to 0.11.1 (#3839)
dependabot[bot] Feb 7, 2024
7cfb234
Build multi-platform image on macOS runner to speed up build (#3843)
romac Feb 8, 2024
5cde31b
Remove assumption that ICS-04 packet data is a valid UTF-8 string (#3…
romac Feb 8, 2024
16abe32
Fix clippy warnings
romac Feb 8, 2024
f986dc8
Use latest nightly to run cargo-doc
romac Feb 8, 2024
9130641
Include banner in README.md (#3854)
adizere Feb 20, 2024
17b218b
Bump jaxxstorm/action-install-gh-release from 1.10.0 to 1.11.0 (#3848)
dependabot[bot] Feb 20, 2024
6b41efa
Update `curve25519-dalek` to its latest version to fix `cargo doc` jo…
romac Feb 20, 2024
ea44c82
Bump eyre from 0.6.11 to 0.6.12 (#3851)
dependabot[bot] Feb 20, 2024
8736bba
Bump moka from 0.12.4 to 0.12.5 (#3849)
dependabot[bot] Feb 20, 2024
5512d17
feat: add simulate errors metrics (#3846)
freak12techno Feb 21, 2024
dab1cc9
Bump tendermint-proto from 0.34.0 to 0.34.1 (#3861)
dependabot[bot] Feb 28, 2024
5154f01
Improve reliability of compatibility check (#3835)
romac Feb 28, 2024
c453676
Make ordered channels more resilient in the face of failing packets (…
seanchen1991 Feb 28, 2024
df6cd29
Add `memo_overwrite` configuration (#3863)
ljoss17 Feb 29, 2024
df29acc
Recover from gas simulation failures on legacy chains (#3793)
mdyring Mar 4, 2024
0b29b58
Bump tempfile from 3.9.0 to 3.10.1 (#3870)
dependabot[bot] Mar 5, 2024
8c1b1ff
Bump secp256k1 from 0.28.1 to 0.28.2 (#3869)
dependabot[bot] Mar 5, 2024
9c641ae
Bump anyhow from 1.0.79 to 1.0.80 (#3868)
dependabot[bot] Mar 5, 2024
2f9fdb5
Bump thiserror from 1.0.56 to 1.0.57 (#3866)
dependabot[bot] Mar 5, 2024
40d74f6
Fix Rust toolchain nightly version to 2024-03-03 for cargo-doc CI job…
ljoss17 Mar 6, 2024
0f690a0
Add configuration to skip packet sequences when clearing (#3862)
ljoss17 Mar 6, 2024
cac00ee
Improve out of gas error log (#3874)
ljoss17 Mar 6, 2024
79d10c5
Release Hermes v1.8.1 (#3876)
ljoss17 Mar 7, 2024
80aea8e
Fix Docker image workflow
romac Mar 7, 2024
e16dbb0
Bump serde from 1.0.195 to 1.0.197 (#3884)
dependabot[bot] Mar 12, 2024
bb9d42e
Fix parsing of IBC-Go version in health check and improve health chec…
romac Mar 12, 2024
11ed07f
Add Injective to chains running tests in CI (#3886)
ljoss17 Mar 12, 2024
e4aea2a
Fix `clear packets` CLI bug where `counterparty_channel_id` cannot be…
ljoss17 Mar 12, 2024
bff1ee9
Change connection and handshake retry strategy to retry max 10 times …
romac Mar 12, 2024
06dfbaf
Release v1.8.2 (#3891)
romac Mar 12, 2024
6ffb295
fix: fixed minimum-gas-prices healthcheck messages and make it more v…
freak12techno Mar 17, 2024
97c575e
Proceed to next block after a few retries if Hermes can't parse curre…
tkxkd0159 Mar 21, 2024
b076784
Use workspace dependencies (#3907)
romac Mar 21, 2024
0783023
Set `compat_mode` for pull mode in `hermes listen` command (#3911)
tkxkd0159 Mar 22, 2024
d223dd1
Use constant backoff in handshake retry strategy (#3900)
romac Mar 22, 2024
b0ddfeb
Add action to determine and check the MSRV (#3909)
romac Mar 25, 2024
3b4ec69
Revert "Build multi-platform image on macOS runner to speed up build …
romac Mar 25, 2024
d7e0cb7
Bump crossbeam-channel from 0.5.11 to 0.5.12 (#3918)
dependabot[bot] Mar 26, 2024
a1fa6ee
Bump async-trait from 0.1.77 to 0.1.79 (#3919)
dependabot[bot] Mar 26, 2024
a1c4360
Update release-template.md to consistently notify comms team (#3908)
adizere Mar 26, 2024
ff9e2df
Use pull event source when generating configuration with `hermes conf…
romac Mar 27, 2024
0ee4f36
WIP: begin v2 Penumbra support in Hermes
zbuc Mar 28, 2024
1e459ed
add config fields probably needed for tm-related configs
hdevalence Jan 31, 2024
f10fdaf
start trying to run a view server
hdevalence Jan 31, 2024
282cab9
add cargo config needed to build penumbra crates
hdevalence Jan 31, 2024
bf79896
bootstrap boxed view service, implement health check and subscribe
avahowell Jan 31, 2024
86eb878
implement some client and connection queries
avahowell Jan 31, 2024
fe3e180
implement the majority of query and event parsing
avahowell Feb 1, 2024
58205d3
first pass at implementing transaciton building
avahowell Feb 9, 2024
c15981f
fix conversion to IbcRelay
avahowell Feb 13, 2024
3d1e7a7
fixup remaining build errors, add compat mode to penumbra config
avahowell Feb 15, 2024
8bcbcc6
add tendermint light client to penumbra endpoint
avahowell Feb 15, 2024
3875646
implement penumbra chain::build_header
avahowell Feb 15, 2024
79a69d1
implement penumbra chain::verify_header and check_misbheavior
avahowell Feb 15, 2024
1e78859
implement async tx submitting, add view_service_storage_dir config
avahowell Feb 16, 2024
32e8887
add config-preview-celestia.toml config
avahowell Feb 17, 2024
38c57a9
extract client settings to a chain-agnostic structure
avahowell Feb 21, 2024
ef2a345
channel creation working: implement workaround for loadbalancer issue…
avahowell Feb 21, 2024
009215f
implement balance query using view client
avahowell Feb 21, 2024
752e052
async packet relay working now, refactored into build_penumbra_tx
avahowell Feb 21, 2024
ff0a3c2
build unbonding period using penumbra app parameters
avahowell Feb 21, 2024
68c941d
rename celestia config
avahowell Feb 21, 2024
46e05a8
fixup a few missing penumbra branches in tests
avahowell Feb 26, 2024
486b0ee
add example osmosis config
conorsch Mar 12, 2024
7a9eefb
Merge Astria support into Penumbra branch (#16)
zbuc Mar 15, 2024
b613b68
Missing Astria fixes from previous merge
zbuc Mar 15, 2024
6e59b35
Run CI on main branch instead of master (#20)
zbuc Mar 26, 2024
1839810
Merge
zbuc Apr 5, 2024
5910393
clippy
zbuc Apr 5, 2024
12eb53d
Change tokio features to include full...
zbuc Apr 5, 2024
fc5599b
try to fix CI with different dependency versions
zbuc Apr 5, 2024
e6a0f51
config -> config.toml
zbuc Apr 5, 2024
3024f0d
Use tokio_unstable in github actions
zbuc Apr 5, 2024
9e44ec4
Update min rust-version to 1.77.1
zbuc Apr 5, 2024
eb25832
msrv -> 1.77.1
zbuc Apr 5, 2024
cc42e0b
Fix clippy failures
zbuc Apr 5, 2024
83b1314
skip Cargo.lock in codespell
zbuc Apr 5, 2024
cb2f06b
Use tokio_unstable in all the GitHub Actions
zbuc Apr 5, 2024
34282fd
Use old version of penumbra imports for astria
zbuc Apr 9, 2024
063893a
Further PR cleanup
zbuc Apr 9, 2024
c8e8ec0
remove redundant imports
zbuc Apr 9, 2024
d9d4441
Fix cargo-doc CI
zbuc Apr 9, 2024
15263a9
Try to fix integration test disk space error
zbuc Apr 9, 2024
9b5922a
Use build cache and index page and unstable options for rust doc build
zbuc Apr 9, 2024
861f6e8
Further CI fixes for cargo doc build
zbuc Apr 9, 2024
e92699e
Fix CI template
zbuc Apr 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .cargo/config → .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[build]
# Enable Tokio's `tracing` support for `tokio-console`
rustflags = ["--cfg", "tokio_unstable"]
rustflags = ["--cfg", "tokio_unstable"]

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Fixed `minimum-gas-prices` health-check messages and make it more verbose and legible
([\#3893](https://github.com/informalsystems/hermes/issues/3893))
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Set `compat_mode` for pull mode in `hermes listen` command
([\#3910](https://github.com/informalsystems/hermes/issues/3910))
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- Improve reliabily of event source in `pull` mode by proceeding to next block even if Hermes cannot parse the current block.
Add new configuration option to `event_source` setting: `max_retries` defines how many times Hermes should attempt to pull a block over RPC.
```toml
event_source = { mode = 'pull', interval = '1s', max_retries = 4 }
```
([\#3894](https://github.com/informalsystems/hermes/issues/3894))
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Use RPC (pull) event source instead of WebSocket (push) when generating configuration with `hermes config auto`
([\#3913](https://github.com/informalsystems/hermes/issues/3913))
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- Allow relaying ICS-04 packets with non-UTF-8 payloads ([\#3770](https://github.com/informalsystems/hermes/issues/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][0] in favor of `packet_data_hex` since IBC-Go v1.0.0.
[0]: https://github.com/cosmos/ibc-go/blob/fadf8f2b0ab184798d021d220d877e00c7634e26/CHANGELOG.md?plain=1#L1417
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Improve reliability of compatibility check and fix parsing of expected modules
versions ([\#3831](https://github.com/informalsystems/hermes/issues/3831))
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- 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](https://github.com/informalsystems/hermes/issues/3754))
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- Add a per-chain configuration `memo_overwrite` allowing users
to overwrite the relayer memo used for each transaction
([\#3811](https://github.com/informalsystems/hermes/issues/3811))
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
- Added a new Prometheus metric `simulate_errors` for tracking when a transaction simulation fails, with the following labels:
* `recoverable` (can the execution continue if this happened?)
* `account` (account from which the tx was sent)
* `error_description` (description of the error)
([\#3845](https://github.com/informalsystems/hermes/issues/3845))

```
# 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
```
3 changes: 3 additions & 0 deletions .changelog/v1.8.1/improvements/3814-grpc-syncing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- Add syncing check for gRPC node ([#3814])

[#3814]: https://github.com/informalsystems/ibc-rs/issues/3814
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- Use the consensus state at client latest height in status CLI ([#3814])

[#3814]: https://github.com/informalsystems/ibc-rs/issues/3814
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- Improve the log diagnostic when an out of gas error is thrown.
And a new entry related to gas error has been added to the Hermes
guide.
([\#3530](https://github.com/informalsystems/hermes/issues/3530))
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- 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](https://github.com/informalsystems/hermes/issues/3540))
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Recover from gas simulation failures on legacy chains.
([\#3792](https://github.com/informalsystems/hermes/issues/3792))
19 changes: 19 additions & 0 deletions .changelog/v1.8.1/summary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
*March 6th, 2024*

This release improves 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
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- Correctly use the counterparty channel and port IDs when clearing the packets
from the destination chain to the source chain in the `packet clear` command
([\#3889](https://github.com/informalsystems/hermes/issues/3889))
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Fix parsing of IBC-Go version in health check and improve health check
reporting ([\#3880](https://github.com/informalsystems/hermes/issues/3880))
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Add Injective chain to the chains running the integration tests in the CI.
([\#3887](https://github.com/informalsystems/hermes/issues/3887))
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- Change connection and channel handshake retry strategy
to retry at most 10 times (5 times per block max)
([\#3864](https://github.com/informalsystems/hermes/issues/3864))
6 changes: 6 additions & 0 deletions .changelog/v1.8.2/summary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*March 12th, 2024*

This release fixes the two following bugs and improves the connection and channel handshake retry mechanism:

* Fix erroneous warnings for incompatible version of IBC-Go during health checks, ensuring accurate compatibility reporting
* Fix a bug in the `clear packets` command which caused packet clearing to fail with an "counterparty channel not found" error
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/release-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ v without deliberation
- [ ] Create a new release in the changelog, using [`unclog`](https://github.com/informalsystems/unclog)
- If doing a release candidate (`rc`) version, then skip the `unclog release` step
- [ ] Reassign unfinished issues of previous milestone to the next milestone
- [ ] Notify the comms team about the pending new release by tagging [@isa-belch](https://github.com/isa-belch) as a reviewer here
2 changes: 1 addition & 1 deletion .github/codespell/codespell.ini
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[codespell]
skip = *.js,*.ts,*.css,*.svg,*.html,*.json,./target,./tools/integration-test/data,./tools/check-guide/target,./ci/misbehaviour/data
skip = *.js,*.ts,*.css,*.svg,*.html,*.json,./target,./tools/integration-test/data,./tools/check-guide/target,./ci/misbehaviour/data,Cargo.lock
ignore-words = .github/codespell/words.txt
2 changes: 2 additions & 0 deletions .github/workflows/audit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,7 @@ jobs:
path: ~/.cargo/bin
key: ${{ runner.os }}-cargo-audit-v0.11.2
- uses: actions-rs/audit-check@v1.2.0
env:
RUSTFLAGS: --cfg tokio_unstable
with:
token: ${{ secrets.GITHUB_TOKEN }}
34 changes: 19 additions & 15 deletions .github/workflows/cargo-doc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ on:
- Cargo.lock
- crates/**

env:
RUSTFLAGS: --cfg tokio_unstable

# Cancel previous runs of this workflow when a new commit is added to the PR, branch or tag
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
Expand All @@ -26,23 +29,24 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly-2023-07-13
override: true

- name: Install rust toolchain
# The script for rustdoc build requires nightly toolchain.
uses: dtolnay/rust-toolchain@nightly
# Loading cache takes ~15s, but saves us minutes of build.
- name: Load rust cache
uses: astriaorg/buildjet-rust-cache@v2.5.1
- name: Build API documentation
uses: actions-rs/cargo@v1
env:
RUSTDOCFLAGS: "--cfg docsrs"
RUSTDOCFLAGS: "--enable-index-page -Zunstable-options --cfg docsrs"
with:
command: doc
args: --all-features

- name: Push API documentation to GitHub Pages
if: github.ref == 'refs/heads/main'
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{ secrets.IBC_RS_DOC_PRIVATE_KEY }}
external_repository: informalsystems/hermes-api-doc
publish_dir: ./target/doc
args: --all-features --no-deps
# Disabled on penumbra hermes fork
# - name: Push API documentation to GitHub Pages
# if: github.ref == 'refs/heads/main'
# uses: peaceiris/actions-gh-pages@v3
# with:
# deploy_key: ${{ secrets.IBC_RS_DOC_PRIVATE_KEY }}
# external_repository: informalsystems/hermes-api-doc
# publish_dir: ./target/doc
2 changes: 1 addition & 1 deletion .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ jobs:
- uses: actions/checkout@v4
- uses: codespell-project/actions-codespell@v2
with:
skip: '*.js,*.ts,*.css,*.svg,*.html,*.json,./target,./tools/integration-test/data,./tools/check-guide/target,./ci/misbehaviour/data'
skip: '*.js,*.ts,*.css,*.svg,*.html,*.json,./target,./tools/integration-test/data,./tools/check-guide/target,./ci/misbehaviour/data,Cargo.lock'
ignore_words_file: .github/codespell/words.txt

8 changes: 8 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ jobs:
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
type=ref,event=tag
type=ref,event=branch
type=semver,pattern={{version}}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
Expand Down Expand Up @@ -91,6 +95,10 @@ jobs:
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
type=ref,event=tag
type=ref,event=branch
type=semver,pattern={{version}}

- name: Login to Docker Hub
uses: docker/login-action@v3
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/guide-templates.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ on:
- tools/check-guide/**
- guide/src/templates/**

env:
RUSTFLAGS: --cfg tokio_unstable

# Cancel previous runs of this workflow when a new commit is added to the PR, branch or tag
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
Expand All @@ -28,10 +31,9 @@ jobs:
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
override: true
- name: Check templates
run: bash scripts/auto_gen_templates.sh --mode "check"
- uses: actions-rs/cargo@v1
Expand Down
Loading
Loading