Releases: cosmos/ibc-rs
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::nanoseconds
from 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 PacketTimeout
s 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 PrefixDenom
s 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::Uninitialized
check while parsingConnectionEnd
by @rnbguy in #1126 - upgrade
ibc-proto-rs
to0.42.2
by @rnbguy in #1125 - refactor
Default
implementations with concrete names by @tropicaldog in #1099 - bump MSRV to
1.71.1
by @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
MsgSubmitMisbehaviour
by @seanchen1991 in #1079 - Update
MsgUpdateClient
handlers to accept misbehaviour reports via itsclient_message
field by @seanchen1991 in #1075 - uniformity in ownership and borrowing patterns for
*_update_meta
args 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_height
to 0 for active clients in conversions by @Farhad-Shabani in #1064 - add frozen client check for
create_client
handler by @Farhad-Shabani in #1063 - add missing dependencies for feature flags across multiple crates by @Farhad-Shabani in #1060
- drop frozen height check in
TryFrom
ofTmClientState
by @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-derive
to handle context with generic types and projects dependent onibc-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 ofMockContext::with_client_config
by @rnbguy in #1051 - imp(ibc-primitives): relocate
serializers.rs
within theibc-primitives
by @Farhad-Shabani in #1056 - imp(ibc-primitives): re-export
Timestamp
&Duration
fromibc_proto::google::protobuf
by @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
IdentifierError
variants 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
prost
dependency by @Farhad-Shabani in #998 - imp: further minimization of
prost
imports by @Farhad-Shabani in #1000 - imp: refactor
send-coins-*()
and addmemo
field 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
State
conversion toi32
by @dhruvja in #1010 - imp: derive
Hash
onTimestamp
instead of explicit implementation by @Farhad-Shabani in #1011 - imp: Implement custom JSON and Borsh deserialization for
ChainId
by @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-derive
by @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
v0.48.2
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.
v0.48.1
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.