Skip to content

Releases: cosmos/ibc-rs

v0.55.0

27 Sep 00:13
v0.55.0
a163056
Compare
Choose a tag to compare

Overview

This release brings major improvements to error handling in ibc-rs, giving hosting environments better control over errors and easier debugging for the developers. A key enhancement is the clearer distinction between host-sourced errors and those propagated by ibc-rs, effectively separating host-level errors from protocol-level ones. Therefore, a noticeable update is the renaming
of the previous ContextError to HandlerError, which now exclusively manages errors from IBC handlers. In parallel, a new HostError has been introduced to handle errors originating from hosts, particularly those from validation and
execution contexts. Additionally, error definitions within ibc-rs have been unified, reducing the granularity of error variants. For more details, please refer to ADR-011.

In addition, it introduces various fixes and enhancements. Notably, helper traits with default implementations have been added to simplify the conversion between host time types and Timestamp. Consequently, the ibc-primitives crate has been fully decoupled from the tendermint dependency.

It’s also worth noting that the cosmwasm workspace has been relocated to its own repository, now available under cosmwasm-ibc.

There are no consensus-breaking changes in this release.

Contributors ❤️

📖CHANGELOG: v0.54.0...v0.55.0

v0.54.0

12 Aug 18:12
v0.54.0
68268ec
Compare
Choose a tag to compare

Overview

This release includes a number of breaking changes, including separating the packet timeout timestamp from the host Timestamp via defining a new bespoke TimeoutTimestamp type. The cosmwasm feature flag has been removed. CosmWasm implementations have also been migrated into their own separate workspace under the cosmwasm directory in an effort to simplify dependency management.

Notable bug fixes include:

  • Correctly preventing expired client creation
  • Expiring clients when the elapsed time from a trusted header matches the trusting period
  • Allowing user-defined upgrade paths for client upgrades rather than just defaulting to UPGRADED_IBC_STATE
  • Preventing Timestamp::nanoseconds from panicking by disallowing negative values from tendermint::Time

Lastly, this release adds some new features, including allowing proof verification methods to accept custom paths, thus allowing light client developers to introduce custom path serialization logic into their applications. CosmWasm response types have been refactored to match the 08-wasm client API.

This release bumps the MSRV of ibc-rs to 1.72.1. prost has been bumped to 0.13.1. ibc-proto has been bumped to 0.47.0. tendermint dependencies have been bumped to 0.38.0. The cosmwasm dependency has also been bumped to 2.1.0.

There are no consensus-breaking changes as part of this release.

Contributors ❤️

Thank you to all of the external contributors who had a hand in this release: @simlecode, @yito88, @cario-dev, @TropicalDog17, @srdtrk, and @tzemanovic!

📖CHANGELOG: v0.53.0...v0.54.0

v0.53.0

14 May 17:32
v0.53.0
86a0ee0
Compare
Choose a tag to compare

Overview

This release includes of a revamp of the ibc-testkit crate, allowing it simulate scenarios that are more closely akin to real blockchain environments. Take a look at the associated ADR for more information.

This release also includes bug fixes for addressing an issue where packets without height and timestamp timeout were not being rejected, as well as one where the proof verification logic for PacketTimeouts on closed channels was not checking the correct fields.

The minimum-supported version of ibc-proto has been bumped to 0.44, and the minimum-supported version of tendermint has been bumped to 0.36. Note that the minimum-supported Rust version was reverted back to 1.71.1.

There are no consensus-breaking changes as part of this release.

📖CHANGELOG: v0.52.0...v0.53.0

v0.52.0

26 Apr 21:02
v0.52.0
67d0735
Compare
Choose a tag to compare

Overview

This release adds some exciting changes, improvements, and new features to ibc-rs.
First and foremost, support for the IBC protocol's client recovery
mechanism has been implemented, which provides a route for frozen and expired IBC clients
to be re-instated following a successful governance vote. In addition, a new crate,
ibc-client-cw, facilitates CosmWasm contract creation for light clients built using
ibc-rs. Lastly, the ics07 tendermint light client has also been packaged and included
as a CosmWasm contract.

This release also includes a myriad of other bug-fixes and improvements,
such as enhancing the portability of ibc-rs's Validation and Execution Context traits,
as well as fixing an incompatibility with how ibc-rs parses PrefixDenoms compared
to ibc-go, among many others.

The minimum-supported Rust version has been updated to 1.72. ibc-proto has been
bumped to 0.43. tendermint has been bumped to 0.35. ibc-derive has been
bumped to 0.7.

There are no consensus-breaking changes as part of this release.

Contributors ❤️

Thank you to all the external contributors who had a hand in this release: @mina86, @dhruvja, @tropicaldog, @penso, and @crodriguezvega!

📖CHANGELOG: v0.51.0...v0.52.0

v0.51.0

26 Mar 16:43
v0.51.0
5407030
Compare
Choose a tag to compare

Overview

This release introduces a few changes for better customizability. The main one is modularizing ICS-24, ICS-02, and ICS-07 trait implementations. This change empowers developers to write Rust light clients succinctly in a smart-contract context like CosmWasm. Also, the default Tendermint client state verifier is now detached to support custom verifiers, if required.

In addition, this version fixes a bug where the consensus state is incorrectly stored when a header with an older height is submitted.

