Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
288b779
chore: deprecate chains from infra (#6850)
paulbalaji Aug 7, 2025
a89018a
feat: get lockbox wrapped token (#6861)
Xaroz Aug 7, 2025
70a7fb3
chore: add yalc files to .gitignore (#6732)
Mo-Hussain Aug 8, 2025
db55c3e
fix: parse private keys as string instead of number (#6864)
troykessler Aug 8, 2025
9fb5797
fix: Add logging to gas price escalation in Lander (#6860)
ameten Aug 8, 2025
2d12f43
Version Packages (#6841)
github-actions[bot] Aug 8, 2025
7199ade
feat: migrate from tendermint to cometbft (#6834)
kamiyaa Aug 8, 2025
5e5ba05
chore: update agent images (#6866)
kamiyaa Aug 8, 2025
6cccd84
chore: update oUSDT prune script to replace ethereum symbol (#6867)
Xaroz Aug 8, 2025
c9a5347
feat: support rebalancer key in key-funder (#6804)
Mo-Hussain Aug 8, 2025
e0bda31
feat(utils): ignore dynamic import in webpack builds (#6727)
Mo-Hussain Aug 11, 2025
c523bbb
fix: Add domain into spans in Scraper (#6846)
ameten Aug 11, 2025
6fe38a1
feat: update USDC/paradex rebalancer config (#6855)
Mo-Hussain Aug 11, 2025
4aa12de
chore: update key-funder image (#6872)
kamiyaa Aug 11, 2025
b23bcd1
fix: log debug messages correctly (#6871)
antigremlin Aug 11, 2025
1008e90
chore: update docker image tag (#6875)
Xaroz Aug 11, 2025
dbe5d69
chore: update validator image (#6873)
kamiyaa Aug 11, 2025
e1990e3
feat: Add oXAUT config getter (#6842)
ltyu Aug 11, 2025
425cb53
feat: deploy new ICA v2 routers (#6515)
paulbalaji Aug 12, 2025
823e30d
feat(infra): update ICA owner mappings (#6770)
paulbalaji Aug 12, 2025
8355592
fix: Make block gas limit exceeds a non-retriable error (#6877)
ameten Aug 12, 2025
7ddef63
fix: Stop resubmitting a message if there is a payload in Lander whic…
ameten Aug 12, 2025
6583df0
feat(infra): script to retrieve pending timelock txs [ENG-1859] (#6799)
xeno097 Aug 12, 2025
4634b81
chore: split cli e2e tests in ci (#6876)
paulbalaji Aug 12, 2025
341c876
chore: Upgrading Relayer RC and Hyperlane Mainnet to latest mainstrea…
ameten Aug 12, 2025
400c024
feat(sdk): fallback to rpc when fetching timelock data fails using ex…
xeno097 Aug 12, 2025
4b0032c
feat(infra): cancel timelock tx infra script [ENG-2026] (#6811)
xeno097 Aug 12, 2025
11c1b18
chore: Adds M0 as an app context (#6883)
nambrot Aug 13, 2025
a7bed6a
merge main
danwt Aug 13, 2025
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
5 changes: 5 additions & 0 deletions .changeset/bright-kangaroos-do.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@hyperlane-xyz/infra": patch
---

Fix: Corrected logger usage by avoiding destructured debug method calls
5 changes: 5 additions & 0 deletions .changeset/gentle-toes-admire.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@hyperlane-xyz/sdk": minor
---

Add fallback logic to the `EvmEventLogsReader` to use the rpc when the block explorer api request fails
5 changes: 0 additions & 5 deletions .changeset/lovely-monkeys-refuse.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/modern-dogs-kneel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@hyperlane-xyz/sdk": minor
---

Add the getPendingScheduledOperations and getPendingOperationIds methods on the EvmTimelockReader class and export getTimelockExecutableTransactionFromBatch from sdk
5 changes: 5 additions & 0 deletions .changeset/modern-snakes-flash.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@hyperlane-xyz/utils": patch
---

Ignore dynamic import in webpack builds
5 changes: 0 additions & 5 deletions .changeset/shaggy-panthers-visit.md

This file was deleted.

2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ solidity/ @yorhodes @ltyu @larryob
starknet/ @yorhodes @troykessler

## Agents
rust/ @ameten @kamiyaa
rust/ @ameten @kamiyaa @yjamin

## SDK
typescript/utils @yorhodes @ltyu @paulbalaji @xaroz @xeno097 @antigremlin
Expand Down
72 changes: 59 additions & 13 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -284,16 +284,13 @@ jobs:
job_name: 'CLI Install Test'
result: ${{ needs.cli-install-test-run.result }}

cli-e2e-matrix:
cli-evm-e2e-matrix:
runs-on: depot-ubuntu-latest
needs: [rust-only]
if: needs.rust-only.outputs.only_rust == 'false'
strategy:
fail-fast: false
matrix:
protocol:
- ethereum
- cosmosnative
test:
# Core Commands
- core-apply
Expand All @@ -304,19 +301,63 @@ jobs:
# Other commands
- relay
# Warp Commands
- warp-apply-1
- warp-apply-2
- warp-apply-submitters
- warp-apply
- warp-bridge-1
- warp-bridge-2
- warp-check
- warp-check-1
- warp-check-2
- warp-check-3
- warp-deploy
- warp-extend-basic
- warp-extend-config
- warp-extend-recovery
- warp-init
- warp-read
- warp-send
- warp-rebalancer
- warp-send
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
submodules: recursive
fetch-depth: 0

- name: foundry-install
uses: foundry-rs/foundry-toolchain@v1

- name: install-hyperlane-cli
id: install-hyperlane-cli
uses: ./.github/actions/install-cli
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
cache-provider: github

- name: Checkout registry
uses: ./.github/actions/checkout-registry

- name: CLI ethereum e2e tests (${{ matrix.test }})
run: yarn --cwd typescript/cli test:ethereum:e2e
env:
CLI_E2E_TEST: ${{ matrix.test }}

cli-cosmos-e2e-matrix:
runs-on: depot-ubuntu-latest
needs: [rust-only]
if: needs.rust-only.outputs.only_rust == 'false'
strategy:
fail-fast: false
matrix:
test:
# Core Commands
- core-apply
- core-check
- core-deploy
- core-read
# Warp Commands
- warp-deploy
- warp-read
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -337,22 +378,27 @@ jobs:
- name: Checkout registry
uses: ./.github/actions/checkout-registry

- name: CLI ${{ matrix.protocol }} e2e tests (${{ matrix.test }})
run: yarn --cwd typescript/cli test:${{ matrix.protocol }}:e2e
- name: CLI cosmosnative e2e tests (${{ matrix.test }})
run: yarn --cwd typescript/cli test:cosmosnative:e2e
env:
CLI_E2E_TEST: ${{ matrix.test }}

cli-e2e:
runs-on: ubuntu-latest
needs: [cli-e2e-matrix]
needs: [cli-evm-e2e-matrix, cli-cosmos-e2e-matrix]
if: always()
steps:
- uses: actions/checkout@v4
- name: Check cli-e2e matrix status
- name: Check CLI EVM E2E status
uses: ./.github/actions/check-job-status
with:
job_name: 'CLI EVM E2E'
result: ${{ needs.cli-evm-e2e-matrix.result }}
- name: Check CLI CosmosNative E2E status
uses: ./.github/actions/check-job-status
with:
job_name: 'CLI E2E'
result: ${{ needs.cli-e2e-matrix.result }}
job_name: 'CLI CosmosNative E2E'
result: ${{ needs.cli-cosmos-e2e-matrix.result }}

cosmos-sdk-e2e-run:
runs-on: depot-ubuntu-latest
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,6 @@ yarn-error.log
tsconfig.editor.json

.aider.*
# yalc
yalc.lock
.yalc
92 changes: 90 additions & 2 deletions rust/main/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions rust/main/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,13 @@ overflow-checks = true
[profile.release.package.hyperlane-sealevel-validator-announce]
overflow-checks = true

[workspace.dependencies.cometbft]
git = "https://github.com/hyperlane-xyz/cometbft-rs"
tag = "2025-08-07"

[workspace.dependencies.cometbft-rpc]
git = "https://github.com/hyperlane-xyz/cometbft-rs"
tag = "2025-08-07"

[workspace.dependencies.ethers]
features = []
Expand Down
5 changes: 4 additions & 1 deletion rust/main/agents/relayer/src/msg/message_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,10 @@ impl MessageProcessor {

let entrypoint = self.payload_dispatcher_entrypoint.take().map(Arc::new);

let prepare_task = self.create_classic_prepare_task();
let prepare_task = match &entrypoint {
None => self.create_classic_prepare_task(),
Some(entrypoint) => self.create_lander_prepare_task(entrypoint.clone()),
};

let submit_task = match &entrypoint {
None => self.create_classic_submit_task(),
Expand Down
4 changes: 3 additions & 1 deletion rust/main/agents/scraper/src/agent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use derive_more::AsRef;
use futures::future::try_join_all;
use hyperlane_core::{Delivery, HyperlaneDomain, HyperlaneMessage, InterchainGasPayment, H512};
use tokio::{sync::mpsc::Receiver as MpscReceiver, task::JoinHandle};
use tracing::{info, info_span, trace, Instrument};
use tracing::{info, info_span, instrument, trace, Instrument};

use hyperlane_base::{
broadcast::BroadcastMpscSender, metrics::AgentMetrics, settings::IndexSettings, AgentMetadata,
Expand Down Expand Up @@ -148,6 +148,7 @@ impl BaseAgent for Scraper {
impl Scraper {
/// Sync contract data and other blockchain with the current chain state.
/// This will spawn long-running contract sync tasks
#[instrument(fields(domain=%scraper.domain.name()), skip_all)]
async fn scrape(&self, scraper: &ChainScraper) -> eyre::Result<JoinHandle<()>> {
let store = scraper.store.clone();
let index_settings = scraper.index_settings.clone();
Expand Down Expand Up @@ -198,6 +199,7 @@ impl Scraper {
))
}

#[instrument(fields(domain=%domain.name()), skip_all)]
async fn build_chain_scraper(
domain: &HyperlaneDomain,
settings: &ScraperSettings,
Expand Down
4 changes: 2 additions & 2 deletions rust/main/chains/hyperlane-cosmos/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ version = { workspace = true }
async-trait = { workspace = true }
base64 = { workspace = true }
bech32 = { workspace = true }
cometbft = { workspace = true, features = ["secp256k1"] }
cometbft-rpc = { workspace = true, features = ["http-client","secp256k1"] }
cosmrs = { workspace = true, features = ["cosmwasm", "tokio", "grpc", "rpc"] }
cosmwasm-std = { workspace = true }
crypto = { path = "../../utils/crypto" }
Expand All @@ -33,8 +35,6 @@ serde = { workspace = true }
serde_json = { workspace = true }
sha2 = { workspace = true }
sha256 = { workspace = true }
tendermint = { workspace = true, features = ["rust-crypto", "secp256k1"] }
tendermint-rpc = { workspace = true }
time = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true }
Expand Down
13 changes: 11 additions & 2 deletions rust/main/chains/hyperlane-cosmos/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,12 @@ pub enum HyperlaneCosmosError {
/// Tonic codegen error
#[error("{0}")]
TonicGenError(#[from] tonic::codegen::StdError),
/// Tendermint RPC Error
/// Cometbft Error
#[error(transparent)]
TendermintError(#[from] Box<tendermint_rpc::error::Error>),
CometbftError(#[from] Box<cometbft::error::Error>),
/// Cometbft RPC Error
#[error(transparent)]
CometbftRpcError(#[from] Box<cometbft_rpc::Error>),
/// Prost error
#[error("{0}")]
Prost(#[from] prost::DecodeError),
Expand Down Expand Up @@ -87,3 +90,9 @@ impl From<PublicKeyError> for HyperlaneCosmosError {
HyperlaneCosmosError::PublicKeyError(value.to_string())
}
}

impl From<cometbft_rpc::Error> for HyperlaneCosmosError {
fn from(value: cometbft_rpc::Error) -> Self {
HyperlaneCosmosError::CometbftRpcError(Box::new(value))
}
}
2 changes: 1 addition & 1 deletion rust/main/chains/hyperlane-cosmos/src/interchain_gas.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ use std::ops::RangeInclusive;

use async_trait::async_trait;
use base64::{engine::general_purpose::STANDARD as BASE64, Engine};
use cometbft::abci::EventAttribute;
use once_cell::sync::Lazy;
use tendermint::abci::EventAttribute;
use tracing::instrument;

use hyperlane_core::{
Expand Down
Loading
Loading