Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

Commit

Permalink
Update with new changes including ICS20 (#12)
Browse files Browse the repository at this point in the history
* Release v0.15.0 (informalsystems#2234)

* Bump crates to v0.15.0 and ibc-proto to v0.18.0

* Include ibc-test-framework in release

* Slightly improve main Cargo doc for ibc-test-framework

* Fix components names

* Update changelog

* Update lockfile

Co-authored-by: Soares Chen <[email protected]>

* Add type ascription to fix build when `telemetry` feature is disabled (informalsystems#2235)

* Bump once_cell from 1.11.0 to 1.12.0 (informalsystems#2237)

* Add `ibc-test-framework` to the main README (informalsystems#2236)

* Add `ibc-test-framework` to the main README

* Cleanup

* Fix `execute_schedule` method leaking operational data (informalsystems#2118)

* Pull in upstream changes

* Adding integration test for execute_schedule

* Adding integration test for execute_schedule

* Finish stubbing out execute_schedule test

* Call `chains.shutdown` method

* Correctly shut down chain

* Shut down node b as well

* Debugging execute_schedule test

* Add Debug derivations

* Update integration test so that its flow correctly tests `execute_schedule`

* Attempt to perform a second IBC transfer

* Remove info's

* Increase sleep timeout duration

* Incorportate new test framework features

* Remove unnecessary `sleep` call

* Correctly use new test framework features

* Get assertions passing for now

* Send two transactions, one in each direction

* Add doc comment for test

* Improve panic messages

* Refactor test so that it is actually testing the desired behavior

* Attempt at fixing `execute_schedule` leaky logic

* Flesh out doc comments some more

* Remove a duplicate function

* Make use of OperationalDataTarget enum

* Remove redundant enum

* Remove some Debug derives

* Remove one more debug derive

* Add `try_fetch_scheduled_operational_data` back in

* Give `do_execute_schedule` a more descriptive name

* Improve `execute_schedule_for_target_chain` method's documentation

* Add a bunch of clarifying comments

* More clarification of comments

* Flesh out `OperationalData` docs

* Add changelog entry

* Incorporate PR feedback

Co-authored-by: Adi Seredinschi <[email protected]>

* Add `keys balance` command to query the balance for a key (informalsystems#2232)

* Added subcommand 'balance' for command 'keys' to output the account balance associated with a given key

* Added changelog entry for new command feature

* Updated Hermes guide to include the new keys balance command

* Improved error log for the CLI command and added doc comment

* fixed fmt by running cargo fmt

* Refactored query_balance to take key_name parameter. Added JSON output to keys balance command.

* Fixed typo in comment in CosmosSdkChain query_balance method

* Updated keys balance command to take the key_name as an optional flag

Co-authored-by: Luca Joss <[email protected]>
Co-authored-by: Romain Ruetschi <[email protected]>

* Model based testing on integration tests (informalsystems#2072)

* ics20 token transfer spec

* fixes for tla functions

* full spec

* update tla specs

* mbt driver code

* prepare for itf adoption

* itf deserializer

* description in comments

* fix type

* hack for apalache v0.20.2 (apalache-mc/apalache#1304)

* updated tla spec

* example itf.json

* code refactor

* prepare for mbt

* fix and update

* updated example

* updated trace types

* working mbt driver

* fix mbt test

* added mbt readme

* BinaryChainTest over BinaryChannelTest

* wait for established channel

* added packet state assertions

* improved mbt integration

* few fixes

* Refactor bootstrap chain and foreign client code

* Introduce BootstrapChannel/ConnectionOptions

* Increase timeout for assert_eventual_wallet_amount for CI

* Upgrade Rust to 1.60.0

* Fix fmt in Rust 1.60.0

* Update Rust MSRV to 1.60

* Try running CI integration test single-threaded

* Fix variable mixup

* Add MBT to CI

* Disable failing parse_itf test

* Disable test_self_connected_ibc_transfer

* Use gaia6 to run MBT test

* Debug log on CI

* save itf trace on failure

* initialize nested maps

* updated mbt code

* Use new Nix URL

* better fix to empty nested maps

* Remove stale comments

* Fix merge conflicts

Co-authored-by: Soares Chen <[email protected]>
Co-authored-by: Adi Seredinschi <[email protected]>

* Bump uuid from 1.0.0 to 1.1.0 (informalsystems#2247)

Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](uuid-rs/uuid@1.0.0...1.1.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add `query channel client` command to query a channel's client state (informalsystems#2248)

* Added new CLI command 'query channel client'

* Updated Hermes guide to include new query channel client command and updated changelog

* Added missing subcommand in Hermes guide, section 7.9.3

Co-authored-by: Luca Joss <[email protected]>

* Fix wrong `create channel` command in "Create a new path" page in the guide (informalsystems#2245)

Fix wrong `create channel` command in guide

Co-authored-by: Adi Seredinschi <[email protected]>

* Disable MBT tests on CI due to flakiness (informalsystems#2253)

* Complete ICS20 Implementation (informalsystems#1989)

* Add ics26 Module trait

* newtype for Acknowledgement

* Define Router interface

* Improve Router trait

* Update mock router impl

* Test for router API

* Disallow duplicate module_ids in MockRouter

* Add RouterBuilder for seal-style API

* Fix failing test

* Fix CI after merge

* Chainable RouterBuilder::add_route()

* Fix test

* Add Router::has_route() trait method

* Add comments

* Separate mutating/non-mutating trait methods for shadow-paging style API

* Make most Module trait methods optional

* Default impl for MockModule::on_chan_open_try()

* Acknowledgement trait

* Extend router test

* Simplify OnRechPacketResult using FnOnce()

* Cleanup

* Use Cow<str> for CapabilityName::new()

* Use Cow<str> for CapabilityName::new()

* Use newtype ModuleId instead of trait assoc type

* Module callbacks' args as refs

* Fix mock impl

* WIP channel callbacks

* Fix ModuleId ctor validation

* TypedCapability

* Use typed capabilities

* Add Router::route_mut()

* Implement pre-dispatch channel message validation

* Avoid cloning message during channel msg dispatch

* Add ChannelReader::lookup_module_by_channel()

* Complete ics4 dispatch with callbacks

* Fix compile errors from rebase

* Fix CI test

* Improve mock impl for capabilities

* cargo fmt

* Set channel version returned from on_chan_open_try()

* Implement packet handler verification

* Add missing check already received packets on ordered channels

* Avoid cloning message during packet msg dispatch

* Implement RecvPacket NoOp

* cargo fmt and remove unused errors

* Make on_recv_packet() Ack result optional

* Don't return Result from on_recv_packet() and pass GenericAcknowledgement to on_acknowledgement_packet()

* Implement packet callbacks

* Allow callbacks to write logs and emit events

* Fix test

* Add .changelog entry

* Add a comment for state rollback expectation from dispatch()

* ics26_routing::handler::deliver() takes single message as input

* ics26_routing::handler::deliver() returns logs as well

* Remove ctx_ro

* Callbacks return ModuleOutput<T>

* Return HandlerOutputBuilder from channel and packet dispatch fn

* Revert "Callbacks return ModuleOutput<T>"

This reverts commit 1d430c9.

* Address review feedback for comments

* Extract ChannelMsg::lookup_module()

* Add ICS20 Denom type

* Add ICS20 TracePrefix & TracePath type

* Define Coin and Decimal types

* Impl conversions from/to RawDenomTrace

* Make better use of derive-more

* Impl conversions for Coin type

* Add HashedDenom and polish DenomTrace impl

* Define PacketData domain type and conversions

* Use Coin domain type in MsgTransfer

* Fix usage of Coin type in relayer code

* Always panic on decimal arith overflow

* Polish generic Signer impl

* Implement ICS20 signer type

* Coin type with generic Denom param

* Use IbcCoin in MsgTransfer and PrefixedCoin in PacketData

* Minor refactoring

* Fix test_util

* Impl AsRef<[u8]> for GenericAcknowledgement

* Ics20Context is no longer a supertrait of Ics26Context

* Add ICS20 Ack type

* Add ICS20 event enum placeholder

* Define all ICS20 expected keepers and context

* Update send_transfer() for recent context changes

* Give mut ref to set_channel_escrow_address()

* Define ICS20 callback functions

* Fix test build

* Move denom derive functions to integration tests

* Add version to chan_open_try callback

* Rename ChannelId::counter() to sequence()

* Add AppModule error variant to ChannelError

* Implement validation helpers for callbacks

* Define Ics20 callback errors

* Implement channel handshake callbacks

* Fix clippy errors

* Impl Deserialize for PacketData

* Manually implement AsRef<str> for Signer

* Fix ICS20 Ack success from impl

* Add more ICS20 errors

* Improve ack type ctor

* Add ctor for TracePrefix

* Provide denom trace methods to remove prefix and check for empty trace path

* Implement conversion from PrefixedCoin to IbcCoin

* Add Ics20Reader trait methods to check send/receive enabled

* Provided trait method get_channel_escrow_address()

* Add BankReader trait for is_blocked_account()

* Add FromStr bound for Ics20Context::AccountId

* Use IbcCoins in Bank traits

* Impl on_recv_packet() for cases where receiver chain is source

* Fallible OnRecvPacket::write_fn()

* Complete on_recv_packet impl

* Fix test build

* Fix clippy errors

* Implement remaining packet callbacks for ICS20

* Make set_denom_trace() fallible

* Don't derive AsRef

* Complete send_transfer impl

* Manual deserialize impl for Acknowledgement

* Add ctor for Acknowledgement

* Handle packet-data deserialize error separately

* Use U256 for Denom and move bigint.rs to modules/src

* Rename Denom to Amount

* Cleanup

* Fix trait definitions

* Use source enum

* Fix AccountReader trait

* Validate port_id

* More refactoring

* Rename Signer to Address

* Use Address instead of Signer where applicable

* Fix send_transfer packet creation

* Fix clippy warnings

* Define ICS20 events

* Extract relay code into separate files

* Fix clippy warnings

* Make HandlerOutput/Builder generic over events

* Define ModuleEvent

* Add AppModule variant to IbcEvent

* Impl Display for Acknowledgement

* Derive serde for ModuleId

* Add ModuleId to ModuleEvent

* Impl conversion from tuple for ModuleEventAttribute

* Impl conversions from ICS20 events to ModuleEvent

* Add event for transfer

* Remove bech32 validation from Address

* Change MsgTransfer receiver type to Address

* Extract MockContext IbcStore

* Improve conversion from Signer to AccountId

* Add deliver method to Module trait

* Implement conversions for MsgTransfer to/from Protobuf Any

* Store packet result directly in send_transfer()

* Make all ICS20 mods public

* Make all IbsStore fields public to enable access for app modules

* Implement Ics20Context for DummyTransferModule

* Fix failing test

* Manual Clone impl for MockContext

* Fix failing test

* Revert "Fix failing test"

This reverts commit 40aec61.

* Fix MockContext Clone impl

* Update trait definitions after merge with master

* Replace ModuleOutput with ModuleOutputBuilder in callbacks

* Add inout param ModuleOutputBuilder to Ics20 callback handlers

* Emit ICS20 receive packet events

* Module::deliver() must be able to emit IbcEvents

* Allow HandlerOutputBuilder to merge HandlerOutput

* Emit transfer event

* Add AckStatusEvent

* Emit ICS20 ack events

* Emit ICS20 timeout events

* Remove ABCI error code

* Remove #[allow(unused)]

* Add log for send transfer

* MsgReceipt abstraction

* Handle missing IbcEvent to AbciEvent conversions for RecvPacket and TimeoutOnClose events

* Implement ModuleEvent to AbciEvent conversion

* Make send_transfer() public

* Allow empty TracePaths

* Fix TracePath multiple prefix parse bug

* Fix TracePath empty str parse bug

* Improve DenomTrace FromStr

* Add denom validation test

* Add denom trace and serde tests

* TracePath tests

* Allow Denom with '/'

* Fix HashedDenom FromStr impl for empty hash

* Minor refactoring

* Add IbcCoin tests

* Add .changelog entry

* Fix clippy errors

* Disallow empty Signer and replace Address with it

* Use ToString as trait bound for ICS20 AccountId

* Change AccountId trait bound from FromStr to TryFrom<Signer>

* Remove Signer::new()

* Delete OCap related TODO

* Remove the PortKeeper

* Remove Module::deliver()

* Fix clippy warnings

* Rename transfer module

* Rename mod relay

* Fix tests failing due to empty signer

* Rename PORT_ID const to PORT_ID_STR

* Fix escrow addr gen

* Test cosmos escrow addr gen

* Rename receiver account

* Remove `has_denom_trace()`

* Remove `BankReader::is_blocked_account()`

* Remove `AccountId::ToString` bound

* Remove `AccountReader`

* Mint/burn into user accounts directly

* Use `chunks_exact()` instead of `windows().step_by()`

* Rename `DenomTrace::has_prefix()` to `trace_starts_with()`

* Move trace related methods into `TracePath`

* Fix add/remove prefix

* Add test for add/remove trace prefix

* Set denom trace only if not already set

* Use truncate instead of drain in cosmos_adr028_escrow_address()

* Rename DenomTrace as PrefixedDenom

* Modify all `BankKeeper` methods to use `PrefixedCoin` instead of `IbcCoin`

* Rename `Denom` as `BaseDenom`

* Impl Into<U256> and checked_add/sub() for Amount

* Add more TracePath tests

* Test TracePath is_empty()

* Remove IbcCoin

* Remove HashedDenom and HashedCoin

* Fix test compilation

* Add comment for send_transfer()

* Functions for determining source chain

* Minor refactoring

* cargo fmt

* Derive serde for PacketCommitment and AcknowledgementCommitment

* docstring and comment

Co-authored-by: Philippe Laferriere <[email protected]>

* Merge commands `keys add` and `keys restore` into a single command. (informalsystems#2251)

* Merged commands 'keys add' and 'keys restore' into a single command, 'keys add'. Improved restoring a key with mnemonic by taking a file containing the mnemonic as input instead of taking the mnemonic as command line input

* Updated Hermes guide with new merged 'keys add' command. And updated changelog with improvement

* Fixed e2e setup script to take correct flag when adding keys

* Fixed small errors in Hermes guide and improved comments for changed 'keys add' command.

* Improved Hermes guide section 7.2

* Updated the Hermes guide section 7.2 to match actual features

* Bump moka from 0.8.4 to 0.8.5 (informalsystems#2246)

Bumps [moka](https://github.com/moka-rs/moka) from 0.8.4 to 0.8.5.
- [Release notes](https://github.com/moka-rs/moka/releases)
- [Changelog](https://github.com/moka-rs/moka/blob/master/CHANGELOG.md)
- [Commits](moka-rs/moka@v0.8.4...v0.8.5)

---
updated-dependencies:
- dependency-name: moka
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Adi Seredinschi <[email protected]>

* fmt

* rename LightClientContext to ReaderContext

* use host hash function in escrow address

* minor fix

* minor fix

Co-authored-by: Romain Ruetschi <[email protected]>
Co-authored-by: Soares Chen <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sean Chen <[email protected]>
Co-authored-by: Adi Seredinschi <[email protected]>
Co-authored-by: Luca Joss <[email protected]>
Co-authored-by: Luca Joss <[email protected]>
Co-authored-by: Ranadeep Biswas <[email protected]>
Co-authored-by: Luca Joss <[email protected]>
Co-authored-by: Shoaib Ahmed <[email protected]>
Co-authored-by: Philippe Laferriere <[email protected]>
  • Loading branch information
12 people authored Jun 2, 2022
1 parent 608cbf8 commit d860b98
Show file tree
Hide file tree
Showing 182 changed files with 5,523 additions and 1,084 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Merged commands `keys add` and `keys restore` into single command `keys add`. The flag to specify the key name for the CLI command `keys add` has been changed from `-n` to `-k`. Restoring a key now takes a file containing the mnemonic as input instead of directly taking the mnemonic. ([#1075](https://github.com/informalsystems/ibc-rs/issues/1075))
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Fix `execute_schedule` method dropping operational data due to improper
handling of errors. ([#2118](https://github.com/informalsystems/ibc-rs/issues/1153))
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Added CLI command `keys balance` which outputs the balance of an account associated with a
key. ([#912](https://github.com/informalsystems/ibc-rs/issues/912))
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Added CLI command `query channel client` which outputs the channel's client state.
([#999](https://github.com/informalsystems/ibc-rs/issues/999))
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Complete ICS20 implementation ([#1759](https://github.com/informalsystems/ibc-rs/issues/1759))
4 changes: 4 additions & 0 deletions .changelog/v0.15.0/summary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
This release brings a number of bug fixes, some performance improvements,
notably when [clearing packets](//github.com/informalsystems/ibc-rs/issues/2087),
as well as [new metrics](https://github.com/informalsystems/ibc-rs/issues/2112)
for better observability of the relayer's operations.
39 changes: 39 additions & 0 deletions .github/workflows/integration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -173,3 +173,42 @@ jobs:
nix shell .#python .#ica -c cargo \
test -p ibc-integration-test --features ica --no-fail-fast -- \
--nocapture --test-threads=1 test_ica_filter
model-based-test:
runs-on: ubuntu-latest
strategy:
matrix:
gaiad:
- gaia6
steps:
- uses: actions/checkout@v2
- uses: cachix/install-nix-action@v15
with:
install_url: https://nixos-nix-install-tests.cachix.org/serve/vij683ly7sl95nnhb67bdjjfabclr85m/install
install_options: '--tarball-url-prefix https://nixos-nix-install-tests.cachix.org/serve'
extra_nix_config: |
experimental-features = nix-command flakes
- uses: cachix/cachix-action@v10
with:
name: cosmos
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- uses: Swatinem/rust-cache@v1
- uses: actions-rs/cargo@v1
with:
command: test
args: -p ibc-integration-test --features mbt --no-fail-fast --no-run
# Disable running MBT tests until flakiness is addressed
# - env:
# RUST_LOG: debug
# RUST_BACKTRACE: 1
# NO_COLOR_LOG: 1
# run: |
# nix shell \
# .#${{ matrix.gaiad }} \
# .#apalache \
# -c cargo \
# test -p ibc-integration-test --features mbt --no-fail-fast -- \
# --nocapture --test-threads=1 mbt
53 changes: 51 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,54 @@
# CHANGELOG

## v0.15.0

*May 23rd, 2022*

This release brings a number of bug fixes, some performance improvements,
notably when [clearing packets](//github.com/informalsystems/ibc-rs/issues/2087),
as well as [new metrics](https://github.com/informalsystems/ibc-rs/issues/2112)
for better observability of the relayer's operations.

### BUG FIXES

- [IBC Modules](modules)
- Fix packet commitment calculation to match ibc-go
([#2104](https://github.com/informalsystems/ibc-rs/issues/2104))
- Fix incorrect acknowledgement verification
([#2114](https://github.com/informalsystems/ibc-rs/issues/2114))
- fix connection id mix-up in connection acknowledgement processing
([#2178](https://github.com/informalsystems/ibc-rs/issues/2178))
- [Relayer Library](relayer)
- Fix a bug where connection and channel handshakes would fail with non-batching transactions
([#1971](https://github.com/informalsystems/ibc-rs/issues/1971))
- Fixed client expiry computation to avoid using local time.
([#2180](https://github.com/informalsystems/ibc-rs/issues/2180))

### FEATURES

- General
- Replaced gaia v5 with v7 in E2E tests.
([#1986](https://github.com/informalsystems/ibc-rs/issues/1986))
- [Relayer Library](relayer)
- Add six new metrics: `wallet_balance`, `ws_events`, `ws_reconnect`,
`tx_latency_submitted`, `tx_latency_confirmed`, `msg_num`
([#2112](https://github.com/informalsystems/ibc-rs/issues/2112))

### IMPROVEMENTS

- [IBC Modules](modules)
- Remove object capabilities from the modules
([#2159](https://github.com/informalsystems/ibc-rs/issues/2159))
- [Relayer Library](relayer)
- Ensure `max_msg_num` is between 1 and 100 with a default of 30
([#1971](https://github.com/informalsystems/ibc-rs/issues/1971))
- Fixed misleading error message leaking from the misbehavior detection task.
([#2031](https://github.com/informalsystems/ibc-rs/issues/2031))
- Added support for incremental processing of packet clearing commands.
([#2087](https://github.com/informalsystems/ibc-rs/issues/2087))
- Implement ADR 9: add domain type for request messages that are passed to query
functions ([#2192](https://github.com/informalsystems/ibc-rs/issues/2192))

## v0.14.1

*May 2nd, 2022*
Expand Down Expand Up @@ -562,7 +611,7 @@ then on top of the changes above, `mode.connections.enabled` and `mode.channels.
*October 29th, 2021*

This is the final release of version 0.8.0, which now depends on the official releases of the `prost` and `tonic` crates.
In addition to everything that's included in v0.8.0-pre.1, this release updates the minimum supported Rust version to 1.56,
In addition to everything that's included in v0.8.0-pre.1, this release updates the minimum supported Rust version to 1.56,
and contains various bug fixes and performance improvements which make the relayer more reliable.

#### Notice for operators
Expand Down Expand Up @@ -592,7 +641,7 @@ For Cosmos-SDK chains a good approximation is `timeout_propose` + `timeout_commi
- Update to official releases of `prost` 0.9 and `tonic` 0.6
([#1502](https://github.com/informalsystems/ibc-rs/issues/1502))
- [IBC Modules](modules)
- Support for converting `ibc::events::IbcEvent` into `tendermint::abci::Event`
- Support for converting `ibc::events::IbcEvent` into `tendermint::abci::Event`
([#838](https://github.com/informalsystems/ibc-rs/issues/838))
- Restructure the layout of the `ibc` crate to match `ibc-go`'s [layout](https://github.com/cosmos/ibc-go#contents)
([#1436](https://github.com/informalsystems/ibc-rs/issues/1436))
Expand Down
Loading

0 comments on commit d860b98

Please sign in to comment.