Skip to content

Latest commit

 

History

History
682 lines (439 loc) · 22.1 KB

CHANGELOG.md

File metadata and controls

682 lines (439 loc) · 22.1 KB

CHANGELOG

v0.21.1

October 27, 2022

This release fixes a critical vulnerability. It is strongly advised to upgrade.

BUG FIXES

  • No longer panic when packet data is not valid UTF-8 (#199)

v0.21.0

October 24, 2022

This is a small release that allows new ClientTypes to be created, which was missed when implementing ADR 4. The changes are not consensus-breaking.

BREAKING CHANGES

  • Make ClientType allow any string value as opposed to just Tendermint (#188)

v0.20.0

October 19, 2022

This is a major release, which implemented ADR 4, as well as some miscellaneous bug fixes. Please see the corresponding sections for more information.

BREAKING CHANGES

  • Add missing Tendermint ClientState checks and make all its fields private.
  • Add a frozen_height input parameter to ClientState::new(). (#22).
  • Remove Display from IbcEvent (#144).
  • Remove IbcEvent::Empty (#144).
  • Make client_state field required in MsgConnectionOpenTry and MsgConnectionOpenAck. Necessary for correctness according to spec.
    (#159).
  • Redesign the API to allow light client implementations to be hosted outside the ibc-rs repository. (#2483).

BUG FIXES

  • Make client events compatible with ibc-go v5 (#144).
  • Delete packet commitment in acknowledge packet handler regardless of channel ordering (#2229).

FEATURES

  • Public PrefixedDenom inner type and add as_str func for BaseDenom (#161)

IMPROVEMENTS

  • Derive Hash for ModuleId (#179)
  • Improved core::ics04_channel APIs, avoiding poor ergonomics of reference-to-tuple arguments and inconsistent ownership patterns. (#2603).

DESIGN DECISIONS

  • Propose ADR05 for handlers validation and execution separation. (#2582).

v0.19.0

August 22nd, 2022

BREAKING CHANGES

  • Remove height attribute from IbcEvent and its variants (#2542)

BUG FIXES

  • Fix MsgTimeoutOnClose to verify the channel proof (#2534)

v0.18.0

August 8th, 2022

IMPROVEMENTS

  • Remove Deserialize from IbcEvent and variants (#2481)

v0.17.0

July 27th, 2022

BREAKING CHANGES

  • Remove provided Ics20Reader::get_channel_escrow_address() implementation and make cosmos_adr028_escrow_address() public. (#2387)

BUG FIXES

  • Fix serialization for ICS20 packet data structures (#2386)
  • Properly process WriteAcknowledgements on packet callback (#2424)
  • Fix write_acknowledgement handler which incorrectly used packet's source_{port, channel} as key for storing acks (#2428)

IMPROVEMENTS

  • Propose ADR011 for light client extraction (#2356)

v0.16.0

July 7th, 2022

BREAKING CHANGES

  • Change ChannelId representation to a string, allowing all IDs valid per ICS 024 (#2330).

BUG FIXES

  • Fix recv_packet handler incorrectly querying packet_receipt and next_sequence_recv using packet's source_{port, channel}. (#2293)
  • Permit channel identifiers with length up to 64 characters, as per the ICS 024 specification. (#2330).

IMPROVEMENTS

  • Remove the concept of a zero Height (#1009)
  • Complete ICS20 implementation (#1759)
  • Derive serde::{Serialize, Deserialize} for U256. (#2279)
  • Remove unnecessary supertraits requirements from ICS20 traits. (#2280)

v0.15.0

May 23rd, 2022

BUG FIXES

  • Fix packet commitment calculation to match ibc-go (#2104)
  • Fix incorrect acknowledgement verification (#2114)
  • fix connection id mix-up in connection acknowledgement processing (#2178)

IMPROVEMENTS

  • Remove object capabilities from the modules (#2159)

v0.14.1

May 2nd, 2022

This is a legacy version with no ibc crate changes.

v0.14.0

April 27th, 2022

BUG FIXES

  • Make all handlers emit an IbcEvent with current host chain height as height parameter value. (#2035)
  • Use the version in the message when handling a MsgConnOpenInit (#2062)

IMPROVEMENTS

  • Complete ICS26 implementation (#1758)
  • Improve ChannelId validation. (#2068)

v0.13.0

March 28th, 2022

IMPROVEMENTS

  • Refactored channels events in ICS 04 module (#718)

v0.12.0

February 24th, 2022

BUG FIXES

  • Fixed the formatting of NotEnoughTimeElapsed and NotEnoughBlocksElapsed in Tendermint errors (#1706)
  • IBC handlers now retrieve the host timestamp from the latest host consensus state (#1770)

IMPROVEMENTS

  • Added more unit tests to verify Tendermint ClientState (#1706)
  • Define CapabilityReader and CapabilityKeeper traits (#1769)
  • Relayer Library
    • Add two more health checks: tx indexing enabled and historical entries > 0 (#1388)
    • Changed ConnectionEnd::versions method to be non-allocating by having it return a &[Version] instead of Vec<Version> (#1880)

v0.11.1

February 4th, 2022

This is a legacy version with no ibc crate changes.

v0.11.0

January 27th, 2022

BREAKING CHANGES

  • Hide ibc::Timestamp::now() behind clock feature flag (#1612)

BUG FIXES

  • Verify the client consensus proof against the client's consensus state root and not the host's state root #1745
  • Initialize consensus metadata on client creation (#1763)

IMPROVEMENTS

  • Extract all ics24_host::Path variants into their separate types (#1760)
  • Disallow empty CommitmentPrefix and CommitmentProofBytes (#1761)

v0.10.0

January 13th, 2021

BREAKING CHANGES

  • Add the frozen_height() method to the ClientState trait (includes breaking changes to the Tendermint ClientState API). (#1618)
  • Remove Timestamp API that depended on the chrono crate: (#1665):
    • Timestamp::from_datetime; use From<tendermint::Time>
    • Timestamp::as_datetime, superseded by Timestamp::into_datetime

BUG FIXES

  • Delete packet commitment instead of acknowledgement in acknowledgePacket #1573
  • Set the counterparty_channel_id correctly to fix ICS04 chanOpenAck handler verification (#1649)
  • Add missing assertion for non-zero trust-level in Tendermint client initialization. (#1697)
  • Fix conversion to Protocol Buffers of ClientState's frozen_height field. (#1710)

FEATURES

  • Implement proof verification for Tendermint client (ICS07). (#1583)

IMPROVEMENTS

  • More conventional ad-hoc conversion methods on Timestamp (#1665):
  • Timestamp::nanoseconds replaces Timestamp::as_nanoseconds
  • Timestamp::into_datetime substitutes Timestamp::as_datetime

v0.9.0, the “Zamfir” release

November 23rd, 2021

BUG FIXES

IMPROVEMENTS

  • Derive PartialEq and Eq on IbcEvent and inner types (#1546)

v0.8.0

October 29th, 2021

IMPROVEMENTS

  • Support for converting ibc::events::IbcEvent into tendermint::abci::Event (#838)
  • Restructure the layout of the ibc crate to match ibc-go's layout (#1436)
  • Implement FromStr<Path> to enable string-encoded paths to be converted into Path identifiers (#1460)

v0.8.0-pre.1

October 22nd, 2021

BREAKING CHANGES

  • The check_header_and_update_state method of the ClientDef trait (ICS02) has been expanded to facilitate ICS07 (#1214)

FEATURES

  • Add ICS07 verification functionality by using tendermint-light-client (#1214)

v0.7.3

October 4th, 2021

This is a legacy version with no ibc crate changes.

v0.7.2

September 24th, 2021

v0.7.1

September 14th, 2021

IMPROVEMENTS

  • Change all *Reader traits to return Result instead of Option (#1268)
  • Clean up modules' errors (#1333)

v0.7.0

August 24th, 2021

BUG FIXES

  • Set the index of ibc::ics05_port::capabilities::Capability (#1257)

IMPROVEMENTS

  • Implement ics02_client::client_consensus::ConsensusState for AnyConsensusState (#1297)

v0.6.2

August 2nd, 2021

BUG FIXES

  • Add missing Protobuf impl for ics03_connection::connection::Counterparty (#1247)

FEATURES

  • Use the flex-error crate to define and handle errors ([#1158])

v0.6.1

July 22nd, 2021

FEATURES

  • Enable pub access to verification methods of ICS 03 & 04 (#1198)
  • Add ics26_routing::handler::decode function (#1194)
  • Add a pseudo root to MockConsensusState (#1215)

BUG FIXES

  • Fix stack overflow in MockHeader implementation (#1192)
  • Align as_str and from_str behavior in ClientType (#1192)

v0.6.0

July 12th, 2021

This is a legacy version with no ibc crate changes.

v0.5.0

June 22nd, 2021

This is a legacy version with no ibc crate changes.

v0.4.0

June 3rd, 2021

IMPROVEMENTS

  • Started unwrap cleanup (#871)

v0.3.2

May 21st, 2021

This is a legacy version with no ibc crate changes.

v0.3.1

May 14h, 2021

BUG FIXES

  • Process raw delay_period field as nanoseconds instead of seconds. (#927)

v0.3.0

May 7h, 2021

IMPROVEMENTS

  • Reinstated ics23 dependency (#854)
  • Use proper Timestamp type to track time (#758)

BUG FIXES

  • Fix parsing in chain_version when chain identifier has multiple dashes (#878)

v0.2.0

April 14th, 2021

FEATURES

  • Added handler(s) for sending packets ([#695]), recv. and ack. packets (#736), and timeouts (#362)

IMPROVEMENTS

  • Follow Rust guidelines naming conventions (#689)
  • Per client structure modules (#740)
  • MBT: use modelator crate (#761)

BUG FIXES

  • Fix overflow bug in ICS03 client consensus height verification method (#685)
  • Allow a conn open ack to succeed in the happy case (#699)

BREAKING CHANGES

  • MsgConnectionOpenAck.counterparty_connection_id is now a ConnectionId instead of an Option<ConnectionId>(#700)

v0.1.1

February 17, 2021

IMPROVEMENTS

  • Change event height to ICS height (#549)

BUG FIXES

  • Fix panic in conn open try when no connection id is provided (#626)
  • Disable MBT tests if the "mocks" feature is not enabled (#643)

BREAKING CHANGES

  • Implementation of the ChanOpenAck, ChanOpenConfirm, ChanCloseInit, and ChanCloseConfirm handlers (#316)
  • Remove dependency on tendermint-rpc (#624)

v0.1.0

February 4, 2021

FEATURES

  • Add MsgTimeoutOnClose message type (#563)
  • Implement MsgChannelOpenTry message handler (#543)

IMPROVEMENTS

  • Clean the validate_basic method (#94)
  • MsgConnectionOpenAck testing improvements (#306)

BUG FIXES:

  • Fix for storing ClientType upon 'create-client' (#513)

BREAKING CHANGES:

  • The ibc::handler::Event is removed and handlers now produce ibc::events::IBCEvents (#535)

v0.0.6

December 23, 2020

This is a legacy version with no ibc crate changes.

v0.0.5

December 2, 2020

FEATURES

  • Implement flexible connection id selection (#332)
  • ICS 4 Domain Types for channel handshakes and packets ([#315], #95)
  • Introduce LightBlock support for MockContext (#389)

IMPROVEMENTS

  • Split msgs.rs of ICS002 in separate modules (#367)
  • Fixed inconsistent versioning for ICS003 and ICS004 (#97)
  • Fixed get_sign_bytes method for messages (#98)
  • Homogenize ConnectionReader trait so that all functions return owned objects (#347)
  • Align with tendermint-rs in the domain type definition of block::Id (#338)

v0.0.4

October 19, 2020

FEATURES:

  • ICS03 Ack and Confirm message processors (#223)
  • Routing module minimal implementation for MVP (#159, #232)
  • Basic relayer functionality: a test with ClientUpdate ping-pong between two mocked chains (#276)

IMPROVEMENTS:

  • Implemented the DomainType trait for IBC proto structures (#245, #249).
  • ICS03 connection handshake protocol initial implementation and tests (#160)
  • Add capability to decode from protobuf Any* type into Tendermint and Mock client states
  • Cleanup Any* client wrappers related code
  • Migrate handlers to newer protobuf definitions (#226)
  • Extend client context mock (#221)
  • Context mock simplifications and cleanup (#269, #295, #296, #297)
  • Split msgs.rs in multiple files, implement From for all messages ([#253])

BUG FIXES:

  • Removed "Uninitialized" state from connection (#217)
  • Disclosed bugs in ICS3 version negotiation and proposed a fix (#209, #213)

v0.0.3

September 1, 2020

BREAKING CHANGES:

  • Renamed modules crate to ibc crate. Version number for the new crate is not reset. (#198)
  • ConnectionIds are now decoded to Vec<ConnectionId> and validated instead of Vec<String> (#185)
  • Removed Connection and ConnectionCounterparty traits (#193)
  • Removed Channel and ChannelCounterparty traits (#192)

FEATURES:

  • partial implementation of message handler (#119, #194)
  • partial implementation of message handler (#119, #194)
  • Proposal for IBC handler (message processor) architecture (#119, #194)
  • Documentation for the repository structure (#1)
  • Connection Handshake FSM English description (#122)

BUG FIXES:

  • Identifiers limit update according to ICS specs (#168)

v0.0.2

August 1, 2020

BREAKING CHANGES:

  • Refactor queries, paths, and Chain trait to reduce code and use protobuf instead of Amino. #152, #174, #155

FEATURES:

  • Channel closing datagrams in TLA+ #141

IMPROVEMENTS:

  • Implemented better Raw type handling. #156

BUG FIXES:

  • Fixed the identifiers limits according to updated ics spec. #189
  • Fix nightly runs. #161
  • Fix for incomplete licence terms. #153

0.0.1

July 1st, 2020

This is the initial prototype release of an IBC relayer and TLA+ specifications. There are no compatibility guarantees until v0.1.0.

Includes:

  • Client state, consensus state, connection, channel queries.
    • Note: deserialization is unimplemented as it has dependency on migration to protobuf for ABCI queries
  • IBC Modules partial implementation for datastructures, messages and queries.
  • Some English and TLA+ specifications for Connection & Channel Handshake as well as naive relayer algorithm.