Releases: informalsystems/ibc-rs
v0.57.0
Overview
This release introduces improvements to better support the Packet Forward Middleware, including asynchronous packet acknowledgments and enhanced contextual parsing of sender and receiver instances in ICS-20. The update removes the reliance on TryFrom<Signer> for parsing, improving flexibility in transaction handling.
Additionally, the "arbitrary" feature flag now enables the implementation of the Arbitrary trait, enhancing testing capabilities. Furthermore, Serde support has been added for Height without revision_number, facilitating better interoperability with CosmWasm light clients operating on the 08-wasm module of ibc-go.
There are no consensus-breaking changes in this release.
v0.56.0
Overview
This release upgrades the ibc-proto and tendermint-rs dependencies to v0.51.1 and v0.40.0, respectively. It also updates the minimum supported Rust version (MSRV) to 1.75.0.
There are no consensus-breaking changes in this release.
v0.55.1
Overview
This patch release fixes the Cargo.toml workspace file and adds a helper From<Infallible> implementation for ClientError.
There are no consensus-breaking changes in this release.
v0.55.0
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 ❤️
v0.54.0
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::nanosecondsfrom panicking by disallowing negative values fromtendermint::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!
v0.53.0
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.
v0.52.0
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!
v0.51.0
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
- define request/response domain types in ibc-query by @Farhad-Shabani in #1129
- remove
State::Uninitializedcheck while parsingConnectionEndby @rnbguy in #1126 - upgrade
ibc-proto-rsto0.42.2by @rnbguy in #1125 - refactor
Defaultimplementations with concrete names by @tropicaldog in #1099 - bump MSRV to
1.71.1by @rnbguy in #1119 - ADR-010 enabling standalone ICS-02 integration by @Farhad-Shabani in #1116
- refactor client relevant APIs to allow independent ICS-02 integration by @Farhad-Shabani in #1115
- disallow empty proof-specs and empty depth range in proof-specs by @gr4yha7 in #1104
- detach client state verifier enabling users to implement custom verifier by @seanchen1991 in #1097
- remove order_matches from ChannelEnd impl by @tropicaldog in #1095
- implement convenient path methods + add iteration key by @Farhad-Shabani in #1091
- use header height for Tendermint consensus state storage by @Farhad-Shabani in #1081
- deprecate
MsgSubmitMisbehaviourby @seanchen1991 in #1079 - Update
MsgUpdateClienthandlers to accept misbehaviour reports via itsclient_messagefield by @seanchen1991 in #1075 - uniformity in ownership and borrowing patterns for
*_update_metaargs by @Farhad-Shabani in #1072 - replace store_update_{time,height} by metadata update by @mina86 in #972
- add new storage paths by @rnbguy in #1069
- revert
frozen_heightto 0 for active clients in conversions by @Farhad-Shabani in #1064 - add frozen client check for
create_clienthandler by @Farhad-Shabani in #1063 - add missing dependencies for feature flags across multiple crates by @Farhad-Shabani in #1060
- drop frozen height check in
TryFromofTmClientStateby @Farhad-Shabani in #1062
v0.50.0
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-deriveto handle context with generic types and projects dependent onibc-coreby @Farhad-Shabani in #1037 - feat(ibc-client-wasm): implement
08-wasmclient 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
MockContextby @rnbguy in #1046 - imp(ibc-testkit): deprecate
MockContextmultiple 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 ofMockContext::with_client_configby @rnbguy in #1051 - imp(ibc-primitives): relocate
serializers.rswithin theibc-primitivesby @Farhad-Shabani in #1056 - imp(ibc-primitives): re-export
Timestamp&Durationfromibc_proto::google::protobufby @Farhad-Shabani in #1054
v0.49.1
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.
What's Changed
- feat: optimize
IdentifierErrorvariants by @mina86 in #942 - Update ibc-proto-rs to v0.39.1 by @seanchen1991 in #994
- Streamline Msg trait and rename to ToProto by @seanchen1991 in #995
- chore: More rigorous CosmWasm check and upgrade dependencies by @dzmitry-lahoda in #992
- imp: minimize
prostdependency by @Farhad-Shabani in #998 - imp: further minimization of
prostimports by @Farhad-Shabani in #1000 - imp: refactor
send-coins-*()and addmemofield toescrow-*andburn-*methods by @plafer in #836 - feat: introduce convenience Status::verify_is_active method by @mina86 in #1005
- fix: packet sequence in Timeout handlers should be encoded in big-endian by @en in #1004
- feat: derive AsRef for CommitmentProofBytes by @mina86 in #1008
- fix: recursive call in connection
Stateconversion toi32by @dhruvja in #1010 - imp: derive
HashonTimestampinstead of explicit implementation by @Farhad-Shabani in #1011 - imp: Implement custom JSON and Borsh deserialization for
ChainIdby @seanchen1991 in #1013 - imp: avoid unnecessary clones and validations when creating ClientId by @mina86 in #1015
- imp: use global paths in generated code by
ibc-deriveby @mina86 in #1017 - Release v0.48.2 by @Farhad-Shabani in #1018
- Release v0.49.0 by @seanchen1991 in #1021
- fix: typo in Cargo.toml + switch to tag branch for publishing crates by @seanchen1991 in #1024
- Release v0.49.1 by @Farhad-Shabani in #1026
New Contributors
Full Changelog: v0.48.2...v0.49.1