Furthermore, a set of new host keys is added. This makes ibc-rs more consistent with the storage access of ibc-go. Also, access to client update information is merged into a single method; instead of individual details.

This release updates the ibc-proto-rs dependency to v0.42.2. This takes account of the updated MsgUpdateClient and deprecates MsgSubmitMisbehaviour. Also, ibc-derive dependency is updated to v0.6.1.

Finally, the minimum supported Rust version is corrected and updated to 1.71.1.

There are no consensus-breaking changes.

Contributors ❤️

@tropicaldog and @gr4yha7 made their first contributions. ✨ 👏
We thank all our external contributors: @mina86, @tropicaldog and @gr4yha7 🙏

What's Changed

📖CHANGELOG: v0.50.0...v0.51.0

v0.50.0

24 Jan 17:27
24a09d0
Compare
Choose a tag to compare

Overview

This release introduces several noteworthy libraries. A standout addition is the implementation of the ICS-721 NFT transfer application, enabling the transfer of NFT packets across chains that support this capability.

In addition, It incorporates the ICS-08 Wasm light client data structure and types. This empowers light client developers to create CosmWasm contracts for deployment on Cosmos chains compatible with the version of ibc-go supporting ICS-08 Wasm client.

Furthermore, this release addresses the issue with the macro derivation of the ClientState when contexts include generic types, exposes additional convenient types and serializers through ibc-primitives and includes a more flexible constructor for MockContext types within the ibc-testkit crate, allowing to write tests with diverse parameter combinations.

There are no consensus-breaking changes.

Contributors ❤️

Huge shout-out to the Heliax team and a special thanks to @yito88 from their crew for rocking the implementation of ICS-721 and smoothly integrating that into ibc-rs.

What's Changed

  • deps(ibc): update ibc-proto-rs to v0.41.0 by @Farhad-Shabani in #1036
  • fix(ibc-derive): refactor ibc-derive to handle context with generic types and projects dependent on ibc-core by @Farhad-Shabani in #1037
  • feat(ibc-client-wasm): implement 08-wasm client types by @Farhad-Shabani in #1031
  • chore(ibc-data-types): add missing domain and proto type re-exports by @Farhad-Shabani in #1041
  • imp(ibc-testkit): remove field access of MockContext by @rnbguy in #1046
  • imp(ibc-testkit): deprecate MockContext multiple init methods by @rnbguy in #1047
  • feat(ibc-app-nft-transfer): implement ICS-721 NFT transfer application by @yito88 in #1053
  • imp(ibc-testkit): deprecate MockContext::with_client* in favor of MockContext::with_client_config by @rnbguy in #1051
  • imp(ibc-primitives): relocate serializers.rs within the ibc-primitives by @Farhad-Shabani in #1056
  • imp(ibc-primitives): re-export Timestamp & Duration from ibc_proto::google::protobuf by @Farhad-Shabani in #1054

📖CHANGELOG: v0.49.1...v0.50.0

v0.49.1

04 Jan 01:23
f4ea799
Compare
Choose a tag to compare

This release continues the trend of further decoupling dependencies between the different ibc-rs sub-crates and modules.

In particular, the prost dependency is now only imported in the ibc-primitives crate; note that error variants originating from prost have largely been removed, which is a breaking change. The bytes dependency was also removed. Additionally, CommitmentProofBytes can now be accessed without explicit ownership of the object for which the proof is being queried for.

Some other improvements of note include making the CosmWasm check more rigorous, streamlining the Msg trait and renaming it to ToProto, as well as implementing custom JSON and Borsh ChainId deserialization.

There are no consensus-breaking changes.

📖CHANGELOG

What's Changed

New Contributors

Full Changelog: v0.48.2...v0.49.1

v0.48.2

22 Dec 09:27
Compare
Choose a tag to compare

This patch release resolves two issues. It corrects the packet sequence number
encoding within Timeout message handlers to align with the big-endian format and
addresses a recursive call error during the conversion from connection State
to i32.

There are no consensus-breaking changes.

📖CHANGELOG

v0.48.1

27 Nov 16:11
3be16b2
Compare
Choose a tag to compare

This patch release eliminates the dep: syntax from the serde feature, addressing potential dependency resolution issues stemming primarily from Rust v1.70.

There are no consensus-breaking changes.

📖CHANGELOG

v0.48.0

24 Nov 04:03
8c1766f
Compare
Choose a tag to compare

In this release, we have undertaken a comprehensive restructuring of the ibc-rs repository, resulting in a strategic reorganization of the codebase. This dissects the implementation of each IBC specification, categorizing and situating them within relevant libraries. The primary objective is to elevate ibc-rs practicality and enhance user flexibility by providing a more modular and composable experience.

Users now have the flexibility to choose from a spectrum of dependencies. They can opt to utilize the entire suite of meta-crates, such as ibc, ibc-core, ibc-clients, or ibc-apps. Alternatively, they can exercise fine-grained control by selectively importing specific crates. This can involve bringing in an entire implemented IBC sub-module, like the ibc-core-client crate, or importing only the associated data structures of a module, such as the ibc-core-client-types crate.

Furthermore, this release introduces optimizations centered around the construction and validation of ICS-24 host identifiers, aiming to curtail some heap allocations, beneficial for resource-constrained hosts.

There are no consensus-breaking changes.

📖CHANGELOG