Informal Systems

2024-01-10

IBC Engineering Update: December 2023

Adi Seredinschi • 2024-01-10

Welcome to the December update from the IBC unit at Informal Systems. In this update, we'll be sharing the latest developments and progress we’ve made.

As mentioned before, the IBC unit in Informal Systems comprises two teams working closely together: one in charge of the Hermes IBC relayer (or the “relayer” team), and the other developing ibc-rs (which we sometimes call colloquially the “modules” team). This post covers updates from both teams regarding their work in December.

December was a shorter month than usual. At an organizational level, in Informal System we are pausing operations between Christmas and New Years Eve. We took advantage of this time to recover our strength, spend time with family and friends, reflect, and prepare for the year to come. Nevertheless, we do have numerous interesting developments to report. Buckle up!

Table of Contents

Updates on Hermes IBC Relayer

On the Hermes side, our key objective was to support the interchain ecosystem. Pursuing this objective reflected in three major threads of work in December.

First, we have released Hermes v1.7.4. Important improvements released in this version are in the monitoring subsystem of Hermes, as follows:

  1. the broadcast_errors metric now correctly batches the same errors together, and

  2. the backlog_* metrics now update more accurately whenever Hermes queries pending packets.

Beside monitoring improvements, we also enhanced the reliability of the idle worker clean-up and fixed a bug with the evidence command which would sometimes prevent the misbehaviour evidence from being reported. See the full changelog for release v1.7.4 here.

Second, we have added tests for Async Interchain Queries in Hermes, towards supporting the Provenance team's use-case, which relies on this feature. Relevant work here is in the PR #3711.

Third, we have worked with the Heliax team to add support for relaying Namada chain in the Hermes relayer. Our team has worked on the testing side (specifically, PR #18 in Namada’s fork of Hermes), which was based on the valuable work of Heliax engineers (see PR #3705 in Hermes).

Updates on IBC-rs

On the modules side, we have pursued two key objectives: (i) support chains in adopting ibc-rs, and (ii) scalable design to empower non-Cosmos chains. Both objectives are under the strategic outcome of expanding IBC beyond the Cosmos SDK. There’s loads of work that happened on these two tracks, so here we will only provide a quick overview. Please reach out to us if you’d like to know more about IBC stack in Rust and our work.

Supporting IBC adoption for Sovereign-based rollups

For the first key objective, our work heavily concerned IBC integration for the Sovereign SDK environment. Consequently, all the work here belongs to the https://github.com/informalsystems/sovereign-ibc/ repository. We have enhanced mock testing artefacts for Sovereign SDK integration (sov-ibc-mocks crate) to closely emulate real-world scenarios, thereby allowing us to execute a variety of tests. More specifically, we refactored mock rollup to work with generic DA layer (#49). We also defined the MockTendermint struct to mock Celestia as the DA layer for rollups (#51), among other changes. We have also added tests for Sovereign SDK integration for ICS20 (#47).

Working towards scalable APIs for non-Cosmos IBC adoption

For the second key objective, our work belongs mostly to the https://github.com/cosmos/ibc-rs/ repository. In this case, during December we made token transfer context APIs more flexible to better support Sovereign rollups and Composable Finance’s use cases (#836, #986). Among other improvements, we also decoupled dependencies between the sub-crates of ibc-rs (#997). We have documented these and other associated changes in a blog post early December last year: Paving the way for a v1 release of IBC-rs.

Other news

The ICF has approved our funding for 2024 and this can be publicly consulted here. That post describes our current understanding of the 2024 roadmap for our teams.

We're also excited to announce that we have moved the IBC-rs community call to consolidate it into the IBC Core community call. This call happens biweekly on Tuesdays. The public notes from the call are here, and to join the group see the information here.