October 27, 2022
This release fixes a critical vulnerability. It is strongly advised to upgrade.
- No longer panic when packet data is not valid UTF-8 (#199)
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.
- Make ClientType allow any string value as opposed to just Tendermint (#188)
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.
- Add missing Tendermint
ClientState
checks and make all its fields private. - Add a
frozen_height
input parameter toClientState::new()
. (#22). - Remove
Display
fromIbcEvent
(#144). - Remove
IbcEvent::Empty
(#144). - Make
client_state
field required inMsgConnectionOpenTry
andMsgConnectionOpenAck
. Necessary for correctness according to spec.
(#159). - Redesign the API to allow light client implementations to be hosted outside the ibc-rs repository. (#2483).
- Make client events compatible with ibc-go v5 (#144).
- Delete packet commitment in acknowledge packet handler regardless of channel ordering (#2229).
- Public PrefixedDenom inner type and add as_str func for BaseDenom (#161)
- Derive Hash for ModuleId (#179)
- Improved
core::ics04_channel
APIs, avoiding poor ergonomics of reference-to-tuple arguments and inconsistent ownership patterns. (#2603).
- Propose ADR05 for handlers validation and execution separation. (#2582).
August 22nd, 2022
- Remove
height
attribute fromIbcEvent
and its variants (#2542)
- Fix
MsgTimeoutOnClose
to verify the channel proof (#2534)
August 8th, 2022
- Remove Deserialize from IbcEvent and variants (#2481)
July 27th, 2022
- Remove provided
Ics20Reader::get_channel_escrow_address()
implementation and makecosmos_adr028_escrow_address()
public. (#2387)
- Fix serialization for ICS20 packet data structures (#2386)
- Properly process
WriteAcknowledgement
s on packet callback (#2424) - Fix
write_acknowledgement
handler which incorrectly used packet'ssource_{port, channel}
as key for storing acks (#2428)
- Propose ADR011 for light client extraction (#2356)
July 7th, 2022
- Change
ChannelId
representation to a string, allowing all IDs valid per ICS 024 (#2330).
- Fix
recv_packet
handler incorrectly queryingpacket_receipt
andnext_sequence_recv
using packet'ssource_{port, channel}
. (#2293) - Permit channel identifiers with length up to 64 characters, as per the ICS 024 specification. (#2330).
- Remove the concept of a zero Height (#1009)
- Complete ICS20 implementation (#1759)
- Derive
serde::{Serialize, Deserialize}
forU256
. (#2279) - Remove unnecessary supertraits requirements from ICS20 traits. (#2280)
May 23rd, 2022
- Fix packet commitment calculation to match ibc-go (#2104)
- Fix incorrect acknowledgement verification (#2114)
- fix connection id mix-up in connection acknowledgement processing (#2178)
- Remove object capabilities from the modules (#2159)
May 2nd, 2022
This is a legacy version with no ibc crate changes.
April 27th, 2022
- 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)
March 28th, 2022
- Refactored channels events in ICS 04 module (#718)
February 24th, 2022
- 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)
- Added more unit tests to verify Tendermint ClientState (#1706)
- Define CapabilityReader and CapabilityKeeper traits (#1769)
- Relayer Library
February 4th, 2022
This is a legacy version with no ibc crate changes.
January 27th, 2022
- Hide
ibc::Timestamp::now()
behindclock
feature flag (#1612)
- 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)
- Extract all
ics24_host::Path
variants into their separate types (#1760) - Disallow empty
CommitmentPrefix
andCommitmentProofBytes
(#1761)
January 13th, 2021
- Add the
frozen_height()
method to theClientState
trait (includes breaking changes to the TendermintClientState
API). (#1618) - Remove
Timestamp
API that depended on thechrono
crate: (#1665):Timestamp::from_datetime
; useFrom<tendermint::Time>
Timestamp::as_datetime
, superseded byTimestamp::into_datetime
- Delete packet commitment instead of acknowledgement in acknowledgePacket #1573
- Set the
counterparty_channel_id
correctly to fix ICS04chanOpenAck
handler verification (#1649) - Add missing assertion for non-zero trust-level in Tendermint client initialization. (#1697)
- Fix conversion to Protocol Buffers of
ClientState
'sfrozen_height
field. (#1710)
- Implement proof verification for Tendermint client (ICS07). (#1583)
- More conventional ad-hoc conversion methods on
Timestamp
(#1665): Timestamp::nanoseconds
replacesTimestamp::as_nanoseconds
Timestamp::into_datetime
substitutesTimestamp::as_datetime
November 23rd, 2021
- Set the connection counterparty in the ICS 003
connOpenAck
handler (#1532)
- Derive
PartialEq
andEq
onIbcEvent
and inner types (#1546)
October 29th, 2021
- Support for converting
ibc::events::IbcEvent
intotendermint::abci::Event
(#838) - Restructure the layout of the
ibc
crate to matchibc-go
's layout (#1436) - Implement
FromStr<Path>
to enable string-encoded paths to be converted into Path identifiers (#1460)
October 22nd, 2021
- The
check_header_and_update_state
method of theClientDef
trait (ICS02) has been expanded to facilitate ICS07 (#1214)
- Add ICS07 verification functionality by using
tendermint-light-client
(#1214)
October 4th, 2021
This is a legacy version with no ibc crate changes.
September 24th, 2021
September 14th, 2021
- Change all
*Reader
traits to returnResult
instead ofOption
(#1268) - Clean up modules' errors (#1333)
August 24th, 2021
- Set the index of
ibc::ics05_port::capabilities::Capability
(#1257)
- Implement
ics02_client::client_consensus::ConsensusState
forAnyConsensusState
(#1297)
August 2nd, 2021
- Add missing
Protobuf
impl forics03_connection::connection::Counterparty
(#1247)
- Use the
flex-error
crate to define and handle errors ([#1158])
July 22nd, 2021
- 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)
- Fix stack overflow in
MockHeader
implementation (#1192) - Align
as_str
andfrom_str
behavior inClientType
(#1192)
July 12th, 2021
This is a legacy version with no ibc crate changes.
June 22nd, 2021
This is a legacy version with no ibc crate changes.
June 3rd, 2021
- Started
unwrap
cleanup (#871)
May 21st, 2021
This is a legacy version with no ibc crate changes.
May 14h, 2021
- Process raw
delay_period
field as nanoseconds instead of seconds. (#927)
May 7h, 2021
- Fix parsing in
chain_version
when chain identifier has multiple dashes (#878)
April 14th, 2021
- Follow Rust guidelines naming conventions (#689)
- Per client structure modules (#740)
- MBT: use modelator crate (#761)
- Fix overflow bug in ICS03 client consensus height verification method (#685)
- Allow a conn open ack to succeed in the happy case (#699)
MsgConnectionOpenAck.counterparty_connection_id
is now aConnectionId
instead of anOption<ConnectionId>
(#700)
February 17, 2021
- Change event height to ICS height (#549)
- Fix panic in conn open try when no connection id is provided (#626)
- Disable MBT tests if the "mocks" feature is not enabled (#643)
- Implementation of the
ChanOpenAck
,ChanOpenConfirm
,ChanCloseInit
, andChanCloseConfirm
handlers (#316) - Remove dependency on
tendermint-rpc
(#624)
February 4, 2021
- Fix for storing
ClientType
upon 'create-client' (#513)
- The
ibc::handler::Event
is removed and handlers now produceibc::events::IBCEvent
s (#535)
December 23, 2020
This is a legacy version with no ibc crate changes.
December 2, 2020
- Implement flexible connection id selection (#332)
- ICS 4 Domain Types for channel handshakes and packets ([#315], #95)
- Introduce LightBlock support for MockContext (#389)
- 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)
October 19, 2020
- 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)
- 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, implementFrom
for all messages ([#253])
- Removed "Uninitialized" state from connection (#217)
- Disclosed bugs in ICS3 version negotiation and proposed a fix (#209, #213)
September 1, 2020
- Renamed
modules
crate toibc
crate. Version number for the new crate is not reset. (#198) ConnectionId
s are now decoded toVec<ConnectionId>
and validated instead ofVec<String>
(#185)- Removed
Connection
andConnectionCounterparty
traits (#193) - Removed
Channel
andChannelCounterparty
traits (#192)
- 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)
- Identifiers limit update according to ICS specs (#168)
August 1, 2020
- Refactor queries, paths, and Chain trait to reduce code and use protobuf instead of Amino. #152, #174, #155
- Channel closing datagrams in TLA+ #141
- Implemented better Raw type handling. #156
- Fixed the identifiers limits according to updated ics spec. #189
- Fix nightly runs. #161
- Fix for incomplete licence terms. #153
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.