From 306645dc1159e716229edd6280af9718ef4494a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?colin=20axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Wed, 3 Aug 2022 16:33:46 +0200 Subject: [PATCH] bump 02-client-refactor branch to tip of main (#1867) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix mirgation docs (#1091) * fix: handle testing update client errors (#1094) * replace channel keeper with IBC keeper in AnteDecorator (#950) * replace channel keeper with IBC keeper in AnteDecorator and pass message to rpc handler * fix error checking condition * fix for proper way of getting go context * refactor tests for ante handler * review comment * review comments and some fixes * review comments * execute message for update client as well * add migration Co-authored-by: Carlos Rodriguez * add backport rules for v1.4.x and v2.2.x (#1085) * ibctesting: custom voting power reduction for testing (#939) * ibctesting: custom voting power reduction for testing * changelog * fix * make T public * fix * revert changes * fix test * build(deps): bump github.com/spf13/cobra from 1.3.0 to 1.4.0 (#1105) * build(deps): bump google.golang.org/grpc from 1.44.0 to 1.45.0 (#1098) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.44.0 to 1.45.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.44.0...v1.45.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: adjust InitModule to account for empty controller and host keepers (#1120) ## Description closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [x] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [x] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [x] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [x] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [x] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [x] Review `Codecov Report` in the comment section below once CI passes * Merge pull request from GHSA-j658-c98j-fww4 Co-authored-by: Carlos Rodriguez * fixes for the documentation about handling ack for SDK <= 0.45 (#1122) * fixes for documentation * review comment Co-authored-by: Carlos Rodriguez * Allow testing to update ValidatorSet (#1003) * testing: adding multiple sender accounts for testing puproses * fix genesis setup (#936) * Update testing/chain.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * refactor: code hygiene * Update testing/chain.go Co-authored-by: Aditya * multi validator commit taken from @saione * add function to pass custom valset * create simplest failing test * progress * fix changevalset test * fix errors in tendermint package * fix client types test * fix client keeper * fix cap functions * fix genesis core tests * fix ica tests * fix doc * CHANGELOG * replace signer array with signer map * add documentation * fix merge * documentation * ordered signer array doc * add new delegation and comment to change valset test Co-authored-by: Sean King Co-authored-by: Sean King Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: Carlos Rodriguez * imp: create codeql-analysis action (#1128) ## Description Noticed that [CodeQL](https://codeql.github.com/) wasn't enabled on the IBC-go repo --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [ ] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [ ] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * update changelog (#1131) * update changelog * fix typo * build(deps): bump github.com/stretchr/testify from 1.7.0 to 1.7.1 (#1134) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.7.0 to 1.7.1. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.7.0...v1.7.1) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Damian Nolan * call packet.GetSequence() rather than passing the func as argument (#1130) * call packet.GetSequence() rather than passing the func as argument * add changelog entry * fix: prefix ResponseResultType enum for proto linting (#1143) * build(deps): bump actions/cache from 2.1.7 to 3 (#1150) Bumps [actions/cache](https://github.com/actions/cache) from 2.1.7 to 3. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2.1.7...v3) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fixes for go-releaser configuration (#1148) * set the pre-release status if the tag contains alpha, beta or rc * add separate filter for final releases * add banner image (#1158) Co-authored-by: Carlos Rodriguez * Add alpha, beta, and rc release definitions (#1151) ## Description The proposed definitions for each phase of our release cycle. Please feel free to adjust my wording closes: #881 --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [ ] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [ ] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * build(deps): bump google.golang.org/protobuf from 1.27.1 to 1.28.0 (#1164) Bumps [google.golang.org/protobuf](https://github.com/protocolbuffers/protobuf-go) from 1.27.1 to 1.28.0.
Release notes

Sourced from google.golang.org/protobuf's releases.

v1.28.0

Overview

The release provides a new unmarshal option for limiting the recursion depth when unmarshalling nested messages to prevent stack overflows. (UnmarshalOptions.RecursionLimit).

Notable changes

New features:

  • CL/340489: testing/protocmp: add Message.Unwrap

Documentation improvements:

  • CL/339569: reflect/protoreflect: add more docs on Value aliasing

Updated supported versions:

UnmarshalOption RecursionLimit

  • CL/385854: all: implement depth limit for unmarshalling

The new UnmarshalOptions.RecursionLimit limits the maximum recursion depth when unmarshalling messages. The limit is applied for nested messages. When messages are nested deeper than the specified limit the unmarshalling will fail. If unspecified, a default limit of 10,000 is applied.

In addition to the configurable limit for message nesting a non-configurable recursion limit for group nesting of 10,000 was introduced.

Upcoming breakage changes

The default recursion limit of 10,000 introduced in the release is subject to change. We want to align this limit with implementations for other languages in the long term. C++ and Java use a limit of 100 which is also the target for the Go implementation.

Commits
  • 32051b4 all: release v1.28.0
  • 3992ea8 all: implement depth limit for unmarshaling
  • e5db296 all: update supported versions
  • 3a9e1dc all: gofmt all
  • 26e8bcb all: remove unnecessary string([]byte) conversion in fmt.Sprintf with %s
  • 5aec41b testing/protocmp: add Message.Unwrap
  • 05be61f reflect/protoreflect: add more docs on Value aliasing
  • b03064a all: start v1.27.1-devel
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/protobuf&package-manager=go_modules&previous-version=1.27.1&new-version=1.28.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
* fix typos in the controller params (#1172) ## Description closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * add versions for new releases (#1175) ## Description closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * fix: link checker reporting broken milestone link (#1200) * update roadmap for q2 2022 and deleted history roadmap (don't think we'll need it) * requirements document for ICA (#1173) * add requirements document for interchain accounts * fix branch * added number in tittle. * apply suggestions from review Co-authored-by: Aditya * review comment Co-authored-by: Carlos Rodriguez Co-authored-by: Aditya * imp: improve Logger performance (#1160) * fix: Logger marshal errors * changelog * update * ICS 29: Fee Middleware (#276) * scaffolding for 29-fee (#274) * scaffolding for 29-fee * fix build * update keeper test * remove module test * feat: adding proto files for fee payment middleware (#272) * feat: adding proto files for fee payment middleware * grammar * fix: remove generated .pb files * fix: comment * feat: adding PacketId type * refactor: fee / genesis * refactor: escrowed fees map * Apply suggestions from code review Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update proto/ibc/applications/middleware/fee/v1/tx.proto Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update proto/ibc/applications/middleware/fee/v1/tx.proto Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update proto/ibc/applications/middleware/fee/v1/tx.proto Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * refactor: use packetID + minor changes * feat: adding query for all incentivized packets + some fixes * feat: adding pagination to incentivized query * fix: removing generated ibc directory + adding import/yaml * fix: naming * increase max depth for proto file searching and make proto all * Update proto/ibc/applications/middleware/fee/v1/fee.proto Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * refactor: remove file imports/add yaml/add argument for requests * refactor: updating IdentifiedPacketFee * fix: remove hidden file * removing middleware dir & adding query * remove junk file and update query rpcs * Apply suggestions from code review * Apply suggestions from code review * remove query yaml, make proto-all Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: Aditya Sripal * fix: removing unncessary fields MsgEscrow & adding query params (#300) * fix: removing unncessary fields MsgEscrow & adding query params * fix: grammar * fix: add yaml * feat: #258 Register Counterparty Address (#376) * feat: adding MsgServer for RegisterCounterPartyAddress & EscrowPacketFree * test: adding test for ValidateBasic * fix: removing validate basic check * fix: removing empty file * Update modules/apps/29-fee/keeper/msg_server.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update modules/apps/29-fee/types/msgs.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update modules/apps/29-fee/types/keys.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update modules/apps/29-fee/keeper/keeper.go Co-authored-by: Aditya * fix: fixing typos, variable names, comments * fix: updating import comments * test: adding test for KeyRelayerAddress * update: comments & key_test * Update modules/apps/29-fee/keeper/msg_server.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * fix: error message * docs: updating RegisterCounterpartyAddress fn description Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: Aditya * fix: remove comments for imports (#385) * feat: Add handshake logic to ics29 (#307) * do handshake logic, create test file * do cap logic and fix build * open handshake implementation and tests * remove prints * Update modules/apps/29-fee/module.go Co-authored-by: Sean King * debugging progress * fee enabled flag * cleanup handshake logic * fix tests * much cleaner simapp * split module.go file * cleanup and docs * assert IBC interfaces are fulfilled in middleware * Update modules/apps/transfer/module.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * fix unnecessary crossing hello logic * fix version negotiation bugs and improve tests * cleanup tests * Apply suggestions from code review Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * address rest of colin comments Co-authored-by: Sean King Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Fee Middleware: Escrow logic (#465) * fix: adding second endpoint for async pay fee + renaming types * feat: adding escrow logic * feat: updating proto types & escrow logic * fix: stub fn & proto comment * feat: adding PayFee & PayFeeTimeout & escrow_test * test: adding happy path for EscrowPacketFee * fix: comments, error handling * fix: comments & grammar * test: adding unhappy path for escrow * tests(escrow): adding hasBalance check for module acc * test(PayFee): adding happy path for PayFee tests * tests(PayFee, PayFeeTimeout): adding tests * fix: adding relayers back to IdentifiedPacket * fix: removing refund acc from key * fix: storing IdentifiedPacketFee in state instead of Fee * feat: adding msg_server test for registerCPAddr, wiring for codec + stubs for sdk.Msg interface * test: adding msg_server test for PayPacketFee * test: adding PayPacketFeeAsync msg_server test * chore: updating PayFee -> DistributeFee & minor nits * nit: removing unnecessary nil check * refactor: add portId to store key & use packetId as param * fix: add DeleteFeeInEscrow & remove fee on successful distribution * tests: adding validation & signer tests for PayFee/Async & updating proto to use Signer sdk standard * chore: adding NewIdentifiedPacketFee fn * fix: getter/setter for counterparty address + fix NewIdentifiedPacketFee * fix: updating EscrowPacketFee with correct usage of coins api * test: adding balance check for refund acc after escrow * fix: remove unncessary errors * test: updating escrow tests + miscellaneous fixes * nit: updating var names * docs: godoc * refactor: IdentifiedPacketFee & Fee no longer pointers * fixes: small fixes * Update modules/apps/29-fee/keeper/escrow.go Co-authored-by: Aditya * Update modules/apps/29-fee/keeper/escrow.go Co-authored-by: Aditya * Update modules/apps/29-fee/keeper/keeper.go Co-authored-by: Aditya * Update modules/apps/29-fee/keeper/msg_server.go Co-authored-by: Aditya * Update modules/apps/29-fee/keeper/msg_server.go Co-authored-by: Aditya * Update modules/apps/29-fee/types/msgs.go Co-authored-by: Aditya * nit: proto doc & error fix * fix: escrow test * test: updating distribute fee tests * test: adding validation check for fee and updating tests * test: allow counterparty address to be arbitrary string * fix: message validation should pass if one fee is valid * Update modules/apps/29-fee/keeper/escrow.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update modules/apps/29-fee/keeper/escrow.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * fix: nits * Update modules/apps/29-fee/keeper/escrow.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * test: adding isZero check for msgs Co-authored-by: Aditya Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * feat: update protos, grpc queries (#488) * store refund address in IdentifiedPacketFee (#546) * 29-Fee: Genesis (#557) * proto: adding genesis state * feat: add GetAllIdentifiedPacketFees * feat: adding genesis.go & updating proto + app.go * fix: removing PortId from genesis * feat: adding GetAll for relayer addr/fee enabled chan + update genesis * test: TestExportGenesis * feat: update type + hook up to module.go * fix: remove PortKey * fix: imports + remove scoped keeper * nit: using NewPacketId helper and updating helper def to have correct params * feat: adding genesis validation + tests (#561) * feat: adding genesis validation + tests * fix: imports * Update modules/apps/29-fee/types/genesis.go * fix: nit * Update modules/apps/29-fee/types/genesis_test.go Co-authored-by: Aditya * nit: imporve default gen val test * chore: move packetId + val to channeltypes and use validate fn Co-authored-by: Aditya * feat: add incentivised ack proto (#564) * proto file * incentivized ack proto * Fee Closing Handshake (#551) * add iterate logic * add closing logic with tests * add comments for panic * change invariant breaking recovery to disabling middleware rather than panicing * docs, tests, minor refactor * Fee Middleware: Add ICS4 wrapper (#562) * chore: add ICS4 wrapper * fix: remove channelKeeper sender packet * chore: add WriteAck * feat: ics 29 packet callbacks (#357) * update imports to v3 * regenerate proto files * fix build * fix: event caching for fee distribution (#661) * proto file * initial impl * apply self review suggestions Deduplicate fee distribution code. Rename DistributeFee to DistributePacketFees. Rename DistributeFeeTimeout to DistributePacketFeesOnTimeout * fixup tests rename validCoins. DistributePacketFeesOnTimeout no longer has a valid error case Add test case for invalid forward relayer address on DistributePacketFees. * partially fix tests timeout fee is still being distributed depsite WriteFn() not being called * fix tests * address code nit Co-authored-by: Colin Axnér <25233464+colin-axner@users.noreply.github.com> * ics4 callbacks fee middleware (#580) * feat: adding WriteAcknowledgement * updating genesis & relayer prefix * fix: comment * fix: comments * Update modules/apps/29-fee/keeper/relay.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * feat: add DeleteForwardRelayerAddr helper + use Set in ack * fix: SetForwardAddr * chore: add panic * fix: remove fmt * test: add WriteAcknowledgement test * Update modules/apps/29-fee/ibc_module.go Co-authored-by: Aditya * fix: remove print * fix: WriteAck * fix: use constructor * Update modules/apps/29-fee/keeper/keeper.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * fix: nits * fix: remove found var not used * test: adding check that forward relayer address is successfully deleted if set * fix: merge issues Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: Aditya * chore: making PacketId non nullable (#737) * nits: proto spacing + naming (#739) * nits: proto spacing + naming * nit: update comment * fix: go.mod * nit: option above import proto * fix: spacing * sean/fix-proto-identified-fee-not-null (#746) * nits: more ics29 nits (#741) * nits: remove capital from error + add godoc * nit: add Wrapf * nit: use strings.TrimSpace * nit: add err type for MsgPayPacketFee * refactor: app version + add comment (#750) * chore: remove error * test: add test for whitespaced empty string * nit: update err syntax (#747) * nit: update err syntax * nit: more * nit: err syntax * feat: adding Route, Type, GetSignBytes for all messages (#743) * feat: adding Route, Type, GetSignBytes for all messages * tests: adding tests for Route/Type/GetSignBytes * hygiene: add validate fn for Fee (#748) * hygiene: add validate fn for Fee * Update modules/apps/29-fee/types/msgs.go Co-authored-by: Damian Nolan * fix: error message * test: move Validate to fee.go & abstract out test * chore: remove test cases Co-authored-by: Damian Nolan * fix: app.go (#789) * refactor: ics29 json encoded version metadata (#883) * adding metadata type to ics29 protos * updating ics29 handshake handlers to support json encoded metadata * updating tests to support json encoded metadata * Update modules/apps/29-fee/ibc_module.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update modules/apps/29-fee/ibc_module.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * renaming metadata version to fee_version Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * fix: return nil on OnRecvPacket for async pay (#911) * nit: ics29 comments (#910) * fix: comments * Update modules/apps/29-fee/keeper/escrow.go Co-authored-by: Aditya * chore: Add transfer test for ics29 (#901) * begin writing transfer test for ics29 * finish writing transfer test * refactor: ics29 OnChanOpenInit callback tests now use mock module (#924) * refactor: OnChanOpenInit callback tests now use mock module * Update modules/apps/29-fee/fee_test.go * feat: allow multiple addrs to incentivize packets (#915) * [WIP] allow multiple addresses to incentivize a packet * distribute multiple fees, fix broken tests * use NewIdentifiedPacketFees in EscrowPacketFee * cleanup var naming * removing commented out code and adding test case * Update modules/apps/29-fee/ibc_module.go Co-authored-by: Aditya * fix: refund RecvFee if ForwardAddr is invalid * test: update tests to distribute multiple identified fees * refactor: clean up DistrPacketFees * refactor: using .Empty() helper func for code hygiene Co-authored-by: Aditya Co-authored-by: Sean King Co-authored-by: Sean King * chore: remove spec directory from ics29 (#934) * refactor: use mock module for ics29 closing handshakes (#926) * refactor: use mock module for closing handshakes in ics29 * self-review fix * refactor: use mock module for ics29 grpc_query_test.go (#933) * refactor: readjust keeper_test.go to use mock module (#930) * fix: fields for genesis should be non nullable (#938) * refactor: use mock module for ics29 escrow_test.go (#932) * refactor: use mock module for ics29 genesis_test.go (#931) * ics29:feat: emit event escrow (#914) * feat: emit EventTypeSendIncentivizedPacket event on EscrowPacket * fix: string conversion * refactor: add helper fn for emit event * chore: godoc * nit: use .String()) * refactor: OnRecvPacket to use mock module (#927) Co-authored-by: Sean King * refactor: ics29 OnChanOpenTry/Ack use mock module for testing instead of ics20 (#925) Co-authored-by: Sean King * refactor: use mock module for OnAcknowledgePacket callback testing (#929) Co-authored-by: Sean King * refactor: OnTimeoutPacket to use mock module (#928) Co-authored-by: Sean King * chore: add packet id arg to EscrowPacketFee (#951) * adding packet id arg to EscrowPacketFee * updating tests * review adaptations * chore: remove legacy testing functions (#954) * fix:ics29: WriteAck update + adding success bool to IncentivizedAck (#952) * fix: updating WriteAck & adding Success boolean to IncentivizedAcknowledgement * feat: adding check of is fee enabled * nit: change successful to underlying_application_success * test: adding seperate test for fee disabled write async * Update modules/apps/29-fee/ibc_module_test.go Co-authored-by: Aditya * test: adding check to compare hash of acks * fix: var name Co-authored-by: Aditya * chore: add cli cmd to incentivize existing packet (async) (#965) * chore: add cli to incentivize existing packets * Update modules/apps/29-fee/client/cli/cli.go * Update modules/apps/29-fee/client/cli/cli.go Co-authored-by: Aditya * chore: update cli example Co-authored-by: Aditya * ics29:fix: counterparty addr must contain channelID (#937) * fix: counterparty address must chain channelID * nit: updating var name * test: adding validation check for channelID * nit: fn names * chore: fix err msg (#971) * ics29:fix: store source address for query later on WriteAck (#912) * fix: for async WriteAck store source address for query later * ics29:fix: update genesis type (#913) * fix: adding ForwardRelayerAddresses to genesis * fix: trimspace on string check * nit: err + trimspace error case * refactor: updating WriteAck + keeper fn name * Update modules/apps/29-fee/keeper/relay.go Co-authored-by: Damian Nolan * chore: remove legacy testing functions (#954) * fix:ics29: WriteAck update + adding success bool to IncentivizedAck (#952) * fix: updating WriteAck & adding Success boolean to IncentivizedAcknowledgement * feat: adding check of is fee enabled * nit: change successful to underlying_application_success * test: adding seperate test for fee disabled write async * Update modules/apps/29-fee/ibc_module_test.go Co-authored-by: Aditya * test: adding check to compare hash of acks * fix: var name Co-authored-by: Aditya Co-authored-by: Damian Nolan Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: Aditya * refactor: make fee storage more efficient (#956) * adding new proto types and codegen * refactoring ics29 fees for more efficient storage * updating tests * fixing typo in protodoc comments * chore: update ics29 genesis state to support multiple packet fees (#957) * adding new proto types and codegen * refactoring ics29 fees for more efficient storage * updating tests * updating genesis protos to use IdentifiedPacketFees * updating init/export genesis state functionality and tests * chore: update MsgPayPacketFeeAsync fields (#979) * adding new proto types and codegen * refactoring ics29 fees for more efficient storage * updating tests * fixing typo in protodoc comments * updating protos and codegen * updating MsgPayPacketFeeAsync handler and tests * chore: add ParseKeyFeesInEscrow helper function (#998) * chore: update grpc queries to handle multiple fees (#967) * adding new proto types and codegen * refactoring ics29 fees for more efficient storage * updating tests * updating protos and existing queries * updating grpc queries and refactoring tests * format error correct in favour of proto string() method * leveraging ParseKeyFeesInEscrow to obtain packet id in query * feat: CLI cmd for MsgRegisterCounterpartyAddress (#987) * feat: CLI cmd for MsgRegisterCounterpartyAddress * fix: examples * Update modules/apps/29-fee/client/cli/tx.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update modules/apps/29-fee/client/cli/tx.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * chore: remove print * nit: update address for counterparty Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * fix: ics29: switch source with destintion for chan/port IDs (#961) * fix: switch source with destintion for chan/port IDs * fix: blunder * test: adding tests in case of incorrect channel/port id * test: moving check to WriteAcknowledgement * add test case for Get/Set counterparty address * nit: path name * Update modules/apps/29-fee/keeper/msg_server_test.go * test: cleanup 29-fee/types tests (#1006) * feat: grpc query total recv packet fees (#1015) * adding query for total packet recv fees to proto query server * adding total packet recv fee query impl and tests * updating doc comments * chore: switch code ordering (#1025) * feat: Add ParseKeyFeeEnabled and rename FeeEnabledKey -> KeyFeeEnabled (#1023) * chore: add ParseKeyFeesInEscrow helper function * feat: add ParseKeyFeeEnabled function and rename FeeEnabledKey to KeyFeeEnabled * feat: ics29 cli for query total recv fees (#1035) * feat: grpc query total ack fees (#1032) * adding query for total packet recv fees to proto query server * adding total packet recv fee query impl and tests * updating doc comments * adding protos and codegen * adding total ack fees query and tests * fixing protodoc comment * feat: grpc query total timeout fees (#1033) * adding query for total packet recv fees to proto query server * adding total packet recv fee query impl and tests * updating doc comments * adding protos and codegen * adding total ack fees query and tests * adding protos and codegen * adding query total timeout fees and tests * fixing protodoc comment * fixing protodoc comment * feat: adding clis for total ack and timeout queries (#1043) * add ParseKeyForwardRelayerAddress function + test (#1046) * chore: remove unused ics29 keeper funcs (#1044) * removing keys, adding additional test, moving event attribute keys * removing unused code and updating tests * removing unused IdentifiedPacketFee type * chore: add gRPC for querying incentivized packets for a specific channel (#983) * generate proto files * feat: add gRPC for querying incentivized packets for a specific channel * test: add gRPC test for incentivized packets for channel query * fix build * partially fix tests * chore: fix tests * deduplicate code * chore: code cleanup * fix build * remove changes from merge conflict * nit: rename c to goCtx * add function EscrowAccountHasBalance (#1042) * add function EscrowAccountHasBalance * change API to use sdk.Coins * feat: ParseKeyCounterpartyRelayer function (#1047) * chore: adding queries to cmd builder (#1057) * chore: update ics29 protodocs (#1055) * updating protodocs comments and regen code/docs * Update proto/ibc/applications/fee/v1/tx.proto Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * updating incentivized ack doc Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * add counter party channel ID to argument list of on channel open ack (#1159) Co-authored-by: Carlos Rodriguez * ADR 004: Fee module locking in the presence of severe bugs (#1060) * add adr 004 * add to README * Update docs/architecture/adr-004-ics29-lock-fee-module.md Co-authored-by: Aditya * Update docs/architecture/adr-004-ics29-lock-fee-module.md Co-authored-by: Aditya Co-authored-by: Carlos Rodriguez Co-authored-by: Aditya * nit: packetID var name (#1214) * ics29: update with changes from main (#1221) * add banner image (#1158) Co-authored-by: Carlos Rodriguez * Add alpha, beta, and rc release definitions (#1151) ## Description The proposed definitions for each phase of our release cycle. Please feel free to adjust my wording closes: #881 --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [ ] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [ ] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * build(deps): bump google.golang.org/protobuf from 1.27.1 to 1.28.0 (#1164) Bumps [google.golang.org/protobuf](https://github.com/protocolbuffers/protobuf-go) from 1.27.1 to 1.28.0.
Release notes

Sourced from google.golang.org/protobuf's releases.

v1.28.0

Overview

The release provides a new unmarshal option for limiting the recursion depth when unmarshalling nested messages to prevent stack overflows. (UnmarshalOptions.RecursionLimit).

Notable changes

New features:

  • CL/340489: testing/protocmp: add Message.Unwrap

Documentation improvements:

  • CL/339569: reflect/protoreflect: add more docs on Value aliasing

Updated supported versions:

UnmarshalOption RecursionLimit

  • CL/385854: all: implement depth limit for unmarshalling

The new UnmarshalOptions.RecursionLimit limits the maximum recursion depth when unmarshalling messages. The limit is applied for nested messages. When messages are nested deeper than the specified limit the unmarshalling will fail. If unspecified, a default limit of 10,000 is applied.

In addition to the configurable limit for message nesting a non-configurable recursion limit for group nesting of 10,000 was introduced.

Upcoming breakage changes

The default recursion limit of 10,000 introduced in the release is subject to change. We want to align this limit with implementations for other languages in the long term. C++ and Java use a limit of 100 which is also the target for the Go implementation.

Commits
  • 32051b4 all: release v1.28.0
  • 3992ea8 all: implement depth limit for unmarshaling
  • e5db296 all: update supported versions
  • 3a9e1dc all: gofmt all
  • 26e8bcb all: remove unnecessary string([]byte) conversion in fmt.Sprintf with %s
  • 5aec41b testing/protocmp: add Message.Unwrap
  • 05be61f reflect/protoreflect: add more docs on Value aliasing
  • b03064a all: start v1.27.1-devel
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/protobuf&package-manager=go_modules&previous-version=1.27.1&new-version=1.28.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
* fix typos in the controller params (#1172) ## Description closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * add versions for new releases (#1175) ## Description closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * fix: link checker reporting broken milestone link (#1200) * update roadmap for q2 2022 and deleted history roadmap (don't think we'll need it) * requirements document for ICA (#1173) * add requirements document for interchain accounts * fix branch * added number in tittle. * apply suggestions from review Co-authored-by: Aditya * review comment Co-authored-by: Carlos Rodriguez Co-authored-by: Aditya * imp: improve Logger performance (#1160) * fix: Logger marshal errors * changelog * update Co-authored-by: Carlos Rodriguez Co-authored-by: Carlos Rodriguez Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Damian Nolan Co-authored-by: Aditya Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: Sean King Co-authored-by: Charly Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez Co-authored-by: Carlos Rodriguez Co-authored-by: Luke Rhoads <51463884+lukerhoads@users.noreply.github.com> Co-authored-by: Damian Nolan Co-authored-by: Dev Ojha Co-authored-by: Jack Zampolin Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Leo Pang <34628052+allthatjazzleo@users.noreply.github.com> Co-authored-by: Barrie Byron Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Barrie Byron Co-authored-by: Marko Co-authored-by: Marko Baricevic Co-authored-by: Aleksandr Bezobchuk Co-authored-by: nir1218 Co-authored-by: Carlos Rodriguez Co-authored-by: Assaf Morami Co-authored-by: Dan McCandless Co-authored-by: Ramiro Carlucho Co-authored-by: frog power 4000 Co-authored-by: Sean King * build(deps): bump codecov/codecov-action from 2.1.0 to 3 (#1222) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 2.1.0 to 3. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v2.1.0...v3) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * ics29: feat: CLI query commands for packets (#1229) * feat: adding query for getting incentivized packet by packet-id * feat: add cli for getting all incentivized packets across all channels * nits: suggestions * Update modules/apps/29-fee/client/cli/query.go Co-authored-by: Damian Nolan * chore: changelog * nits: comments Co-authored-by: Damian Nolan * add check for blocked addr for forward relayer distribution (#1231) * feat: ics29 counterparty address grpc query and CLI (#1224) * generating codegen protobufs for query counterparty address * adding grpc query, tests and cli * Update modules/apps/29-fee/keeper/grpc_query_test.go Co-authored-by: Sean King * Update modules/apps/29-fee/keeper/grpc_query_test.go Co-authored-by: Sean King * updating godoc * adding changelog * updating cli descriptions for ics29 Co-authored-by: Sean King * chore: fix go ctx arg naming in ics29 grpc queries (#1226) * chore: ics29 module housekeeping cleanup (#1227) * feat: ics29 fee enabled channel queries (#1225) * adding protobuf codegen * adding grpc queries and tests * adding clis for queries * adding changelog * resolving nits from pr review * updating grpc gateway options * chore: cleanup OnAcknowledgement and OnTimeout code ics29 (#1228) * add changelog entry for #276 (#1233) * feat: adding CLI for getting incentivized packets on a specific channel (#1230) * feat: adding CLI for getting incentivized packets on a specific channel * chore: changelog * refactor: usage * chore: ics29 cleanup, addressing nits (#1236) * refactor: moving fn definition to bottom of file and switching params (#1232) ## Description closes: #868 #997 --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [ ] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [ ] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * feat: allow ability to lock fee module in presence of severe bug (#1239) * apply code changes from pr #1031 * update comments * chore: update fee module is locked error string * update godoc to reference ADR 004 * add more references to ADR 004 * build(deps): bump actions/download-artifact from 2 to 3 (#1241) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2 to 3.
Release notes

Sourced from actions/download-artifact's releases.

v3.0.0

What's Changed

Breaking Changes

With the update to Node 16, all scripts will now be run with Node 16 rather than Node 12.

v2.1.0 Download Artifact

  • Improved output & logging
  • Fixed issue where downloading all artifacts could cause display percentages to be over 100%
  • Various small bug fixes & improvements

v2.0.10

  • Retry on HTTP 500 responses from the service

v2.0.9

  • Fixes to proxy related issues

v2.0.8

  • Improvements to retryability if an error is encountered during artifact download

v2.0.7 download-artifact

  • Improved download retry-ability if a partial download is encountered

v2.0.6

Update actions/core NPM package that is used internally

v2.0.5

  • Add Third Party License Information

v2.0.4

  • Use the latest version of the @actions/artifact NPM package

v2.0.3

  • Misc improvements

v2.0.2

  • Support for tilde expansion

v2.0.1

  • Download path output
  • Improved logging
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/download-artifact&package-manager=github_actions&previous-version=2&new-version=3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
* build(deps): bump actions/upload-artifact from 2 to 3 (#1240) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3.
Release notes

Sourced from actions/upload-artifact's releases.

v3.0.0

What's Changed

  • Update default runtime to node16 (#293)
  • Update package-lock.json file version to 2 (#302)

Breaking Changes

With the update to Node 16, all scripts will now be run with Node 16 rather than Node 12.

v2.3.1

Fix for empty fails on Windows failing on upload #281

v2.3.0 Upload Artifact

  • Optimizations for faster uploads of larger files that are already compressed
  • Significantly improved logging when there are chunked uploads
  • Clarifications in logs around the upload size and prohibited characters that aren't allowed in the artifact name or any uploaded files
  • Various other small bugfixes & optimizations

v2.2.4

  • Retry on HTTP 500 responses from the service

v2.2.3

  • Fixes for proxy related issues

v2.2.2

  • Improved retryability and error handling

v2.2.1

  • Update used actions/core package to the latest version

v2.2.0

  • Support for artifact retention

v2.1.4

  • Add Third Party License Information

v2.1.3

  • Use updated version of the @action/artifact NPM package

v2.1.2

  • Increase upload chunk size from 4MB to 8MB
  • Detect case insensitive file uploads

v2.1.1

  • Fix for certain symlinks not correctly being identified as directories before starting uploads

v2.1.0

  • Support for uploading artifacts with multiple paths
  • Support for using exclude paths
  • Updates to dependencies

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=2&new-version=3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
* build(deps): bump actions/setup-go from 2 to 3 (#1242) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 2 to 3.
Release notes

Sourced from actions/setup-go's releases.

v3.0.0

What's Changed

Breaking Changes

With the update to Node 16, all scripts will now be run with Node 16 rather than Node 12.

This new major release removes the stable input, so there is no need to specify additional input to use pre-release versions. This release also corrects the pre-release versions syntax to satisfy the SemVer notation (1.18.0-beta1 -> 1.18.0-beta.1, 1.18.0-rc1 -> 1.18.0-rc.1).

steps:
  - uses: actions/checkout@v2
  - uses: actions/setup-go@v3
    with:
      go-version: '1.18.0-rc.1'
  - run: go version

Add check-latest input

In scope of this release we add the check-latest input. If check-latest is set to true, the action first checks if the cached version is the latest one. If the locally cached version is not the most up-to-date, a Go version will then be downloaded from go-versions repository. By default check-latest is set to false. Example of usage:

steps:
  - uses: actions/checkout@v2
  - uses: actions/setup-go@v2
    with:
      go-version: '1.16'
      check-latest: true
  - run: go version

Moreover, we updated @actions/core from 1.2.6 to 1.6.0

v2.1.5

In scope of this release we updated matchers.json to improve the problem matcher pattern. For more information please refer to this pull request

v2.1.4

What's Changed

New Contributors

Full Changelog: https://github.com/actions/setup-go/compare/v2.1.3...v2.1.4

v2.1.3

  • Updated communication with runner to use environment files rather then workflow commands

v2.1.2

This release includes vendored licenses for this action's npm dependencies.

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-go&package-manager=github_actions&previous-version=2&new-version=3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
* build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.1 to 0.45.3 (#1247) Bumps [github.com/cosmos/cosmos-sdk](https://github.com/cosmos/cosmos-sdk) from 0.45.1 to 0.45.3. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.45.3/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/v0.45.1...v0.45.3) --- updated-dependencies: - dependency-name: github.com/cosmos/cosmos-sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(ics29): refund fees on distribution failure (#1245) * attempt to refund fees if distribution fails * adapting logic and updating testcases * updating inline comments * updating refund address testcase * refactor: Fix RefundFeesOnChannel (#1244) ## Description read #1060 closes: #860 closes: #780 --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [x] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [x] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [x] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [x] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [x] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [x] Review `Codecov Report` in the comment section below once CI passes * deprecate GetTransferAccount (#1250) * deprecate GetTransferAccount * add changelog entry * remove unused imports * docs: replace links in apps with correct ones (#1255) ## Description I noticed that 2 links at the bottom of the applications docs page were not correct. closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * update godoc of `RegisterInterchainAccount` (#1256) ## Description The godoc of `RegisterInterchainAccount` was still saying that the port identifier was constructed using as well the connection identifiers. I corrected that. closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * isolate packet fee distribution for on acknowledgement and on timeout into separate functions (#1253) ## Description Reduces the complexity contained in `DistributePacketFees` and `DistributePacketFeesOnAcknowledgement` in anticipation of #1251 closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [ ] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [ ] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * Update supported release lines (#1263) ## Description closes: #1152 --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * ics29: gracefully handle escrow out of balance edge case during fee distribution (#1251) ## Description closes: #821 --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [x] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [x] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [x] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [x] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [x] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [x] Review `Codecov Report` in the comment section below once CI passes * build(deps): bump github.com/spf13/viper from 1.10.1 to 1.11.0 (#1264) Bumps [github.com/spf13/viper](https://github.com/spf13/viper) from 1.10.1 to 1.11.0. - [Release notes](https://github.com/spf13/viper/releases) - [Commits](https://github.com/spf13/viper/compare/v1.10.1...v1.11.0) --- updated-dependencies: - dependency-name: github.com/spf13/viper dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(ics29): make EscrowPacketFee private (#1252) * making EsrowPacketFee private, adapting test cases to conform * refactor msg server tests to accomoodate escrowPacketFee * adding assertions on escrow account balance * adding error checks on bank sends in tests, omitting loop as per review * adding escrow balance checks to TestPayPacketFee * adding assertions on expected fees in state * add missing changelog entry for bump of sdk 0.45.3 (#1272) ## Description closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [x] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * feat: Add GetAppVersion to ICS4Wrapper (#1022) * feat: Add ICS4Wrapper function GetChannelVersion Add a function to 04-channel keeper which can be used in the ICS4Wrapper interface for obtaining the unwrapped channel verison * add docs * chore: rename GetChannelVersion to GetUnwrappedChannelVersion * add changelog entry * Update CHANGELOG.md * Update docs/ibc/middleware/develop.md * Update docs/ibc/middleware/develop.md * chore: GetUnwrappedChannelVersion -> GetAppVersion * add GetAppVersion for ics29 * add GetAppVersion to ics27 * add extra test for 29-fee * update docs * Apply suggestions from code review Co-authored-by: Sean King Co-authored-by: Sean King Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> * make URI path for getting all incentivized packets for channel consistent (#1278) * make URI path for getting all incentivized packets for a specific channel consistent * regenerate proto files and add changelog entry * something going with go.mod file... * update changelog entry Co-authored-by: Carlos Rodriguez * chore : add selected channel version to MsgChanOpenInitResponse and MsgChanOpenTryResponse (#1279) ## Description - Add a version field to MsgChannelOpenInitResponse and MsgChannelOpenTryResponse in proto and gen proto - Set the selected channel version in the [MsgChannelOpenInitResponse](https://github.com/notional-labs/ibc-go/blob/ed7a082565fadb9ce27067fa1efb56c23fafc8ef/modules/core/keeper/msg_server.go#L197) and [MsgChannelOpenTryResponse](https://github.com/notional-labs/ibc-go/blob/ed7a082565fadb9ce27067fa1efb56c23fafc8ef/modules/core/keeper/msg_server.go#L237) --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [ ] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [ ] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes closes: #1204 * build(deps): bump github/codeql-action from 1 to 2 (#1289) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v1...v2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump google.golang.org/grpc from 1.45.0 to 1.46.0 (#1290) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.45.0 to 1.46.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.45.0...v1.46.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fixing dead links from sdk default branch update (#1301) * change fee version string to make it consistent with transfer version (#1305) * change version to make it consistent with transfer version * add changelog entry * build(deps): bump github.com/armon/go-metrics from 0.3.10 to 0.3.11 (#1306) Bumps [github.com/armon/go-metrics](https://github.com/armon/go-metrics) from 0.3.10 to 0.3.11. - [Release notes](https://github.com/armon/go-metrics/releases) - [Commits](https://github.com/armon/go-metrics/compare/v0.3.10...v0.3.11) --- updated-dependencies: - dependency-name: github.com/armon/go-metrics dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * refactor: cleanup middleware stacks (#1248) * refactor: UX improvements for middleware * fix: move fee keeper * fix: remove unncessary wrapping * refactor: ica module stack setup * fix: define icaControllerStack as type porttypes.IBCModule * add back controller routing for port * refactor: remove unncessary SendPacket * refactor: panic instead of return nil * refactor: changing structure to init all keepers, then stacks & routing * docs: add comments * nit: comment * chore: rename files * chore: comment + nit * refactor: stacks * Update modules/apps/27-interchain-accounts/controller/ibc_middleware.go Co-authored-by: Aditya * nits: nits * chore: comment * chore: chore Co-authored-by: Colin Axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: Aditya * add empty keepers checking in ibc NewKeeper (#1284) * add empty keepers checking in ibc NewKeeper * check for empty exported keepers instead of empty sdk-defined keeper structs * Update modules/core/keeper/keeper.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * remove func checkEmptyKeepers(), check empty keepers directly within func NewKeeper() * modules/core/keeper KeeperTestSuite -> MsgServerTestSuite; creat new modules/core/keeper KeeperTestSuite for testing ibckeeper.NewKeeper() * update CHANGELOG.md * DummyStakingKeeper -> MockStakingKeeper * refactor modules/core/keeper test * Update modules/core/keeper/keeper_test.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update modules/core/keeper/keeper.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * add query flags to command for querying counterparty address (#1313) * add validation of packet ID in CLI to query packet (#1314) * build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.3 to 0.45.4 (#1300) * build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.3 to 0.45.4 Bumps [github.com/cosmos/cosmos-sdk](https://github.com/cosmos/cosmos-sdk) from 0.45.3 to 0.45.4. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.45.4/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/v0.45.3...v0.45.4) --- updated-dependencies: - dependency-name: github.com/cosmos/cosmos-sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * update changelog Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: Carlos Rodriguez * refactor: renaming Result in IncentivizedAcknowledgement to AppAcknowledgement (#1338) * refactor: renaming Result in IncentivizedAcknowledgement to AppAcknowledgement * chore: changelog * Update proto/ibc/applications/fee/v1/ack.proto Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * chore: yaml Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * update mergify.yaml (#1332) * chore: renaming KeyForwardRelayerAddress to KeyRelayerAddressForAsyncAck (#1343) * renaming KeyForwardRelayerAddress to KeyRelayerAddressForAsyncAck * adding changelog entry Co-authored-by: Carlos Rodriguez * refactor: channel handshake version improvements (#1283) * refactor: returning version from OnChanOpenInit * refactor: update tests and add version to proto resp * refactor: adding version to msg server resp * refactor: remove unncessary if & update version on Endpoint.Ack * fix: ics29 OnChanOpenInit remake versionMetaData before returning * chore: update godoc * test: adding check for expected version string * test: adding test case for passing empty version string to ics20 onChanOpenInit * Update modules/apps/29-fee/ibc_module.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * chore: comment * chore: changelog * fix: ica now discards auth module version * chore: update changelog * adding default version for ics29 * fix: using transfer module directly rather than calling full middleware stack * fix testing bug * refactor: test now uses bool for isFeeEnabled rather than direct check * docs: updating comment and migration docs Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * fix: emit ics29 events on cacheCtx write after refunding on closed channel (#1344) ## Description closes: #1323 --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [ ] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [ ] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * chore: improve DenomTrace grpc (#1342) * change DenomTrace grpc * update CHANGELOG.md * minor * minor * minor * minor * minor * minor * Update modules/apps/transfer/keeper/grpc_query_test.go Co-authored-by: Carlos Rodriguez * Update modules/apps/transfer/keeper/grpc_query_test.go Co-authored-by: Carlos Rodriguez * Update CHANGELOG.md Co-authored-by: Damian Nolan * use TrimPrefix() in DenomTrace() * update migration doc Co-authored-by: Carlos Rodriguez Co-authored-by: Damian Nolan * fix: disallow incentivizing packets which have not been sent or have been already relayed (#1347) ## Description closes: #1318 --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [x] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [x] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [x] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [x] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [x] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [x] Review `Codecov Report` in the comment section below once CI passes * refactor: adding check if channel exists before register counterparty (#1339) * refactor: adding check if channel exists before register. updating msg to contain PortID * chore: changelog * refactor: add types test and check for is fee enabled + fix test * check fee module locked and enable fee before refunding all fees (#1341) ## Description - Add check locked fee module and fee is enabled before refunding all fees closes: #1321 --- * build(deps): bump github.com/spf13/cast from 1.4.1 to 1.5.0 (#1350) Bumps [github.com/spf13/cast](https://github.com/spf13/cast) from 1.4.1 to 1.5.0. - [Release notes](https://github.com/spf13/cast/releases) - [Commits](https://github.com/spf13/cast/compare/v1.4.1...v1.5.0) --- updated-dependencies: - dependency-name: github.com/spf13/cast dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez * build(deps): bump google.golang.org/grpc from 1.46.0 to 1.46.2 (#1358) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.46.0 to 1.46.2. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.46.0...v1.46.2) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * override default docsBranch (#1355) ## Description closes: #1354 --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [x] Review `Codecov Report` in the comment section below once CI passes * Return error if fee module is locked before distributing fees on acknowledgement and timeout (#1340) ## Description - Return error if fee module is locked - Move `DeleteFeesInEscrow` into `DistributePacketFees` func closes: #1320 --- * refactor: emit cumulative fees when incentivizing a packet multiple times (#1391) * emit cumulative fees * test: add test for emission of cumulative incentivized fees * add check for nil relayer * reassign sdk.Coins, fix bug * add swagger for interchain accounts (#1402) ## Description closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * Add Sender to funginble_token_packet events * chore: Updated CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md Co-authored-by: Damian Nolan * chore: mini nits from ics29 audit (#1348) * chore: nits from ics29 audit * Update modules/apps/29-fee/keeper/escrow.go Co-authored-by: Carlos Rodriguez * Update modules/apps/29-fee/keeper/msg_server.go Co-authored-by: Carlos Rodriguez * nits: more nits Co-authored-by: Carlos Rodriguez * fumpt (#1335) * fumpt * merge main * changelog Co-authored-by: vuong <56973102+vuong177@users.noreply.github.com> * Update CHANGELOG.md * chore: Fixing github action workflows * chore: Specifying build command for the CodeQL action * fix: cli params ordering ics29 (#1353) * fix: cli params * refactor: switch param ordering * fix: tests * add swagger for fee (#1403) * add swagger for fee * fix conflicts * add new team member to global code owners (#1404) * add section for fee code owners (#1405) * fix path (#1406) * fix: ica controller middleware error typo (#1419) Co-authored-by: Carlos Rodriguez * build(deps): bump github.com/spf13/viper from 1.11.0 to 1.12.0 (#1448) Bumps [github.com/spf13/viper](https://github.com/spf13/viper) from 1.11.0 to 1.12.0. - [Release notes](https://github.com/spf13/viper/releases) - [Commits](https://github.com/spf13/viper/compare/v1.11.0...v1.12.0) --- updated-dependencies: - dependency-name: github.com/spf13/viper dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * add actual parameter example to denom-trace and denom-hash CLI queries (#1442) * refactor of rest urls (#1431) * Adding gRPC query for escrow address (#1416) * Emit channel close event on ordered channel close (#1464) * Fix typo (#1468) Co-authored-by: Carlos Rodriguez * fix typo in comment (#1435) fix typo in comment Co-authored-by: Carlos Rodriguez * fix typo (#1434) fix typo Co-authored-by: Carlos Rodriguez * build(deps): bump github.com/armon/go-metrics from 0.3.11 to 0.4.0 (#1441) Bumps [github.com/armon/go-metrics](https://github.com/armon/go-metrics) from 0.3.11 to 0.4.0. - [Release notes](https://github.com/armon/go-metrics/releases) - [Commits](https://github.com/armon/go-metrics/compare/v0.3.11...v0.4.0) --- updated-dependencies: - dependency-name: github.com/armon/go-metrics dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez * build(deps): bump google.golang.org/grpc from 1.46.2 to 1.47.0 (#1481) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.46.2 to 1.47.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.46.2...v1.47.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez * Add simd Dockerfile (#1485) * build(deps): bump github.com/stretchr/testify from 1.7.1 to 1.7.2 (#1494) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.7.1 to 1.7.2. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.7.1...v1.7.2) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump goreleaser/goreleaser-action from 2 to 3 (#1415) Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 2 to 3. - [Release notes](https://github.com/goreleaser/goreleaser-action/releases) - [Commits](https://github.com/goreleaser/goreleaser-action/compare/v2...v3) --- updated-dependencies: - dependency-name: goreleaser/goreleaser-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez Co-authored-by: Damian Nolan * Emit an event to indicate a successful acknowledgement in the ICA module (#1466) * chore: Add consensus state heights query (#1336) * add ConsensusStateHeights query * add cli for ConsensusStateHeights Query * update CHANGELOG.md * Update modules/core/02-client/keeper/grpc_query.go Co-authored-by: Damian Nolan * Update modules/core/02-client/client/cli/query.go Co-authored-by: Damian Nolan * Update modules/core/02-client/client/cli/query.go Co-authored-by: Damian Nolan * Update modules/core/02-client/client/cli/query.go Co-authored-by: Damian Nolan * update consensus height query * very minor changes in modules/core/02-client grpc_query_test * Update modules/core/02-client/keeper/grpc_query_test.go Co-authored-by: Sean King * Update modules/core/02-client/keeper/grpc_query_test.go Co-authored-by: Sean King * Update modules/core/02-client/keeper/grpc_query_test.go Co-authored-by: Sean King * Update modules/core/02-client/keeper/grpc_query_test.go Co-authored-by: Sean King * Update modules/core/02-client/client/cli/query.go Co-authored-by: Sean King * Update modules/core/02-client/keeper/grpc_query_test.go Co-authored-by: Carlos Rodriguez * Update CHANGELOG.md Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * update swagger.yaml; update 02-client grpc_query_test * Update modules/core/02-client/keeper/grpc_query_test.go Co-authored-by: Damian Nolan * nit Co-authored-by: Damian Nolan Co-authored-by: Sean King Co-authored-by: Carlos Rodriguez Co-authored-by: vuong <56973102+vuong177@users.noreply.github.com> Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * feat: adding fee middleware support to ics27 interchain accounts (#1432) * updating simapp to include ics29 fee in ica stacks * updating RegisterInterchainAccount to pass through version arg and support fee middleware functionality * updating tests to support additional version arg in RegisterInterchainAccount * adding migration docs for ICS27 fee middleware support * remove unnecessary spacing * fixing typo in godoc * adding changelog entry * Apply suggestions from code review Co-authored-by: Carlos Rodriguez Co-authored-by: Carlos Rodriguez * test: adding fee middleware tests for ics27 interchain accounts (#1433) * adding interchain accounts integration tests for ics29 fee * updating simapp to include fee middleware in ica stack * updating simapp to include ics29 fee in ica stacks * updating RegisterInterchainAccount to pass through version arg and support fee middleware functionality * updating tests to support additional version arg in RegisterInterchainAccount * adding migration docs for ICS27 fee middleware support * remove unnecessary spacing * fixing typo in godoc * adding changelog entry * adding godoc for NewICAPath in fee test suite * adding helper for default metadata version string to ics27 * unexported vars, register counterparty address for recv fee distribution, add comments and adjust assertions * feat: adding RegisterPayee rpc to ics29 fee middleware (#1491) * [WIP] adding RegisterDistributionAddress rpc endpoint and implementation. Store funcs, keys.. * updating tests * adding cli for register distribution address rpc * renaming RegisterDistributionAddress rpc to RegisterPayee * renaming RegisterDistributionAddress to RegisterPayee * updating godocs and field ordering * updating inline comment * feat: adding RegisteredPayees to ics29 genesis state (#1492) * [WIP] adding RegisterDistributionAddress rpc endpoint and implementation. Store funcs, keys.. * updating tests * adding registered distribution addresses to genesis state * refactor and update validate genesis tests * adding cli for register distribution address rpc * renaming RegisterDistributionAddress rpc to RegisterPayee * renaming RegisterDistributionAddress to RegisterPayee * updating godocs and field ordering * updating inline comment * renaming to regsitered payees and propagating changes in genesis * updating godoc in keeper.go * Update modules/apps/29-fee/keeper/keeper_test.go Co-authored-by: Aditya Co-authored-by: Aditya * fix typo * feat: adding Payee grpc query and CLI (#1493) * [WIP] adding RegisterDistributionAddress rpc endpoint and implementation. Store funcs, keys.. * updating tests * adding registered distribution addresses to genesis state * refactor and update validate genesis tests * adding grpc query and cli for distribution address rpc endpoint * adding cli for register distribution address rpc * renaming RegisterDistributionAddress rpc to RegisterPayee * renaming RegisterDistributionAddress to RegisterPayee * updating godocs and field ordering * updating inline comment * renaming to regsitered payees and propagating changes in genesis * updating godoc in keeper.go * Update modules/apps/29-fee/keeper/keeper_test.go Co-authored-by: Aditya * renaming query and types to align with payee address naming convention Co-authored-by: Aditya * feat: added check for wildcard * to allow all message types (#1512) * added check for wildcard * to allow all message types * update docs * nit * fix: deprecate AllowUpdateAfter...check (#1511) * fix: deprecate AllowUpdateAfter...check * update IsMatchingClientState * rm unnecessary fields in testing * changed gRPC web route to consensus_state/{client_id}/heights (#1517) * Update adr-026-ibc-client-recovery-mechanisms.md * Skip distribution if refund fails to send on channel closure (#1523) * Build simd images as part of the release process (#1533) * refactor: rename RegisterCounterpartyAddress rpc to RegisterCounterpartyPayee (#1513) * renaming counterparty address rpc to counterparty payee * updating counterparty payee cli * reorder cli cmd list * Apply suggestions from code review Co-authored-by: Charly * removing address suffix from msg fields, updating protodoc and godoc * updating cli args naming convention to align * updating keys to reflect naming changes * updating docs * updating protodocs and godocs Co-authored-by: Charly Co-authored-by: Carlos Rodriguez * fix to correctly parse denoms with slashes in the base denom (#1451) * fix to correctly parse denoms with slashes in the base denom * some logic refinement * review comments * add changelog entry an other review comments * review comment * Add slash migration guide (#1518) * add migration guide * Update docs/migrations/support-slashed-denoms.md Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * clarify upgrade name * remove unnecessary store loader * review comment, update migration code Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Carlos Rodriguez * rename migration file Co-authored-by: Carlos Rodriguez Co-authored-by: Aditya Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> * build(deps): bump docker/metadata-action from 3.3.0 to 4.0.1 (#1538) * build(deps): bump docker/login-action from 1.10.0 to 2 (#1540) * build(deps): bump docker/build-push-action from 2.5.0 to 3 (#1539) * replace reflect.DeepEqual with custom comparison function because DeepEqual might not be deterministic * docs: update ICA auth module section about RegisterInterchainAccount (#1516) * refactor: rename genesis type RegisteredRelayer to RegisteredCounterpartyPayee (#1514) * renaming counterparty address rpc to counterparty payee * rename genesis types for registered counterparty payees * updating counterparty payee cli * reorder cli cmd list * Apply suggestions from code review Co-authored-by: Charly * removing address suffix from msg fields, updating protodoc and godoc * updating cli args naming convention to align * propagating renaming of fields to genesis state * rename GetAllx funcs and updating godocs * reordering genesis types fields Co-authored-by: Charly * refactor: rename CounterpartyAddress query to CounterpartyPayee (#1522) * renaming counterparty address rpc to counterparty payee * rename genesis types for registered counterparty payees * renaming counterparty address query to counterparty payee * updating counterparty payee cli * reorder cli cmd list * Apply suggestions from code review Co-authored-by: Charly * removing address suffix from msg fields, updating protodoc and godoc * updating cli args naming convention to align * propagating renaming of fields to genesis state * rename GetAllx funcs and updating godocs * aligning naming of GetAll functions Co-authored-by: Charly * chore: update changelog, versions for docs site and stable release table (#1541) * chore: update changelog and versions for docs site * add new release lines to stable release policy Co-authored-by: Carlos Rodriguez * build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.4 to 0.45.5 (#1525) * build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.4 to 0.45.5 Bumps [github.com/cosmos/cosmos-sdk](https://github.com/cosmos/cosmos-sdk) from 0.45.4 to 0.45.5. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.45.5/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/v0.45.4...v0.45.5) --- updated-dependencies: - dependency-name: github.com/cosmos/cosmos-sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * updating changelog to reflect SDK v0.45.5 upgrade Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Damian Nolan Co-authored-by: Carlos Rodriguez * docs: overview of fee middleware (#1549) * fix broken link * fix: rm AllowUpdateAfter... check (#1118) * update code & test * update proto and adr026 * update CHANGELOG * update cli docs * update broken milestone link * feat: implement registered payee fee distribution (#1526) * adding distribution logic with new registered payees * updating ack test cases * removing commented out test * adding additional testcase to TestOnAcknowledgementPacket * cleaning up distribution logic and adapting tests * updating timeout test cases * updating timeout logic and adding application callback failure test cases * Apply suggestions from code review Co-authored-by: Charly * Apply suggestions from code review Co-authored-by: Carlos Rodriguez * Update modules/apps/29-fee/ibc_middleware_test.go * adding missing comma from suggested testcases Co-authored-by: Cian Hatton Co-authored-by: Charly Co-authored-by: Carlos Rodriguez * add migration for base denoms with slashes to docs site (#1544) ## Description closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [ ] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [ ] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * add migration of v3 to v4 to docs site (#1548) Co-authored-by: Carlos Rodriguez * add new release lines to dropdown menu (#1552) * build(deps): bump github.com/stretchr/testify from 1.7.2 to 1.7.3 (#1559) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.7.2 to 1.7.3. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.7.2...v1.7.3) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * refactor: writing test case for module account incentivizing packet (#1397) * refactor: using SendCoins & writing test case for module account incentivizing packet * updating ModuleAccountAddrs helper fn and adding additional test for refunding to module acc * chore: changelog * chore: ics29 fee payee event emission (#1568) * adding event emission for registered payees and counterparty payees in ics29 * updating naming of event emission funcs * chore: allow ics27 to select and return default JSON encoded metadata (#1550) * adding distribution logic with new registered payees * updating ack test cases * removing commented out test * adding additional testcase to TestOnAcknowledgementPacket * cleaning up distribution logic and adapting tests * updating timeout test cases * updating timeout logic and adding application callback failure test cases * Apply suggestions from code review Co-authored-by: Charly * WIP handling empty version string for ics27 * updating testcases * adding test with auth module modifying channel version * adding inline comments re. ignored channel version from auth module * updating with deduplication suggestion Co-authored-by: Cian Hatton Co-authored-by: Charly * docs: ics29 middleware usage for app devs (#1567) * adding integration doc for app wiring configuration * adjusting wording * updating grammar * updating vuepress config * adding explicit comment regarding intended audience of cosmos sdk devs * adding explicit reference to app.go in transfer and ica examples * fixing indentation in vuepress config.js * fixing more indentation * build(deps): bump technote-space/get-diff-action from 6.0.1 to 6.1.0 (#1560) Bumps [technote-space/get-diff-action](https://github.com/technote-space/get-diff-action) from 6.0.1 to 6.1.0. - [Release notes](https://github.com/technote-space/get-diff-action/releases) - [Changelog](https://github.com/technote-space/get-diff-action/blob/main/.releasegarc) - [Commits](https://github.com/technote-space/get-diff-action/compare/v6.0.1...v6.1.0) --- updated-dependencies: - dependency-name: technote-space/get-diff-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez Co-authored-by: Damian Nolan * build(deps): bump github.com/spf13/cobra from 1.4.0 to 1.5.0 (#1562) Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.4.0 to 1.5.0. - [Release notes](https://github.com/spf13/cobra/releases) - [Commits](https://github.com/spf13/cobra/compare/v1.4.0...v1.5.0) --- updated-dependencies: - dependency-name: github.com/spf13/cobra dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Damian Nolan * build(deps): bump github.com/stretchr/testify from 1.7.3 to 1.7.4 (#1561) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.7.3 to 1.7.4. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.7.3...v1.7.4) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez Co-authored-by: Damian Nolan * docs: move ics20 docs from spec to top level docs (#1554) * move files from apps/transfer/spec to docs/apps/transfer * update transfer docs * docs: update content and rename transfer doc files * fix broken link * fix typo in link Co-authored-by: Carlos Rodriguez * fix typo in parameter name of `NewDefaultMetadata` (#1573) ## Description closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * adding team members to 02-client and light-clients code owners (#1563) * adding team members to 02-client and 07-tendermint code owners * review comment * build(deps): bump github.com/stretchr/testify from 1.7.4 to 1.7.5 (#1575) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.7.4 to 1.7.5. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.7.4...v1.7.5) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * docs: document that version string can be empty as argument of RegisterInterchainAccount * Revert "docs: document that version string can be empty as argument of RegisterInterchainAccount" This reverts commit 33afe107b77417bfb75c0fcb0fc4667f0d9bdcc6. * docs: payee registration and fee distribution for relayer operators (#1577) * adding fee distribution docs for relayer operators * adding validation information and basic cli examples * removing unnecessary whitespace * updating definitions * Apply suggestions from code review Co-authored-by: Carlos Rodriguez Co-authored-by: Sean King Co-authored-by: Carlos Rodriguez Co-authored-by: Sean King * docs: msg types for fee middleware (#1572) * fix broken link * fix: rm AllowUpdateAfter... check (#1118) * update code & test * update proto and adr026 * update CHANGELOG * update cli docs * update broken milestone link * updated docs * update re: comments * nits: adding inline comments Co-authored-by: Sean King * chore: adding module name to incentivized packet events (#1580) * docs: adding events to fee middleware docs (#1578) * adding fee distribution docs for relayer operators * adding validation information and basic cli examples * removing unnecessary whitespace * updating definitions * adding ics29 fee middleware events docs * cleanup Co-authored-by: Sean King * docs: adding End Users section to ics29 docs (#1579) * docs: adding End Users section to ics29 docs * Update docs/middleware/ics29-fee/end-users.md Co-authored-by: Carlos Rodriguez * Update docs/middleware/ics29-fee/end-users.md Co-authored-by: Carlos Rodriguez * Update docs/middleware/ics29-fee/end-users.md Co-authored-by: Carlos Rodriguez * Update docs/middleware/ics29-fee/end-users.md Co-authored-by: Carlos Rodriguez * Update docs/middleware/ics29-fee/end-users.md Co-authored-by: Carlos Rodriguez * Update docs/middleware/ics29-fee/end-users.md Co-authored-by: Carlos Rodriguez * Update docs/middleware/ics29-fee/end-users.md Co-authored-by: Carlos Rodriguez * Update docs/middleware/ics29-fee/end-users.md Co-authored-by: Carlos Rodriguez * Update docs/middleware/ics29-fee/end-users.md Co-authored-by: Damian Nolan * chore: add link Co-authored-by: Carlos Rodriguez Co-authored-by: Damian Nolan * feat: emitting an event when handling a client upgrade proposal (#1570) * feat: emitting an event when handling a client upgrade proposal * refactor: only emit event if err is nil * refactor: idiotmatic go: * docs: nits (#1595) * docs: document that version string can be empty as argument of RegisterInterchainAccount (#1582) Co-authored-by: Carlos Rodriguez * docs: add upgrade client proposal event (#1596) * Consolidate usage of NewErrorAcknowledgement (#1565) * docs: adding line about module accounts / invariants (#1597) * docs: adding line about module accounts / invariants * Update docs/middleware/ics29-fee/fee-distribution.md Co-authored-by: Damian Nolan * Update docs/middleware/ics29-fee/fee-distribution.md Co-authored-by: Damian Nolan Co-authored-by: Damian Nolan * follow up nits to #1565 (#1598) * delete test files and add error to transfer types * review comments * build(deps): bump github.com/stretchr/testify from 1.7.5 to 1.8.0 (#1616) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.7.5 to 1.8.0. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.7.5...v1.8.0) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore: bump go package version to v4 (#1564) * chore: bump go package version to v4 * update go.mod * fix alignment * fix build * review comments * build fixes * deps: bumping go version 1.18 (#1627) * bumping go version 1.18 * updating broken workflow setup * add backport to v4.0.x and remove backports to v1 (EoL) (#1629) * delete unused 04-channel version functions (#1636) * delete unused code and associated tests * Update CHANGELOG.md * build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.5 to 0.45.6 (#1615) * build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.5 to 0.45.6 Bumps [github.com/cosmos/cosmos-sdk](https://github.com/cosmos/cosmos-sdk) from 0.45.5 to 0.45.6. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/v0.45.5...v0.45.6) --- updated-dependencies: - dependency-name: github.com/cosmos/cosmos-sdk dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update CHANGELOG.md * copying part of codeql workflow to try to make it pass Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez Co-authored-by: Carlos Rodriguez * update mergify.yml with new release branches (#1654) * Script to dynamically generate list of e2e tests (E2E #1) (#1644) * Add GitHub actions for e2e tests (E2E #2) (#1646) * Remove crossings hello (#1317) * remove crossing hellos from ChanOpenTry * remove crossing hellos testcase * revert single connectionHops check * add comment in MsgChannelOpenTry tx proto about deprecate field * Update proto/ibc/core/channel/v1/tx.proto Co-authored-by: Aditya * minor fixes && UPDATE CHANGELOG.md * Update proto/ibc/core/channel/v1/tx.proto Co-authored-by: Carlos Rodriguez * Update proto/ibc/core/channel/v1/tx.proto Co-authored-by: Damian Nolan * apply remaining changes for crossing hello removal Deprecate previous channel id with proto tag Remove unnecessary test cases from 04-channel Remove crossing hello check in transfer application and the associated test case * remove previous channel check in WriteChannelOpenTry * regenerate proto files * update documentation * add migration documentation * remove unnecessary doc * remove crossing hello notion from ChanOpenAck * apply review suggestions Co-authored-by: Aditya Co-authored-by: Carlos Rodriguez Co-authored-by: Damian Nolan Co-authored-by: Jacob Gadikian Co-authored-by: Colin Axnér <25233464+colin-axner@users.noreply.github.com> * docs: update roadmap (#1678) * update roadmap * update roadmap * Update roadmap.md Co-authored-by: Carlos Rodriguez * refactor: remove crossing hellos from 03-connection (#1672) * remove crossing hello check from ConnOpenTry and ConnOpenAck * remove unnecessary test cases and fix build * fix tests and add migration docs * fix connection version check in conn open ack * add changelog entry * Update modules/core/03-connection/keeper/handshake.go Co-authored-by: Aditya * remove unnecessary testing function * improve migration documentation as per review suggestion Co-authored-by: Aditya * (core/23-commitment/types) doc: fix typo (#1694) * remove spurious `TestABCICodeDeterminism` tests (#1695) ## Description Thanks @colin-axner for noticing this. closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * update bug report issue template (#1693) * fix codeowners for 02-client (#1696) ## Description Thanks again @colin-axner for signaling this! closes: #XXXX --- Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why. - [x] Targeted PR against correct branch (see [CONTRIBUTING.md](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work. - [ ] Code follows the [module structure standards](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/structure.md). - [ ] Wrote unit and integration [tests](https://github.com/cosmos/ibc-go/blob/master/CONTRIBUTING.md#testing) - [ ] Updated relevant documentation (`docs/`) or specification (`x//spec/`) - [ ] Added relevant `godoc` [comments](https://blog.golang.org/godoc-documenting-go-code). - [ ] Added a relevant changelog entry to the `Unreleased` section in `CHANGELOG.md` - [x] Re-reviewed `Files changed` in the Github PR explorer - [ ] Review `Codecov Report` in the comment section below once CI passes * build(deps): bump google.golang.org/grpc from 1.47.0 to 1.48.0 (#1699) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.47.0 to 1.48.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.47.0...v1.48.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * docs: update middleware documentation (#1639) * docs: update middleware documentation * remove old text and add func keyword * alignment * fix alignment * Update develop.md * review comments * remove empty line * docs: add links in middleware docs to fee middleware implementation (#1641) * docs: add links in middleware docs to fee middleware implementation * add extra line for better readability * fix typos * Adding github action to run goimports (#1673) * Add E2ETestSuite Type (E2E #3) (#1650) * Separate go mod for e2e (E2E #4) (#1701) * put back module name in event (#1681) * fix typo * Extracting e2e tests into two separate workflows (#1719) * add categories * Add fee middleware test suite functions (E2E #5) (#1710) * Build local image to run tests with make e2e-test (#1722) * Remove leftover crossing hello tests in connection handshake (#1724) * remove leftover crossing hello tests in connection handshake * fix bug in tests * chore: adding environment variable to specify go relayer image (#1727) * Thomas/1584 update docs apps (#1675) * restructure content according to outline, fix image and syntax highlighting, fix titles and prepare for content updates * rewrite bind port section * restructure applications doc into folder structure * add keeper section, make some minor corrections in bind ports, custom packet and implmenent IBC module sections * update ibcmodule interface to encorporate the simpliefied handshake callbacks and version negotiation * fix broken links * fix remaining broken link * fix some nits, correct for removal of crossing hellos and add some more explanation on portIDs * update middleware docs to resolve merge confilicts * update fee mw docs, add formating, fix typos, increase readability (#1665) * update fee mw docs, add formating, fix typos, increase readability * fix broken link * Apply suggestions from code review (De)capitalize headings and references to headings for consistency Co-authored-by: Carlos Rodriguez * resolving merge conflict * split the CLI commands and small typo correction Co-authored-by: Carlos Rodriguez * chore: remove @fedekunze from CODEOWNERS (#1733) * Test for AsyncSingleSender (E2E #6) (#1682) * fix: running e2e-fork for dependabot PRs (#1745) * Adding manual triggering of e2e via workflow dispatch (#1749) * chore: denom traces migration handler (#1680) * update code & test * register migrator service * add changelog entry for #1680 * add issue templates for epics and releases (#1702) * add issue templates for epics and releases * remove text Co-authored-by: Carlos Rodriguez * fix typo * fix typo * feat: allow governance to update the TrustingPeriod of the 07-tendermint light client (#1713) * initial commit * format imports * update docs * update CHANGELOG * update upgrade dev docs * update re: pr comments * E2E Test: TestMsgPayPacketFeeSingleSender (#1756) * move entry to right place * build(deps): bump docker/build-push-action from 3.0.0 to 3.1.0 (#1743) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/e551b19e49efd4e98792db7592c17c09b89db8d8...1cb9d22b932e4832bb29793b7777ec860fc1cde0) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez * chore: Update makefile (#1770) * remove unused tools, remove incorrect import formatting * uncomment command in makefile * add version matrix (#1767) * add pseudocode to handle empty version string in OnChanOpenInit * fix broken link (#1776) * add item to update the version matrix after a release (#1775) * E2E Test: TestMsgPayPacketFeeSingleSenderTimesOut (#1751) * Move scripts from .github directory into cmd (#1787) * Update Makefile (#1785) * Update Makefile * Update CHANGELOG.md Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * fix: change non nil relayer check to non empty (#1774) * change non nil relayer check to non empty Change relayers != nil to len(relayers) != 0 Rename ErrRelayersNotNil to ErrRelayersNotEmpty Add test cases * add changelog entry * chore: v4->v5 only (#1782) * v4->v5 only * make e2e folder exactly match main * new protos * update protos * update proto file Co-authored-by: vuong * gofumpt to reduce total number of changes versus v5 (#1734) * build(deps): bump actions/setup-go from 2.1.5 to 2.2.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 2.1.5 to 2.2.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v2.1.5...v2.2.0) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * gofumpt to reduce total number of changes versus v5 * change IncentivizeAcknowledgement to declaration * ibc_middleware fix * Delete .gitpod.yml sorry about this! * gofumpt -w -l . Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update release-tracker.md * 🧹 Linting (#1418) * update linters so we don't have deprecated linters, and fix linter errors. * Update CHANGELOG.md * longer timeout * Update golangci.yml * fumpt * NewPacketId -> NewPacketID in keys_test.go * update changelog per feedback * Update modules/apps/29-fee/ibc_middleware.go Co-authored-by: Damian Nolan * Update modules/core/ante/ante.go Co-authored-by: Damian Nolan * Revert "Update modules/apps/29-fee/ibc_middleware.go" This reverts commit 882e9f10f03f0fc4e7a948396cb31446a94c3745. * add godoc linter * add golint (deprecated) to check for godocs * alphebetize and add errcheck * fumpt * Added gofumpt linter * some error checks and one docs fix * RedundancyDecorator * added errors, resolved an issue with RedundancyDecorator * resolve unnecessary line blank * moved comment text inside else if * update store * Update CHANGELOG.md * newpacketID in ica test * gofumpt * assignOp: replace with * merge main * lint keeper_test.go * fix error checking in client keeper * "works on my pc" ;). * use go1.18 for golangci-lint * fumpt * Update modules/core/ante/ante.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update testing/mock/ibc_app.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * Update modules/light-clients/07-tendermint/types/update.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * goimports * fumpt * Update modules/core/02-client/abci.go Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * goimports * Update golangci.yml * fix newCosmosRelayer * try to fix abci codeql flagging * make ci same as main * make format * make format * fmt and proto-gen * update linter settings * omit unnecessary type declaration ibctmtypes.Fraction * adjust golangci-lint timeout * use blank for SetUpgradedConsensusState * remove sdk_test.go * Update modules/apps/29-fee/ibc_middleware.go Co-authored-by: Damian Nolan * Update CHANGELOG.md Co-authored-by: Carlos Rodriguez * Update CHANGELOG.md Co-authored-by: Carlos Rodriguez * use declaration * Update CHANGELOG.md Co-authored-by: Carlos Rodriguez * remove unneded space * update changelog * gofumpt * fix spelling and trace.go * we win * Update mock.go * fumpt * fumpt * gofumpt -w -l -modpath github.com/cosmos/ibc-go/v4 * write files * imports? * correct formatting of imports * gofumpt * fix metrics issue * add note about blank import of statik * added note for blank import so we don't need nolint * e2e imports * give e2e a full module path * use goimports * goimports * Delete .gitpod.yml * update module paths * linting * update proto * *.go Co-authored-by: Damian Nolan Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: Carlos Rodriguez Co-authored-by: vuong * fix: add cosmos_proto.implements_interface (#1740) * fix: add cosmos_proto.implements_interface * changelog * Update CHANGELOG.md Co-authored-by: Carlos Rodriguez * run `make proto-all` * run `go mod tidy` Co-authored-by: Carlos Rodriguez Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com> * docs: adding README.md for how to write e2e tests (#1769) * chore: remove refs to AllowUpdateToExpired/Frozen client booleans (#1768) * initial removal * update CHANGELOG * update re: comments * Revert "chore: remove refs to AllowUpdateToExpired/Frozen client booleans (#1768)" (#1824) This reverts commit 029e42825d02fb2aba473103b6904bfe2f8d683f. * fix: assert previous channel identifer is empty in Msg ValidateBasic (#1792) * remove previous channel id from NewMsgChanOpenTry, assert previous channel id to be empty * add changelog entry * move changelog entry to correct location * add migration docs * Update docs/migrations/v3-to-v4.md Co-authored-by: Carlos Rodriguez * Update CHANGELOG.md Co-authored-by: Carlos Rodriguez Co-authored-by: Carlos Rodriguez * chore: rename decorator to `RedundancyRelayDecorator` (#1820) * chore: rename decorator to RedundancyRelayDecorator * add changelog * renaming * rename receiver * fix: assert previous connection id to be empty (#1797) * remove previous connection id from NewMsgConnectionOpenTry, assert previous connection id to be empty * add changelog entry * update test * add migration docs Co-authored-by: Carlos Rodriguez * build(deps): bump google.golang.org/protobuf from 1.28.0 to 1.28.1 (#1825) Bumps [google.golang.org/protobuf](https://github.com/protocolbuffers/protobuf-go) from 1.28.0 to 1.28.1. - [Release notes](https://github.com/protocolbuffers/protobuf-go/releases) - [Changelog](https://github.com/protocolbuffers/protobuf-go/blob/master/release.bash) - [Commits](https://github.com/protocolbuffers/protobuf-go/compare/v1.28.0...v1.28.1) --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez * ibc-go v5: cosmos-sdk 46 (#1653) * begin changes needed for "real 46" * 46 updates * 46 updates * Delete .gitpod.yml * 46 updates * 46 updates * Update genesis_test.go * update tests * bring back the client client * fumpt * genesis with val set * fix TestRandomizedGenState * use cosmos-sdk v0.46.0-rc2 * Revert "Merge branch 'main' into real-46-branch" This reverts commit 4b579fa060b484aa11c4abb65bc3b7766888c5ac, reversing changes made to 8e4f87eaef2d09a52a4fd2e527dc263c63b52f1a. * goimports * fumpt * Update testing/simapp/app.go Co-authored-by: Carlos Rodriguez * Update testing/simapp/simd/cmd/genaccounts.go Co-authored-by: Carlos Rodriguez * make format * tidy * change import path * remove gitpod artifact * sdk.Int -> math.Int * group sdk and tendermint imports * Organize Governance Proposal Handlers * Remove Extra line in msgs_test.go * use test.yml from main branch * fix fee module ibc middleware * remove sdk_test.go and use Carlos' branch's antehandler * various fixes * fix assignment to addr * revert change in misbehaviour_handle.go * e2e go.mod * e2e v4 module path * fix import paths * goimports and gofumpt * 46 final release * fix makefile * update proto file to v5 * temp gitpod for protos * work on protos * tidy * Delete .gitpod.yml * finish merge * apply review suggestions, fix imports Fix import formatting Change e2e import path Remove usage of time.Now() * remove incorrect e2e import path * fix incorrect import moving * refactor acknowledgement construction for SDK 0.46 * 46 upgrade * fix ics27 changes, import fixes * re add ibcclient proposal route * fix for make proto-all * now both commands work, together! * tidy * update swagger docs * appease codeql * update CONFIO_URL Co-authored-by: vuong Co-authored-by: nghuyenthevinh2000 Co-authored-by: Carlos Rodriguez Co-authored-by: Colin Axnér <25233464+colin-axner@users.noreply.github.com> Co-authored-by: Carlos Rodriguez Co-authored-by: khanh <50263489+catShaark@users.noreply.github.com> Co-authored-by: catShaark * chore: add backport task for v5.0.x (#1840) * chore: delete gitpod.yml (#1841) * build(deps): bump cosmossdk.io/math from 1.0.0-beta.2 to 1.0.0-beta.3 (#1842) Bumps [cosmossdk.io/math](https://github.com/cosmos/cosmos-sdk) from 1.0.0-beta.2 to 1.0.0-beta.3. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/math/v1.0.0-beta.2...math/v1.0.0-beta.3) --- updated-dependencies: - dependency-name: cosmossdk.io/math dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez * Update RELEASES.md * fix: proto-update-deps target on macOS (#1838) * bump version from 3 to 5 * fix merge conflicts * fix build * go imports * make format * fix linter * apply review suggestions Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com> Co-authored-by: Carlos Rodriguez Co-authored-by: Carlos Rodriguez Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carlos Rodriguez Co-authored-by: Aditya Co-authored-by: Sean King Co-authored-by: Sean King Co-authored-by: Damian Nolan Co-authored-by: Charly Co-authored-by: Luke Rhoads <51463884+lukerhoads@users.noreply.github.com> Co-authored-by: Dev Ojha Co-authored-by: Jack Zampolin Co-authored-by: Leo Pang <34628052+allthatjazzleo@users.noreply.github.com> Co-authored-by: Barrie Byron Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com> Co-authored-by: technicallyty <48813565+tytech3@users.noreply.github.com> Co-authored-by: Barrie Byron Co-authored-by: Marko Co-authored-by: Marko Baricevic Co-authored-by: Aleksandr Bezobchuk Co-authored-by: nir1218 Co-authored-by: Assaf Morami Co-authored-by: Dan McCandless Co-authored-by: Ramiro Carlucho Co-authored-by: frog power 4000 Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Co-authored-by: vuong <56973102+nguyenvuong1122000@users.noreply.github.com> Co-authored-by: khanh <50263489+catShaark@users.noreply.github.com> Co-authored-by: vuong <56973102+vuong177@users.noreply.github.com> Co-authored-by: chatton Co-authored-by: Cian Hatton Co-authored-by: Jacob Gadikian Co-authored-by: HaeSung Co-authored-by: Kevin Yang Co-authored-by: GNONG <65050483+Choi-Jinhong@users.noreply.github.com> Co-authored-by: rene <41963722+renaynay@users.noreply.github.com> Co-authored-by: tmsdkeys <98807841+tmsdkeys@users.noreply.github.com> Co-authored-by: vuong Co-authored-by: Dan Lynch Co-authored-by: nghuyenthevinh2000 Co-authored-by: catShaark Co-authored-by: Nicolás Pernas Maradei <1394289+nicopernas@users.noreply.github.com> --- .github/CODEOWNERS | 26 +- .github/ISSUE_TEMPLATE/bug-report.md | 4 + .github/ISSUE_TEMPLATE/epic-tracker.md | 64 + .github/ISSUE_TEMPLATE/release-tracker.md | 66 + .github/mergify.yml | 56 +- .github/scripts/go-imports.sh | 20 + .github/workflows/check-docs.yml | 2 +- .github/workflows/codeql-analysis.yml | 12 +- .github/workflows/e2e-fork.yml | 50 + .github/workflows/e2e.yaml | 105 + .github/workflows/goimports.yaml | 9 + .github/workflows/golangci.yml | 26 + .github/workflows/release.yml | 29 +- .github/workflows/test.yml | 17 +- .golangci.yml | 23 +- CHANGELOG.md | 261 +- Dockerfile | 23 + Makefile | 25 +- RELEASES.md | 29 +- cmd/build_test_matrix/main.go | 133 + cmd/build_test_matrix/main_test.go | 161 + cmd/determine_simd_tag/main.go | 26 + docs/.vuepress/config.js | 342 +- .../interchain-accounts/active-channels.md | 6 +- docs/apps/interchain-accounts/auth-modules.md | 70 +- docs/apps/interchain-accounts/parameters.md | 8 + docs/apps/interchain-accounts/transactions.md | 2 +- .../apps/transfer/events.md | 11 +- docs/apps/transfer/messages.md | 36 + .../apps/transfer/metrics.md | 2 +- .../apps/transfer/overview.md | 50 +- docs/apps/transfer/params.md | 24 + .../apps/transfer/state-transitions.md | 18 +- .../apps/transfer/state.md | 2 +- .../adr-002-go-module-versioning.md | 8 +- .../adr-026-ibc-client-recovery-mechanisms.md | 6 +- docs/assets/fee-mw/feeflow.png | Bin 0 -> 394717 bytes docs/assets/fee-mw/msgpaypacket.png | Bin 0 -> 150696 bytes docs/assets/fee-mw/paypacketfeeasync.png | Bin 0 -> 142753 bytes docs/assets/fee-mw/registerrelayeraddr.png | Bin 0 -> 157337 bytes docs/client/config.json | 24 + docs/client/swagger-ui/swagger.yaml | 11125 +++++++++++----- docs/ibc/apps.md | 14 +- docs/ibc/apps/apps.md | 51 + docs/ibc/apps/bindports.md | 114 + docs/ibc/apps/ibcmodule.md | 342 + docs/ibc/apps/keeper.md | 88 + docs/ibc/apps/packets_acks.md | 99 + docs/ibc/apps/routing.md | 36 + docs/ibc/events.md | 5 + docs/ibc/integration.md | 6 +- docs/ibc/middleware/develop.md | 282 +- docs/ibc/middleware/integration.md | 14 +- docs/ibc/overview.md | 2 +- docs/ibc/proto-docs.md | 235 +- docs/ibc/upgrades/developer-guide.md | 2 +- docs/middleware/ics29-fee/end-users.md | 30 + docs/middleware/ics29-fee/events.md | 37 + docs/middleware/ics29-fee/fee-distribution.md | 108 + docs/middleware/ics29-fee/integration.md | 85 + docs/middleware/ics29-fee/msgs.md | 90 + docs/middleware/ics29-fee/overview.md | 49 + .../migrations/support-denoms-with-slashes.md | 81 + docs/migrations/v2-to-v3.md | 2 +- docs/migrations/v3-to-v4.md | 114 +- docs/roadmap/roadmap.md | 55 +- docs/versions | 3 + e2e/Makefile | 13 + e2e/README.md | 316 + e2e/fee_middleware_test.go | 436 + e2e/go.mod | 142 + e2e/go.sum | 1556 +++ e2e/scripts/run-e2e.sh | 17 + e2e/testconfig/testconfig.go | 93 + e2e/testsuite/relayer.go | 24 + e2e/testsuite/testsuite.go | 340 + e2e/testvalues/values.go | 32 + go.mod | 130 +- go.sum | 972 +- .../27-interchain-accounts/client/cli/cli.go | 4 +- .../controller/client/cli/query.go | 2 +- .../{ibc_module.go => ibc_middleware.go} | 111 +- ..._module_test.go => ibc_middleware_test.go} | 74 +- .../controller/keeper/account.go | 42 +- .../controller/keeper/account_test.go | 40 +- .../controller/keeper/events.go | 31 + .../controller/keeper/genesis.go | 4 +- .../controller/keeper/genesis_test.go | 9 +- .../controller/keeper/grpc_query.go | 2 +- .../controller/keeper/grpc_query_test.go | 2 +- .../controller/keeper/handshake.go | 34 +- .../controller/keeper/handshake_test.go | 38 +- .../controller/keeper/keeper.go | 14 +- .../controller/keeper/keeper_test.go | 14 +- .../controller/keeper/params.go | 2 +- .../controller/keeper/params_test.go | 2 +- .../controller/keeper/relay.go | 6 +- .../controller/keeper/relay_test.go | 14 +- .../controller/types/controller.pb.go | 4 +- .../controller/types/params.go | 6 +- .../controller/types/params_test.go | 2 +- .../controller/types/query.pb.go | 36 +- .../host/client/cli/query.go | 8 +- .../27-interchain-accounts/host/ibc_module.go | 27 +- .../host/ibc_module_test.go | 121 +- .../host/keeper/account.go | 2 +- .../host/keeper/account_test.go | 6 +- .../host/keeper/events.go | 27 +- .../host/keeper/genesis.go | 4 +- .../host/keeper/genesis_test.go | 8 +- .../host/keeper/grpc_query.go | 2 +- .../host/keeper/grpc_query_test.go | 2 +- .../host/keeper/handshake.go | 7 +- .../host/keeper/handshake_test.go | 21 +- .../host/keeper/keeper.go | 14 +- .../host/keeper/keeper_test.go | 14 +- .../host/keeper/params.go | 2 +- .../host/keeper/params_test.go | 2 +- .../host/keeper/relay.go | 27 +- .../host/keeper/relay_test.go | 64 +- .../27-interchain-accounts/host/types/ack.go | 27 - .../host/types/ack_test.go | 101 - .../host/types/host.pb.go | 4 +- .../27-interchain-accounts/host/types/keys.go | 5 + .../host/types/params_test.go | 2 +- .../host/types/query.pb.go | 40 +- modules/apps/27-interchain-accounts/module.go | 35 +- .../27-interchain-accounts/module_test.go | 13 +- .../27-interchain-accounts/types/account.go | 2 - .../types/account.pb.go | 6 +- .../types/account_test.go | 6 +- .../27-interchain-accounts/types/codec.go | 14 +- .../types/codec_test.go | 7 +- .../27-interchain-accounts/types/events.go | 6 +- .../types/expected_keepers.go | 4 +- .../27-interchain-accounts/types/genesis.go | 6 +- .../types/genesis.pb.go | 76 +- .../types/genesis_test.go | 20 +- .../27-interchain-accounts/types/keys_test.go | 2 +- .../27-interchain-accounts/types/metadata.go | 24 +- .../types/metadata.pb.go | 40 +- .../types/metadata_test.go | 7 +- .../27-interchain-accounts/types/packet.pb.go | 52 +- .../types/packet_test.go | 4 +- .../27-interchain-accounts/types/port_test.go | 4 +- modules/apps/29-fee/client/cli/cli.go | 9 +- modules/apps/29-fee/client/cli/query.go | 83 +- modules/apps/29-fee/client/cli/tx.go | 81 +- modules/apps/29-fee/fee_test.go | 10 +- .../{ibc_module.go => ibc_middleware.go} | 204 +- ..._module_test.go => ibc_middleware_test.go} | 568 +- modules/apps/29-fee/ica_test.go | 197 + modules/apps/29-fee/keeper/escrow.go | 52 +- modules/apps/29-fee/keeper/escrow_test.go | 121 +- modules/apps/29-fee/keeper/events.go | 70 +- modules/apps/29-fee/keeper/events_test.go | 83 + modules/apps/29-fee/keeper/genesis.go | 19 +- modules/apps/29-fee/keeper/genesis_test.go | 95 +- modules/apps/29-fee/keeper/grpc_query.go | 36 +- modules/apps/29-fee/keeper/grpc_query_test.go | 137 +- modules/apps/29-fee/keeper/keeper.go | 104 +- modules/apps/29-fee/keeper/keeper_test.go | 90 +- modules/apps/29-fee/keeper/msg_server.go | 80 +- modules/apps/29-fee/keeper/msg_server_test.go | 200 +- modules/apps/29-fee/keeper/relay.go | 10 +- modules/apps/29-fee/keeper/relay_test.go | 16 +- modules/apps/29-fee/module.go | 18 +- modules/apps/29-fee/transfer_test.go | 14 +- modules/apps/29-fee/types/ack.go | 2 +- modules/apps/29-fee/types/ack.pb.go | 69 +- modules/apps/29-fee/types/codec.go | 6 +- modules/apps/29-fee/types/errors.go | 4 +- modules/apps/29-fee/types/events.go | 14 +- modules/apps/29-fee/types/expected_keepers.go | 6 +- modules/apps/29-fee/types/fee.go | 20 +- modules/apps/29-fee/types/fee.pb.go | 14 +- modules/apps/29-fee/types/fee_test.go | 24 +- modules/apps/29-fee/types/genesis.go | 65 +- modules/apps/29-fee/types/genesis.pb.go | 544 +- modules/apps/29-fee/types/genesis_test.go | 180 +- modules/apps/29-fee/types/keys.go | 50 +- modules/apps/29-fee/types/keys_test.go | 68 +- modules/apps/29-fee/types/metadata.pb.go | 4 +- modules/apps/29-fee/types/msgs.go | 98 +- modules/apps/29-fee/types/msgs_test.go | 148 +- modules/apps/29-fee/types/query.pb.go | 781 +- modules/apps/29-fee/types/query.pb.gw.go | 378 +- modules/apps/29-fee/types/tx.pb.go | 787 +- modules/apps/transfer/client/cli/cli.go | 3 +- modules/apps/transfer/client/cli/query.go | 14 +- modules/apps/transfer/client/cli/tx.go | 6 +- modules/apps/transfer/ibc_module.go | 66 +- modules/apps/transfer/ibc_module_test.go | 36 +- modules/apps/transfer/keeper/MBT_README.md | 2 +- modules/apps/transfer/keeper/encoding.go | 2 +- modules/apps/transfer/keeper/genesis.go | 2 +- modules/apps/transfer/keeper/genesis_test.go | 2 +- modules/apps/transfer/keeper/grpc_query.go | 21 +- .../apps/transfer/keeper/grpc_query_test.go | 75 +- modules/apps/transfer/keeper/keeper.go | 10 +- modules/apps/transfer/keeper/keeper_test.go | 4 +- .../apps/transfer/keeper/mbt_relay_test.go | 21 +- modules/apps/transfer/keeper/migrations.go | 58 + .../apps/transfer/keeper/migrations_test.go | 121 + modules/apps/transfer/keeper/msg_server.go | 2 +- modules/apps/transfer/keeper/params.go | 2 +- modules/apps/transfer/keeper/params_test.go | 2 +- modules/apps/transfer/keeper/relay.go | 17 +- modules/apps/transfer/keeper/relay_test.go | 105 +- modules/apps/transfer/module.go | 27 +- modules/apps/transfer/simulation/decoder.go | 2 +- .../apps/transfer/simulation/decoder_test.go | 6 +- modules/apps/transfer/simulation/genesis.go | 2 +- .../apps/transfer/simulation/genesis_test.go | 10 +- modules/apps/transfer/simulation/params.go | 6 +- .../apps/transfer/simulation/params_test.go | 2 +- modules/apps/transfer/spec/04_messages.md | 40 - modules/apps/transfer/spec/07_params.md | 28 - modules/apps/transfer/spec/README.md | 24 - modules/apps/transfer/transfer_test.go | 6 +- modules/apps/transfer/types/ack.go | 27 - modules/apps/transfer/types/ack_test.go | 74 +- modules/apps/transfer/types/coin.go | 4 +- .../apps/transfer/types/expected_keepers.go | 6 +- modules/apps/transfer/types/genesis.go | 2 +- modules/apps/transfer/types/genesis.pb.go | 36 +- modules/apps/transfer/types/genesis_test.go | 2 +- modules/apps/transfer/types/keys_test.go | 2 +- modules/apps/transfer/types/msgs.go | 4 +- modules/apps/transfer/types/msgs_test.go | 2 +- modules/apps/transfer/types/packet.go | 2 +- modules/apps/transfer/types/packet.pb.go | 28 +- modules/apps/transfer/types/query.pb.go | 521 +- modules/apps/transfer/types/query.pb.gw.go | 120 + modules/apps/transfer/types/trace.go | 55 +- modules/apps/transfer/types/trace_test.go | 63 +- modules/apps/transfer/types/transfer.pb.go | 34 +- modules/apps/transfer/types/tx.pb.go | 36 +- modules/core/02-client/abci.go | 8 +- modules/core/02-client/abci_test.go | 8 +- modules/core/02-client/client/cli/cli.go | 3 +- modules/core/02-client/client/cli/query.go | 49 +- modules/core/02-client/client/cli/tx.go | 22 +- .../core/02-client/client/proposal_handler.go | 20 +- modules/core/02-client/client/utils/utils.go | 12 +- modules/core/02-client/genesis.go | 6 +- modules/core/02-client/keeper/client.go | 9 +- modules/core/02-client/keeper/client_test.go | 55 +- modules/core/02-client/keeper/encoding.go | 4 +- modules/core/02-client/keeper/events.go | 23 +- modules/core/02-client/keeper/grpc_query.go | 47 +- .../core/02-client/keeper/grpc_query_test.go | 191 +- modules/core/02-client/keeper/keeper.go | 15 +- modules/core/02-client/keeper/keeper_test.go | 22 +- modules/core/02-client/keeper/migrations.go | 2 +- modules/core/02-client/keeper/params.go | 2 +- modules/core/02-client/keeper/params_test.go | 2 +- modules/core/02-client/keeper/proposal.go | 15 +- .../core/02-client/keeper/proposal_test.go | 14 +- modules/core/02-client/legacy/v100/genesis.go | 10 +- .../02-client/legacy/v100/genesis_test.go | 33 +- .../core/02-client/legacy/v100/solomachine.go | 2 +- .../02-client/legacy/v100/solomachine.pb.go | 36 +- modules/core/02-client/legacy/v100/store.go | 32 +- .../core/02-client/legacy/v100/store_test.go | 14 +- .../02-client/migrations/v6/solomachine.pb.go | 36 +- modules/core/02-client/module.go | 4 +- modules/core/02-client/proposal_handler.go | 6 +- .../core/02-client/proposal_handler_test.go | 11 +- modules/core/02-client/simulation/decoder.go | 6 +- .../core/02-client/simulation/decoder_test.go | 10 +- modules/core/02-client/simulation/genesis.go | 2 +- modules/core/02-client/types/client.go | 4 +- modules/core/02-client/types/client.pb.go | 94 +- modules/core/02-client/types/client_test.go | 8 +- modules/core/02-client/types/codec.go | 4 +- modules/core/02-client/types/codec_test.go | 11 +- modules/core/02-client/types/encoding.go | 2 +- modules/core/02-client/types/encoding_test.go | 5 +- modules/core/02-client/types/events.go | 16 +- modules/core/02-client/types/genesis.go | 7 +- modules/core/02-client/types/genesis.pb.go | 64 +- modules/core/02-client/types/genesis_test.go | 16 +- modules/core/02-client/types/height.go | 2 +- modules/core/02-client/types/height_test.go | 3 +- modules/core/02-client/types/keys.go | 2 +- modules/core/02-client/types/keys_test.go | 2 +- modules/core/02-client/types/msgs.go | 8 +- modules/core/02-client/types/msgs_test.go | 12 +- modules/core/02-client/types/params.go | 2 +- modules/core/02-client/types/params_test.go | 2 +- modules/core/02-client/types/proposal.go | 4 +- modules/core/02-client/types/proposal_test.go | 10 +- modules/core/02-client/types/query.go | 2 +- modules/core/02-client/types/query.pb.go | 663 +- modules/core/02-client/types/query.pb.gw.go | 116 + modules/core/02-client/types/tx.pb.go | 80 +- modules/core/03-connection/client/cli/cli.go | 2 +- .../core/03-connection/client/cli/query.go | 6 +- .../core/03-connection/client/utils/utils.go | 16 +- modules/core/03-connection/genesis.go | 4 +- modules/core/03-connection/keeper/events.go | 4 +- .../core/03-connection/keeper/grpc_query.go | 8 +- .../03-connection/keeper/grpc_query_test.go | 20 +- .../core/03-connection/keeper/handshake.go | 88 +- .../03-connection/keeper/handshake_test.go | 128 +- modules/core/03-connection/keeper/keeper.go | 18 +- .../core/03-connection/keeper/keeper_test.go | 7 +- modules/core/03-connection/keeper/params.go | 2 +- .../core/03-connection/keeper/params_test.go | 2 +- modules/core/03-connection/keeper/verify.go | 12 +- .../core/03-connection/keeper/verify_test.go | 16 +- modules/core/03-connection/module.go | 4 +- .../core/03-connection/simulation/decoder.go | 4 +- .../03-connection/simulation/decoder_test.go | 8 +- .../core/03-connection/simulation/genesis.go | 2 +- modules/core/03-connection/types/codec.go | 16 +- .../core/03-connection/types/connection.go | 6 +- .../core/03-connection/types/connection.pb.go | 95 +- .../03-connection/types/connection_test.go | 8 +- modules/core/03-connection/types/events.go | 2 +- .../03-connection/types/expected_keepers.go | 2 +- modules/core/03-connection/types/genesis.go | 4 +- .../core/03-connection/types/genesis.pb.go | 48 +- .../core/03-connection/types/genesis_test.go | 7 +- modules/core/03-connection/types/keys.go | 2 +- modules/core/03-connection/types/keys_test.go | 2 +- modules/core/03-connection/types/msgs.go | 18 +- modules/core/03-connection/types/msgs_test.go | 62 +- .../core/03-connection/types/params_test.go | 2 +- modules/core/03-connection/types/query.go | 4 +- modules/core/03-connection/types/query.pb.go | 110 +- modules/core/03-connection/types/tx.pb.go | 126 +- modules/core/03-connection/types/version.go | 6 +- .../core/03-connection/types/version_test.go | 9 +- modules/core/04-channel/client/cli/cli.go | 2 +- modules/core/04-channel/client/cli/query.go | 6 +- modules/core/04-channel/client/utils/utils.go | 14 +- modules/core/04-channel/genesis.go | 4 +- modules/core/04-channel/keeper/events.go | 27 +- modules/core/04-channel/keeper/grpc_query.go | 16 +- .../core/04-channel/keeper/grpc_query_test.go | 31 +- modules/core/04-channel/keeper/handshake.go | 82 +- .../core/04-channel/keeper/handshake_test.go | 52 +- modules/core/04-channel/keeper/keeper.go | 17 +- modules/core/04-channel/keeper/keeper_test.go | 6 +- modules/core/04-channel/keeper/packet.go | 10 +- modules/core/04-channel/keeper/packet_test.go | 20 +- modules/core/04-channel/keeper/timeout.go | 12 +- .../core/04-channel/keeper/timeout_test.go | 13 +- modules/core/04-channel/module.go | 4 +- modules/core/04-channel/simulation/decoder.go | 4 +- .../04-channel/simulation/decoder_test.go | 8 +- modules/core/04-channel/simulation/genesis.go | 2 +- .../core/04-channel/types/acknowledgement.go | 15 +- .../04-channel/types/acknowledgement_test.go | 85 +- modules/core/04-channel/types/channel.go | 4 +- modules/core/04-channel/types/channel.pb.go | 52 +- modules/core/04-channel/types/channel_test.go | 2 +- modules/core/04-channel/types/codec.go | 2 +- modules/core/04-channel/types/errors.go | 1 + modules/core/04-channel/types/events.go | 7 +- .../core/04-channel/types/expected_keepers.go | 4 +- modules/core/04-channel/types/genesis.go | 4 +- modules/core/04-channel/types/genesis.pb.go | 62 +- modules/core/04-channel/types/genesis_test.go | 2 +- modules/core/04-channel/types/keys.go | 2 +- modules/core/04-channel/types/keys_test.go | 2 +- modules/core/04-channel/types/msgs.go | 13 +- modules/core/04-channel/types/msgs_test.go | 50 +- modules/core/04-channel/types/packet.go | 12 +- modules/core/04-channel/types/packet_test.go | 4 +- modules/core/04-channel/types/query.go | 4 +- modules/core/04-channel/types/query.pb.go | 192 +- modules/core/04-channel/types/tx.pb.go | 171 +- modules/core/04-channel/types/version.go | 27 - modules/core/04-channel/types/version_test.go | 77 - modules/core/05-port/keeper/keeper.go | 4 +- modules/core/05-port/keeper/keeper_test.go | 4 +- modules/core/05-port/module.go | 4 +- modules/core/05-port/types/module.go | 22 +- modules/core/05-port/types/query.pb.go | 9 +- modules/core/23-commitment/types/codec.go | 2 +- .../core/23-commitment/types/commitment.pb.go | 44 +- .../23-commitment/types/commitment_test.go | 4 +- modules/core/23-commitment/types/merkle.go | 4 +- .../core/23-commitment/types/merkle_test.go | 4 +- .../core/23-commitment/types/utils_test.go | 2 +- modules/core/24-host/keys.go | 2 +- modules/core/24-host/parse_test.go | 4 +- modules/core/24-host/validate.go | 2 +- modules/core/ante/ante.go | 42 +- modules/core/ante/ante_test.go | 18 +- modules/core/client/cli/cli.go | 11 +- modules/core/client/query.go | 6 +- modules/core/exported/client.go | 2 +- modules/core/genesis.go | 10 +- modules/core/genesis_test.go | 20 +- modules/core/keeper/grpc_query.go | 11 +- modules/core/keeper/keeper.go | 36 +- modules/core/keeper/keeper_test.go | 133 + modules/core/keeper/migrations.go | 2 +- modules/core/keeper/msg_server.go | 30 +- modules/core/keeper/msg_server_test.go | 53 +- modules/core/legacy/v100/genesis.go | 14 +- modules/core/legacy/v100/genesis_test.go | 26 +- modules/core/migrations/v5/migrations.go | 8 +- modules/core/migrations/v5/migrations_test.go | 10 +- modules/core/module.go | 44 +- modules/core/simulation/decoder.go | 10 +- modules/core/simulation/decoder_test.go | 14 +- modules/core/simulation/genesis.go | 16 +- modules/core/simulation/genesis_test.go | 11 +- modules/core/types/codec.go | 12 +- modules/core/types/genesis.go | 6 +- modules/core/types/genesis.pb.go | 46 +- modules/core/types/query.go | 12 +- .../06-solomachine/client_state.go | 10 +- .../06-solomachine/client_state_test.go | 14 +- modules/light-clients/06-solomachine/codec.go | 2 +- .../06-solomachine/consensus_state.go | 4 +- .../06-solomachine/consensus_state_test.go | 7 +- .../light-clients/06-solomachine/header.go | 4 +- .../06-solomachine/header_test.go | 6 +- .../06-solomachine/misbehaviour.go | 6 +- .../06-solomachine/misbehaviour_handle.go | 3 +- .../06-solomachine/misbehaviour_test.go | 6 +- .../06-solomachine/proof_test.go | 2 +- .../06-solomachine/proposal_handle.go | 5 +- .../06-solomachine/proposal_handle_test.go | 12 +- .../06-solomachine/solomachine.pb.go | 100 +- .../06-solomachine/solomachine_test.go | 8 +- .../light-clients/06-solomachine/update.go | 6 +- .../06-solomachine/update_test.go | 12 +- .../07-tendermint/client_state.go | 8 +- .../07-tendermint/client_state_test.go | 22 +- modules/light-clients/07-tendermint/codec.go | 2 +- .../07-tendermint/consensus_state.go | 6 +- .../07-tendermint/consensus_state_test.go | 12 +- .../light-clients/07-tendermint/genesis.go | 4 +- .../07-tendermint/genesis_test.go | 6 +- modules/light-clients/07-tendermint/header.go | 6 +- .../07-tendermint/header_test.go | 10 +- .../07-tendermint/misbehaviour.go | 8 +- .../07-tendermint/misbehaviour_handle.go | 9 +- .../07-tendermint/misbehaviour_handle_test.go | 12 +- .../07-tendermint/misbehaviour_test.go | 10 +- .../07-tendermint/proposal_handle.go | 17 +- .../07-tendermint/proposal_handle_test.go | 104 +- modules/light-clients/07-tendermint/store.go | 9 +- .../light-clients/07-tendermint/store_test.go | 14 +- .../07-tendermint/tendermint.pb.go | 142 +- .../07-tendermint/tendermint_test.go | 10 +- modules/light-clients/07-tendermint/update.go | 14 +- .../07-tendermint/update_test.go | 15 +- .../light-clients/07-tendermint/upgrade.go | 6 +- .../07-tendermint/upgrade_test.go | 10 +- proto/ibc/applications/fee/v1/ack.proto | 6 +- proto/ibc/applications/fee/v1/fee.proto | 2 +- proto/ibc/applications/fee/v1/genesis.proto | 36 +- proto/ibc/applications/fee/v1/metadata.proto | 2 +- proto/ibc/applications/fee/v1/query.proto | 61 +- proto/ibc/applications/fee/v1/tx.proto | 57 +- .../controller/v1/controller.proto | 2 +- .../controller/v1/query.proto | 2 +- .../interchain_accounts/host/v1/host.proto | 2 +- .../interchain_accounts/host/v1/query.proto | 2 +- .../interchain_accounts/v1/account.proto | 2 +- .../interchain_accounts/v1/genesis.proto | 2 +- .../interchain_accounts/v1/metadata.proto | 2 +- .../interchain_accounts/v1/packet.proto | 2 +- .../applications/transfer/v1/genesis.proto | 2 +- .../ibc/applications/transfer/v1/query.proto | 23 +- .../applications/transfer/v1/transfer.proto | 2 +- proto/ibc/applications/transfer/v1/tx.proto | 2 +- .../ibc/applications/transfer/v2/packet.proto | 2 +- proto/ibc/core/channel/v1/channel.proto | 2 +- proto/ibc/core/channel/v1/genesis.proto | 2 +- proto/ibc/core/channel/v1/query.proto | 2 +- proto/ibc/core/channel/v1/tx.proto | 7 +- proto/ibc/core/client/v1/client.proto | 13 +- proto/ibc/core/client/v1/genesis.proto | 2 +- proto/ibc/core/client/v1/query.proto | 25 +- proto/ibc/core/client/v1/tx.proto | 2 +- proto/ibc/core/commitment/v1/commitment.proto | 2 +- proto/ibc/core/connection/v1/connection.proto | 2 +- proto/ibc/core/connection/v1/genesis.proto | 2 +- proto/ibc/core/connection/v1/query.proto | 2 +- proto/ibc/core/connection/v1/tx.proto | 17 +- proto/ibc/core/types/v1/genesis.proto | 2 +- .../solomachine/v1/solomachine.proto | 2 +- .../solomachine/v2/solomachine.proto | 4 +- .../solomachine/v3/solomachine.proto | 2 +- .../tendermint/v1/tendermint.proto | 2 +- testing/README.md | 4 +- testing/app.go | 12 +- testing/chain.go | 27 +- testing/chain_test.go | 6 +- testing/config.go | 10 +- testing/coordinator.go | 40 - testing/endpoint.go | 23 +- testing/events.go | 11 +- testing/mock/ack.go | 14 +- testing/mock/ibc_app.go | 16 +- testing/mock/ibc_module.go | 22 +- testing/mock/ibc_module_test.go | 8 +- testing/mock/mock.go | 20 +- testing/mock/privval_test.go | 2 +- testing/path.go | 2 +- testing/simapp/ante_handler.go | 25 +- testing/simapp/app.go | 305 +- testing/simapp/encoding.go | 2 +- testing/simapp/export.go | 14 +- testing/simapp/genesis_account_test.go | 2 +- testing/simapp/params/amino.go | 3 +- testing/simapp/params/proto.go | 1 + testing/simapp/sim_bench_test.go | 2 +- testing/simapp/sim_test.go | 17 +- testing/simapp/simd/cmd/cmd_test.go | 6 +- testing/simapp/simd/cmd/genaccounts.go | 12 +- testing/simapp/simd/cmd/genaccounts_test.go | 9 +- testing/simapp/simd/cmd/root.go | 36 +- testing/simapp/simd/cmd/testnet.go | 28 +- testing/simapp/simd/main.go | 6 +- testing/simapp/state.go | 6 +- testing/simapp/test_helpers.go | 144 +- testing/simapp/utils.go | 8 +- testing/solomachine.go | 10 +- testing/values.go | 22 +- .../proto/cosmos/auth/v1beta1/auth.proto | 24 +- .../proto/cosmos/auth/v1beta1/genesis.proto | 3 +- .../base/query/v1beta1/pagination.proto | 8 +- .../proto/cosmos/base/v1beta1/coin.proto | 11 +- .../cosmos/upgrade/v1beta1/upgrade.proto | 51 +- third_party/proto/cosmos_proto/cosmos.proto | 2 + third_party/proto/proofs.proto | 1 + 536 files changed, 24542 insertions(+), 9562 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/epic-tracker.md create mode 100644 .github/ISSUE_TEMPLATE/release-tracker.md create mode 100755 .github/scripts/go-imports.sh create mode 100644 .github/workflows/e2e-fork.yml create mode 100644 .github/workflows/e2e.yaml create mode 100644 .github/workflows/goimports.yaml create mode 100644 .github/workflows/golangci.yml create mode 100644 Dockerfile create mode 100644 cmd/build_test_matrix/main.go create mode 100644 cmd/build_test_matrix/main_test.go create mode 100644 cmd/determine_simd_tag/main.go rename modules/apps/transfer/spec/05_events.md => docs/apps/transfer/events.md (84%) create mode 100644 docs/apps/transfer/messages.md rename modules/apps/transfer/spec/06_metrics.md => docs/apps/transfer/metrics.md (86%) rename modules/apps/transfer/spec/01_concepts.md => docs/apps/transfer/overview.md (72%) create mode 100644 docs/apps/transfer/params.md rename modules/apps/transfer/spec/03_state_transitions.md => docs/apps/transfer/state-transitions.md (78%) rename modules/apps/transfer/spec/02_state.md => docs/apps/transfer/state.md (57%) create mode 100644 docs/assets/fee-mw/feeflow.png create mode 100644 docs/assets/fee-mw/msgpaypacket.png create mode 100644 docs/assets/fee-mw/paypacketfeeasync.png create mode 100644 docs/assets/fee-mw/registerrelayeraddr.png create mode 100644 docs/ibc/apps/apps.md create mode 100644 docs/ibc/apps/bindports.md create mode 100644 docs/ibc/apps/ibcmodule.md create mode 100644 docs/ibc/apps/keeper.md create mode 100644 docs/ibc/apps/packets_acks.md create mode 100644 docs/ibc/apps/routing.md create mode 100644 docs/middleware/ics29-fee/end-users.md create mode 100644 docs/middleware/ics29-fee/events.md create mode 100644 docs/middleware/ics29-fee/fee-distribution.md create mode 100644 docs/middleware/ics29-fee/integration.md create mode 100644 docs/middleware/ics29-fee/msgs.md create mode 100644 docs/middleware/ics29-fee/overview.md create mode 100644 docs/migrations/support-denoms-with-slashes.md create mode 100644 e2e/Makefile create mode 100644 e2e/README.md create mode 100644 e2e/fee_middleware_test.go create mode 100644 e2e/go.mod create mode 100644 e2e/go.sum create mode 100755 e2e/scripts/run-e2e.sh create mode 100644 e2e/testconfig/testconfig.go create mode 100644 e2e/testsuite/relayer.go create mode 100644 e2e/testsuite/testsuite.go create mode 100644 e2e/testvalues/values.go rename modules/apps/27-interchain-accounts/controller/{ibc_module.go => ibc_middleware.go} (52%) rename modules/apps/27-interchain-accounts/controller/{ibc_module_test.go => ibc_middleware_test.go} (91%) create mode 100644 modules/apps/27-interchain-accounts/controller/keeper/events.go delete mode 100644 modules/apps/27-interchain-accounts/host/types/ack.go delete mode 100644 modules/apps/27-interchain-accounts/host/types/ack_test.go rename modules/apps/29-fee/{ibc_module.go => ibc_middleware.go} (54%) rename modules/apps/29-fee/{ibc_module_test.go => ibc_middleware_test.go} (56%) create mode 100644 modules/apps/29-fee/ica_test.go create mode 100644 modules/apps/29-fee/keeper/events_test.go create mode 100644 modules/apps/transfer/keeper/migrations.go create mode 100644 modules/apps/transfer/keeper/migrations_test.go delete mode 100644 modules/apps/transfer/spec/04_messages.md delete mode 100644 modules/apps/transfer/spec/07_params.md delete mode 100644 modules/apps/transfer/spec/README.md delete mode 100644 modules/apps/transfer/types/ack.go delete mode 100644 modules/core/04-channel/types/version.go delete mode 100644 modules/core/04-channel/types/version_test.go create mode 100644 modules/core/keeper/keeper_test.go diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2c6a4204e19..13e9c5c254c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,6 +1,6 @@ # CODEOWNERS: https://help.github.com/articles/about-codeowners/ -* @colin-axner @AdityaSripal @crodriguezvega @seantking @charleenfei @damiannolan +* @colin-axner @AdityaSripal @crodriguezvega @seantking @charleenfei @damiannolan @chatton # Order is important; the last matching pattern takes the most # precedence. When someone opens a pull request that only @@ -13,20 +13,30 @@ # CODEOWNERS for the core IBC module -/modules/core/ @colin-axner @fedekunze @AdityaSripal -/proto/core/ @colin-axner @fedekunze @AdityaSripal +/modules/core/ @colin-axner @AdityaSripal +/proto/ibc/core/ @colin-axner @AdityaSripal + +## CODEOWNERS for core/02-client + +/modules/core/02-client @colin-axner @AdityaSripal @seantking @damiannolan +/proto/ibc/core/client @colin-axner @AdityaSripal @seantking @damiannolan # CODEOWNERS for the light-clients -/modules/light-clients/ @colin-axner @fedekunze @AdityaSripal -/proto/lightclients/ @colin-axner @fedekunze @AdityaSripal +/modules/light-clients/ @colin-axner @AdityaSripal @seantking @damiannolan +/proto/ibc/lightclients/ @colin-axner @AdityaSripal @seantking @damiannolan # CODEOWNERS for ICS 20 -/modules/apps/transfer/ @colin-axner @fedekunze @AdityaSripal -/proto/applications/transfer/ @colin-axner @fedekunze @AdityaSripal +/modules/apps/transfer/ @colin-axner @AdityaSripal +/proto/ibc/applications/transfer/ @colin-axner @AdityaSripal # CODEOWNERS for interchain-accounts module /modules/apps/27-interchain-accounts/ @seantking @colin-axner @AdityaSripal @damiannolan -/proto/applications/interchain_accounts/ @seantking @colin-axner @AdityaSripal @damiannolan +/proto/ibc/applications/interchain_accounts/ @seantking @colin-axner @AdityaSripal @damiannolan + +# CODEOWNERS for fee module + +/modules/apps/29-fee/ @AdityaSripal @seantking @charleenfei @colin-axner @damiannolan +/proto/ibc/applications/fee/ @AdityaSripal @seantking @charleenfei @colin-axner @damiannolan diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index 5bdfad7c29a..9cb089d1f23 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -20,6 +20,10 @@ through the appropriate channels won't receive any bounty. +## Expected Behaviour + + + ## Version diff --git a/.github/ISSUE_TEMPLATE/epic-tracker.md b/.github/ISSUE_TEMPLATE/epic-tracker.md new file mode 100644 index 00000000000..df3f553ff49 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/epic-tracker.md @@ -0,0 +1,64 @@ +--- +name: Epic Tracker +about: Create an issue to track feature epic progress + +--- + + + +## Requirements document + + + +## IBC spec + + + +## ADRs + + + +## Milestones + + + +## Implementation issues + + + +## QA scenarios + + + +## Automated e2e tests + + + +## Pre-releases + + + +## Checklist + + + +- [ ] Internal audit(s) +- [ ] External audit(s) +- [ ] Documentation +- [ ] Swagger +- [ ] Integration with relayers: + - [ ] Hermes + - [ ] Rly + +____ + +#### For Admin Use + +- [ ] Not duplicate issue +- [ ] Appropriate labels applied +- [ ] Appropriate contributors tagged/assigned diff --git a/.github/ISSUE_TEMPLATE/release-tracker.md b/.github/ISSUE_TEMPLATE/release-tracker.md new file mode 100644 index 00000000000..e4ae04f37a5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/release-tracker.md @@ -0,0 +1,66 @@ +--- +name: Release tracker +about: Create an issue to track release progress + +--- + + + +## Milestones + + + +## IBC spec compatibility + + + +## QA + +### Backwards compatibility + + + +- [ ] Fungible token transfers over a non-incentivised channel works with a counterparty chain running each previous major version. +- [ ] Fungible token transfers over an incentivised channel works with a counterparty chain running each previous major version that supports ICS-29 Fee Middleware. +- [ ] Interchain Accounts over a non-incentivised channel works with a counterparty chain running each previous major version that supports ICS-27 Interchain Accounts over non-incentivised channels. +- [ ] Interchain Accounts over an incentivised channel works with a counterparty chain running each previous major version that supports ICS-27 Interchain Accounts over incentivised channels. + +## Migration + + + +## Checklist + + + +- [ ] Bump [go package version](https://github.com/cosmos/ibc-go/blob/main/go.mod#L3). +- [ ] Change all imports starting with `github.com/cosmos/ibc-go/v{x}` to `github.com/cosmos/ibc-go/v{x+1}`. +- [ ] Branch off main to create release branch in the form of `release/vx.y.z`. +- [ ] Add branch protection rules to new release branch. +- [ ] Add backport task to [`mergify.yml`](https://github.com/cosmos/ibc-go/blob/main/.github/mergify.yml) +- [ ] Upgrade ibc-go version in [ibctest](https://github.com/strangelove-ventures/ibctest). +- [ ] Check Swagger is up-to-date. + +## Post-release checklist + +- [ ] Update [`CHANGELOG.md`](https://github.com/cosmos/ibc-go/blob/main/CHANGELOG.md) +- [ ] Update the table of supported release lines (and End of Life dates) in [`RELEASES.md`](https://github.com/cosmos/ibc-go/blob/main/RELEASES.md). +- [ ] Update [version matrix](https://github.com/cosmos/ibc-go/blob/main/RELEASES.md#version-matrix) in `RELEASES.md`. +- [ ] Update docs site: + - [ ] Add new release branch to [`docs/versions`](https://github.com/cosmos/ibc-go/blob/main/docs/versions) file. + - [ ] Add `label` and `key` to `versions` array in [`config.js`](https://github.com/cosmos/ibc-go/blob/main/docs/.vuepress/config.js#L33). +- [ ] After changes to docs site are deployed, check [ibc.cosmos.network](https://ibc.cosmos.network) is updated. + +____ + +#### For Admin Use + +- [ ] Not duplicate issue +- [ ] Appropriate labels applied +- [ ] Appropriate contributors tagged/assigned diff --git a/.github/mergify.yml b/.github/mergify.yml index 70c3828d03f..840d32a3eaa 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -18,67 +18,75 @@ pull_request_rules: commit_message_template: | {{ title }} (#{{ number }}) {{ body }} - - name: backport patches to v1.1.x branch + - name: backport patches to v2.1.x branch conditions: - base=main - - label=backport-to-v1.1.x + - label=backport-to-v2.1.x actions: backport: branches: - - release/v1.1.x - - name: backport patches to v1.2.x branch + - release/v2.1.x + - name: backport patches to v2.2.x branch conditions: - base=main - - label=backport-to-v1.2.x + - label=backport-to-v2.2.x actions: backport: branches: - - release/v1.2.x - - name: backport patches to v1.3.x branch + - release/v2.2.x + - name: backport patches to v2.3.x branch conditions: - base=main - - label=backport-to-v1.3.x + - label=backport-to-v2.3.x actions: backport: branches: - - release/v1.3.x - - name: backport patches to v1.4.x branch + - release/v2.3.x + - name: backport patches to v2.4.x branch conditions: - base=main - - label=backport-to-v1.4.x + - label=backport-to-v2.4.x actions: backport: branches: - - release/v1.4.x - - name: backport patches to v2.0.x branch + - release/v2.4.x + - name: backport patches to v3.0.x branch conditions: - base=main - - label=backport-to-v2.0.x + - label=backport-to-v3.0.x actions: backport: branches: - - release/v2.0.x - - name: backport patches to v2.1.x branch + - release/v3.0.x + - name: backport patches to v3.1.x branch conditions: - base=main - - label=backport-to-v2.1.x + - label=backport-to-v3.1.x actions: backport: branches: - - release/v2.1.x - - name: backport patches to v2.2.x branch + - release/v3.1.x + - name: backport patches to v3.2.x branch conditions: - base=main - - label=backport-to-v2.2.x + - label=backport-to-v3.2.x actions: backport: branches: - - release/v2.2.x - - name: backport patches to v3.0.x branch + - release/v3.2.x + - name: backport patches to v4.0.x branch conditions: - base=main - - label=backport-to-v3.0.x + - label=backport-to-v4.0.x actions: backport: branches: - - release/v3.0.x + - release/v4.0.x + - name: backport patches to v5.0.x branch + conditions: + - base=main + - label=backport-to-v5.0.x + actions: + backport: + branches: + - release/v5.0.x diff --git a/.github/scripts/go-imports.sh b/.github/scripts/go-imports.sh new file mode 100755 index 00000000000..bc5e6db3f86 --- /dev/null +++ b/.github/scripts/go-imports.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +formatted_files="$(docker run -v "$(pwd)":/ibc-go --rm -w "/ibc-go" --entrypoint="" cytopia/goimports goimports -l -local 'github.com/cosmos/ibc-go' /ibc-go)" + +exit_code=0 +for f in $formatted_files +do + # we don't care about formatting in pb.go files. + if [ "${f: -5}" == "pb.go" ]; then + continue + fi + exit_code=1 + echo "formatted file ${f}..." +done + +if [ "${exit_code}" == 1 ]; then + echo "not all files were correctly formated, run the following:" + echo "make goimports" +fi + +exit $exit_code diff --git a/.github/workflows/check-docs.yml b/.github/workflows/check-docs.yml index 0060623ba15..b14911092ce 100644 --- a/.github/workflows/check-docs.yml +++ b/.github/workflows/check-docs.yml @@ -3,7 +3,7 @@ name: Check docs build # This will check if the docs build successfully by running `npm run build` on: pull_request: - paths: + paths: - './docs' jobs: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 11d7c0e90bb..f9a7c4a9230 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -39,8 +39,8 @@ jobs: steps: - name: Checkout repository - - uses: actions/checkout@v3 - - uses: technote-space/get-diff-action@v6.0.1 + uses: actions/checkout@v3 + - uses: technote-space/get-diff-action@v6.1.0 with: PATTERNS: | **/**.go @@ -49,19 +49,21 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. # queries: ./path/to/local/query, your-org/your-repo/queries@main + queries: crypto-com/cosmos-sdk-codeql@main,security-and-quality if: env.GIT_DIFF # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 + if: env.GIT_DIFF # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -75,5 +77,5 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 if: env.GIT_DIFF diff --git a/.github/workflows/e2e-fork.yml b/.github/workflows/e2e-fork.yml new file mode 100644 index 00000000000..d3717d2c35a --- /dev/null +++ b/.github/workflows/e2e-fork.yml @@ -0,0 +1,50 @@ +name: Tests / E2E Fork +on: + workflow_dispatch: + pull_request: + branches: + - main + paths-ignore: + - docs/** + +jobs: + # dynamically build a matrix of test/test suite pairs to run + build-test-matrix: + if: ${{ github.event.pull_request.head.repo.fork || github.actor == 'dependabot[bot]' || github.event_name == 'workflow_dispatch' }} + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v3 + with: + go-version: 1.18 + - id: set-matrix + run: echo "::set-output name=matrix::$(go run cmd/build_test_matrix/main.go)" + + e2e: + env: + SIMD_TAG: latest + SIMD_IMAGE: ibc-go-simd-e2e + if: ${{ github.event.pull_request.head.repo.fork || github.actor == 'dependabot[bot]' || github.event_name == 'workflow_dispatch' }} + needs: + - build-test-matrix + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: ${{ fromJSON(needs.build-test-matrix.outputs.matrix) }} + steps: + - uses: actions/checkout@v3 + - name: Docker Build + run: docker build . -t "${SIMD_IMAGE}:${SIMD_TAG}" + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: 1.18 + - name: Run e2e Test + env: + # see images here https://github.com/cosmos/relayer/pkgs/container/relayer/versions + RLY_TAG: "v2.0.0-rc2" + run: | + cd e2e + make e2e-test suite=${{ matrix.suite }} test=${{ matrix.test }} diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml new file mode 100644 index 00000000000..ae4d29e7b51 --- /dev/null +++ b/.github/workflows/e2e.yaml @@ -0,0 +1,105 @@ +name: Tests / E2E +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + paths-ignore: + - docs/** + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ibc-go-simd-e2e + +jobs: + docker-build: + if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Log in to the Container registry + uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@69f6fc9d46f2f8bf0d5491e4aabe0bb8c6a4678a + with: + images: ${{ env.REGISTRY }}/cosmos/${{ env.IMAGE_NAME }} + + - name: Build and push Docker image + uses: docker/build-push-action@1cb9d22b932e4832bb29793b7777ec860fc1cde0 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + # dynamically build a matrix of test/test suite pairs to run + build-test-matrix: + if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }} + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v3 + with: + go-version: 1.18 + - id: set-matrix + run: echo "::set-output name=matrix::$(go run cmd/build_test_matrix/main.go)" + + + # the tag of the image will differ if this is a PR or the branch is being merged into main. + # we store the tag as an environment variable and use it in the E2E tests to determine the tag. + determine-image-tag: + if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }} + runs-on: ubuntu-latest + outputs: + simd-tag: ${{ steps.get-tag.outputs.simd-tag }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v3 + with: + go-version: 1.18 + - id: get-tag + run: | + tag=$(go run cmd/determine_simd_tag/main.go -pr "${{ github.event.pull_request.number }}" ) + echo "Using tag $tag" + echo "::set-output name=simd-tag::$tag" + + + e2e: + if: ${{ !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' }} + runs-on: ubuntu-latest + needs: + - build-test-matrix + - determine-image-tag + - docker-build + env: + SIMD_TAG: ${{ needs.determine-image-tag.outputs.simd-tag }} + SIMD_IMAGE: ghcr.io/cosmos/ibc-go-simd-e2e + # see images here https://github.com/cosmos/relayer/pkgs/container/relayer/versions + RLY_TAG: "v2.0.0-rc2" + strategy: + fail-fast: false + matrix: ${{ fromJSON(needs.build-test-matrix.outputs.matrix) }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v3 + with: + go-version: 1.18 + - name: Log in to the Container registry + uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Run e2e Test + run: | + cd e2e + make e2e-test suite=${{ matrix.suite }} test=${{ matrix.test }} diff --git a/.github/workflows/goimports.yaml b/.github/workflows/goimports.yaml new file mode 100644 index 00000000000..b951b17aa1d --- /dev/null +++ b/.github/workflows/goimports.yaml @@ -0,0 +1,9 @@ +name: Goimports +on: pull_request +jobs: + goimports: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: "Go Imports" + run: .github/scripts/go-imports.sh diff --git a/.github/workflows/golangci.yml b/.github/workflows/golangci.yml new file mode 100644 index 00000000000..ae9545c2df4 --- /dev/null +++ b/.github/workflows/golangci.yml @@ -0,0 +1,26 @@ +name: golangci-lint +on: + push: + tags: + - v* + branches: + - main + pull_request: +permissions: + contents: read + # Optional: allow read access to pull request. Use with `only-new-issues` option. + # pull-requests: read +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/setup-go@v3 + with: + go-version: 1.18 + - uses: actions/checkout@v3 + - name: golangci-lint + uses: golangci/golangci-lint-action@v3.2.0 + with: + version: latest + args: --timeout 5m \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 06b91b20c75..06b11e26d46 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,6 +6,10 @@ on: - 'v[0-9]+.[0-9]+.[0-9]+' # Push events to matching v*, i.e. v1.0.0, v20.15.10 - 'v[0-9]+.[0-9]+.[0-9]+-?[a-z0-9]+' # Push events to matching v*-[alpha/beta/rc], i.e. v3.0.0-alpha1, v3.0.0-beta1, v3.0.0-rc0 +env: + REGISTRY: ghcr.io + IMAGE_NAME: ibc-go-simd + jobs: goreleaser: runs-on: ubuntu-latest @@ -17,13 +21,34 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: '1.17' + go-version: '1.18' - name: Release - uses: goreleaser/goreleaser-action@v2 + uses: goreleaser/goreleaser-action@v3 if: startsWith(github.ref, 'refs/tags/') with: version: latest args: release --rm-dist env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Log in to the Container registry + uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@69f6fc9d46f2f8bf0d5491e4aabe0bb8c6a4678a + with: + images: ${{ env.REGISTRY }}/cosmos/${{ env.IMAGE_NAME }} + + - name: Build and push Docker image + uses: docker/build-push-action@1cb9d22b932e4832bb29793b7777ec860fc1cde0 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 31ef80c80f2..09add80b02b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -6,6 +6,7 @@ on: push: branches: - main + jobs: cleanup-runs: runs-on: ubuntu-latest @@ -20,12 +21,12 @@ jobs: steps: - uses: actions/setup-go@v3 with: - go-version: 1.17 + go-version: 1.18 - name: Display go version run: go version - name: install tparse run: | - export GO111MODULE="on" && go get github.com/mfridman/tparse@v0.8.3 + go install github.com/mfridman/tparse@v0.8.3 - uses: actions/cache@v3 with: path: ~/go/bin @@ -40,8 +41,8 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: - go-version: 1.17 - - uses: technote-space/get-diff-action@v6.0.1 + go-version: 1.18 + - uses: technote-space/get-diff-action@v6.1.0 id: git_diff with: PATTERNS: | @@ -88,8 +89,8 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: - go-version: 1.17 - - uses: technote-space/get-diff-action@v6.0.1 + go-version: 1.18 + - uses: technote-space/get-diff-action@v6.1.0 with: PATTERNS: | **/**.go @@ -101,7 +102,7 @@ jobs: if: env.GIT_DIFF - name: test & coverage report creation run: | - cat pkgs.txt.part.${{ matrix.part }} | xargs go test -race -mod=readonly -timeout 30m -coverprofile=${{ matrix.part }}profile.out -covermode=atomic -tags='ledger test_ledger_mock' + cat pkgs.txt.part.${{ matrix.part }} | xargs go test $(go list ./... | grep -v e2e) -race -mod=readonly -timeout 30m -coverprofile=${{ matrix.part }}profile.out -covermode=atomic -tags='ledger test_ledger_mock' if: env.GIT_DIFF - uses: actions/upload-artifact@v3 with: @@ -113,7 +114,7 @@ jobs: needs: tests steps: - uses: actions/checkout@v3 - - uses: technote-space/get-diff-action@v6.0.1 + - uses: technote-space/get-diff-action@v6.1.0 with: PATTERNS: | **/**.go diff --git a/.golangci.yml b/.golangci.yml index 34738ccf7e6..b7a6b8bbcdc 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,40 +1,35 @@ run: tests: false -# # timeout for analysis, e.g. 30s, 5m, default is 1m -# timeout: 5m + # # timeout for analysis, e.g. 30s, 5m, default is 1m + timeout: 5m linters: disable-all: true enable: - - bodyclose - deadcode - depguard - dogsled - # - errcheck + - exportloopref + - errcheck - goconst - gocritic - gofmt + - gofumpt - goimports - - golint - gosec - gosimple - govet - ineffassign - - interfacer - - maligned - misspell - nakedret - prealloc - - scopelint - staticcheck - - structcheck - stylecheck + - revive - typecheck - unconvert - unused - - unparam - misspell - # - wsl - nolintlint issues: @@ -42,12 +37,6 @@ issues: - text: "Use of weak random number generator" linters: - gosec - - text: "comment on exported var" - linters: - - golint - - text: "don't use an underscore in package name" - linters: - - golint - text: "ST1003:" linters: - stylecheck diff --git a/CHANGELOG.md b/CHANGELOG.md index 176830f33d6..a493409e68c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,25 +38,37 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Dependencies -* [\#1247](https://github.com/cosmos/ibc-go/pull/1247) Bump SDK version to v0.45.3 and Tendermint to version 0.34.19 +* [\#1615](https://github.com/cosmos/ibc-go/pull/1615) Bump SDK version to v0.45.6 +* [\#1627](https://github.com/cosmos/ibc-go/pull/1627) Bump Go version to 1.18 ### API Breaking -* (transfer) [\#1250](https://github.com/cosmos/ibc-go/pull/1250) Deprecate `GetTransferAccount` since the `transfer` module account is never used. * (06-solomachine) [\#1679](https://github.com/cosmos/ibc-go/pull/1679) Remove `types` sub-package from `06-solomachine` lightclient directory. * (07-tendermint) [\#1677](https://github.com/cosmos/ibc-go/pull/1677) Remove `types` sub-package from `07-tendermint` lightclient directory. * (06-solomachine) [\#1687](https://github.com/cosmos/ibc-go/pull/1687) Bump `06-solomachine` protobuf version from `v2` to `v3`. * (06-solomachine) [\#1687](https://github.com/cosmos/ibc-go/pull/1687) Removed `DataType` enum and associated message types from `06-solomachine`. `DataType` has been removed from `SignBytes` and `SignatureAndData` in favour of `path`. +* (core/03-connection) [\#1797](https://github.com/cosmos/ibc-go/pull/1797) Remove `PreviousConnectionID` from `NewMsgConnectionOpenTry` arguments. `MsgConnectionOpenTry.ValidateBasic()` returns error if the deprecated `PreviousConnectionID` is not empty. +* (core/04-channel) [\#1792](https://github.com/cosmos/ibc-go/pull/1792) Remove `PreviousChannelID` from `NewMsgChannelOpenTry` arguments. `MsgChannelOpenTry.ValidateBasic()` returns error if the deprecated `PreviousChannelID` is not empty. +* (core/04-channel) [\#1418](https://github.com/cosmos/ibc-go/pull/1418) `NewPacketId` has been renamed to `NewPacketID` to comply with go linting rules. +* (core/ante) [\#1418](https://github.com/cosmos/ibc-go/pull/1418) `AnteDecorator` has been renamed to `RedundancyDecorator` to comply with go linting rules and to give more clarity to the purpose of the Decorator. +* (core/ante) [\#1820](https://github.com/cosmos/ibc-go/pull/1418) `RedundancyDecorator` has been renamed to `RedundantRelayDecorator` to make the name for explicit. +* (testing) [\#1418](https://github.com/cosmos/ibc-go/pull/1418) `MockIBCApp` has been renamed to `IBCApp` and `MockEmptyAcknowledgement` has been renamed to `EmptyAcknowledgement` to comply with go linting rules +* (modules/core/03-connection) [\#1672](https://github.com/cosmos/ibc-go/pull/1672) Remove crossing hellos from connection handshakes. The `PreviousConnectionId` in `MsgConnectionOpenTry` has been deprecated. +* (modules/core/04-channel) [\#1317](https://github.com/cosmos/ibc-go/pull/1317) Remove crossing hellos from channel handshakes. The `PreviousChannelId` in `MsgChannelOpenTry` has been deprecated. +* (transfer) [\#1250](https://github.com/cosmos/ibc-go/pull/1250) Deprecate `GetTransferAccount` since the `transfer` module account is never used. +* (channel) [\#1283](https://github.com/cosmos/ibc-go/pull/1283) The `OnChanOpenInit` application callback now returns a version string in line with the latest [spec changes](https://github.com/cosmos/ibc/pull/629). +* (modules/29-fee)[\#1338](https://github.com/cosmos/ibc-go/pull/1338) Renaming `Result` field in `IncentivizedAcknowledgement` to `AppAcknowledgement`. +* (modules/29-fee)[\#1343](https://github.com/cosmos/ibc-go/pull/1343) Renaming `KeyForwardRelayerAddress` to `KeyRelayerAddressForAsyncAck`, and `ParseKeyForwardRelayerAddress` to `ParseKeyRelayerAddressForAsyncAck`. +* (apps/27-interchain-accounts)[\#1432](https://github.com/cosmos/ibc-go/pull/1432) Updating `RegisterInterchainAccount` to include an additional `version` argument, supporting ICS29 fee middleware functionality in ICS27 interchain accounts. +* (apps/27-interchain-accounts)[\#1565](https://github.com/cosmos/ibc-go/pull/1565) Removing `NewErrorAcknowledgement` in favour of `channeltypes.NewErrorAcknowledgement`. +* (transfer)[\#1565](https://github.com/cosmos/ibc-go/pull/1565) Removing `NewErrorAcknowledgement` in favour of `channeltypes.NewErrorAcknowledgement`. +* (channel)[\#1565](https://github.com/cosmos/ibc-go/pull/1565) Updating `NewErrorAcknowledgement` to accept an error instead of a string and removing the possibility of non-deterministic writes to application state. +* (core/04-channel)[\#1636](https://github.com/cosmos/ibc-go/pull/1636) Removing `SplitChannelVersion` and `MergeChannelVersions` functions since they are not used. ### State Machine Breaking ### Improvements -* (middleware) [\#1022](https://github.com/cosmos/ibc-go/pull/1022) Add `GetAppVersion` to the ICS4Wrapper interface. This function should be used by IBC applications to obtain their own version since the version set in the channel structure may be wrapped many times by middleware. -* (modules/core/04-channel) [\#1160](https://github.com/cosmos/ibc-go/pull/1160) Improve `uint64 -> string` performance in `Logger`. -* (modules/core/04-channel) [\#1232](https://github.com/cosmos/ibc-go/pull/1232) Updating params on `NewPacketId` and moving to bottom of file. -* (modules/core/04-channel) [\#1279](https://github.com/cosmos/ibc-go/pull/1279) Add selected channel version to MsgChanOpenInitResponse and MsgChanOpenTryResponse. Emit channel version during OpenInit/OpenTry -* (modules/light-clients/07-tendermint) [\#1118](https://github.com/cosmos/ibc-go/pull/1118) Deprecating `AllowUpdateAfterExpiry and AllowUpdateAfterMisbehaviour`. See ADR-026 for context. * (modules/core/02-client) [\#1188](https://github.com/cosmos/ibc-go/pull/1188/files) Routing `MsgSubmitMisbehaviour` to `UpdateClient` keeper function. Deprecating `SubmitMisbehaviour` endpoint. * (modules/core/02-client) [\#1208](https://github.com/cosmos/ibc-go/pull/1208) Replace `CheckHeaderAndUpdateState` usage in 02-client with calls to `VerifyClientMessage`, `CheckForMisbehaviour`, `UpdateStateOnMisbehaviour` and `UpdateState`. * (modules/light-clients/09-localhost) [\#1187](https://github.com/cosmos/ibc-go/pull/1187/) Removing localhost light client implementation as it is not functional. An upgrade handler is provided in `modules/migrations/v5` to prune `09-localhost` clients and consensus states from the store. @@ -68,24 +80,90 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (modules/core/02-client) [\#1195](https://github.com/cosmos/ibc-go/pull/1210) Removing `CheckHeaderAndUpdateState` from `ClientState` interface & associated light client implementations. * (modules/core/02-client) [\#1189](https://github.com/cosmos/ibc-go/pull/1212) Removing `CheckMisbehaviourAndUpdateState` from `ClientState` interface & associated light client implementations. * (modules/core/exported) [\#1206](https://github.com/cosmos/ibc-go/pull/1206) Adding new method `UpdateState` to `ClientState` interface. -* (testing) [\#1302](https://github.com/cosmos/ibc-go/pull/1302) Change testchain default behaviour to use a chainID in the revision format. Set `ChainIDSuffix` to an empty string to disable this functionality. * (modules/core/02-client) [\#1741](https://github.com/cosmos/ibc-go/pull/1741) Emitting a new `upgrade_chain` event upon setting upgrade consensus state. +* (linting) [\#1418](https://github.com/cosmos/ibc-go/pull/1418) Fix linting errors, resulting compatiblity with go1.18 linting style, golangci-lint 1.46.2 and the revivie linter. This caused breaking changes in core/04-channel, core/ante, and the testing library. +* (app/20-transfer) [\#1680](https://github.com/cosmos/ibc-go/pull/1680) Adds migration to correct any malformed trace path information of tokens with denoms that contains slashes. The transfer module consensus version has been bumped to 2. +* (app/20-transfer) [\#1730](https://github.com/cosmos/ibc-go/pull/1730) parse the ics20 denomination provided via a packet using the channel identifier format specified by ibc-go. +* (cleanup) [\#1335](https://github.com/cosmos/ibc-go/pull/1335/) `gofumpt -w -l .` to standardize the code layout more strictly than `go fmt ./...` +* (middleware) [\#1022](https://github.com/cosmos/ibc-go/pull/1022) Add `GetAppVersion` to the ICS4Wrapper interface. This function should be used by IBC applications to obtain their own version since the version set in the channel structure may be wrapped many times by middleware. +* (modules/core/04-channel) [\#1232](https://github.com/cosmos/ibc-go/pull/1232) Updating params on `NewPacketID` and moving to bottom of file. +* (modules/core/04-channel) [\#1232](https://github.com/cosmos/ibc-go/pull/1232) Updating params on `NewPacketId` and moving to bottom of file. +* (app/29-fee) [\#1305](https://github.com/cosmos/ibc-go/pull/1305) Change version string for fee module to `ics29-1` +* (app/29-fee) [\#1341](https://github.com/cosmos/ibc-go/pull/1341) Check if the fee module is locked and if the fee module is enabled before refunding all fees +* (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. +* (testing/simapp) [\#1397](https://github.com/cosmos/ibc-go/pull/1397) Adding mock module to maccperms and adding check to ensure mock module is not a blocked account address. +* (core/02-client) [\#1570](https://github.com/cosmos/ibc-go/pull/1570) Emitting an event when handling an upgrade client proposal. +* (modules/light-clients/07-tendermint) [\#1713](https://github.com/cosmos/ibc-go/pull/1713) Allow client upgrade proposals to update `TrustingPeriod`. See ADR-026 for context. +* (core/client) [\#1740](https://github.com/cosmos/ibc-go/pull/1740) Add `cosmos_proto.implements_interface` to adhere to guidelines in [Cosmos SDK ADR 019](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-019-protobuf-state-encoding.md#safe-usage-of-any) for annotating `google.protobuf.Any` types ### Features * [\#276](https://github.com/cosmos/ibc-go/pull/276) Adding the Fee Middleware module v1 -* (apps/29-fee) [\#1229](https://github.com/cosmos/ibc-go/pull/1229) Adding CLI commands for getting all unrelayed incentivized packets and packet by packet-id. -* (apps/29-fee) [\#1224](https://github.com/cosmos/ibc-go/pull/1224) Adding Query/CounterpartyAddress and CLI to ICS29 fee middleware -* (apps/29-fee) [\#1225](https://github.com/cosmos/ibc-go/pull/1225) Adding Query/FeeEnabledChannel and Query/FeeEnabledChannels with CLIs to ICS29 fee middleware. -* (modules/apps/29-fee) [\#1230](https://github.com/cosmos/ibc-go/pull/1230) Adding CLI command for getting incentivized packets for a specific channel-id. ### Bug Fixes * (light-clients/solomachine) [#1839](https://github.com/cosmos/ibc-go/issues/1839) Fixed usage of the new diversifier in validation of changing diversifiers for the solo machine. The current diversifier must sign over the new diversifier. -* (modules/core/04-channel) [\#1130](https://github.com/cosmos/ibc-go/pull/1130) Call `packet.GetSequence()` rather than passing func in `WriteAcknowledgement` log output -* (apps/29-fee) [\#1278](https://github.com/cosmos/ibc-go/pull/1278) The URI path for the query to get all incentivized packets for a specifc channel did not follow the same format as the rest of queries. * (07-tendermint) [\#1674](https://github.com/cosmos/ibc-go/pull/1674) Submitted ClientState is zeroed out before checking the proof in order to prevent the proposal from containing information governance is not actually voting on. * (modules/core/02-client)[\#1676](https://github.com/cosmos/ibc-go/pull/1676) ClientState must be zeroed out for `UpgradeProposals` to pass validation. This prevents a proposal containing information governance is not actually voting on. +* (apps/29-fee) [\#1229](https://github.com/cosmos/ibc-go/pull/1229) Adding CLI commands for getting all unrelayed incentivized packets and packet by packet-id. +* (apps/29-fee) [\#1224](https://github.com/cosmos/ibc-go/pull/1224) Adding Query/CounterpartyAddress and CLI to ICS29 fee middleware +* (apps/29-fee) [\#1225](https://github.com/cosmos/ibc-go/pull/1225) Adding Query/FeeEnabledChannel and Query/FeeEnabledChannels with CLIs to ICS29 fee middleware. +* (modules/apps/29-fee) [\#1230](https://github.com/cosmos/ibc-go/pull/1230) Adding CLI command for getting incentivized packets for a specific channel-id. + +### Bug Fixes + +* (apps/29-fee) [\#1774](https://github.com/cosmos/ibc-go/pull/1774) Change non nil relayer assertion to non empty to avoid import/export issues for genesis upgrades. +* (makefile) [\#1785](https://github.com/cosmos/ibc-go/pull/1785) Fetch the correct versions of protocol buffers dependencies from tendermint, cosmos-sdk, and ics23. +* (apps/29-fee) [\#1278](https://github.com/cosmos/ibc-go/pull/1278) The URI path for the query to get all incentivized packets for a specific channel did not follow the same format as the rest of queries. + +## [v3.1.0](https://github.com/cosmos/ibc-go/releases/tag/v3.1.0) - 2022-04-16 + +### Dependencies + +* [\#1300](https://github.com/cosmos/ibc-go/pull/1300) Bump SDK version to v0.45.4 + +### API Breaking + +### State Machine Breaking + +### Improvements + +* (transfer) [\#1342](https://github.com/cosmos/ibc-go/pull/1342) `DenomTrace` grpc now takes in either an `ibc denom` or a `hash` instead of only accepting a `hash`. +* (modules/core/04-channel) [\#1160](https://github.com/cosmos/ibc-go/pull/1160) Improve `uint64 -> string` performance in `Logger`. +* (modules/core/04-channel) [\#1279](https://github.com/cosmos/ibc-go/pull/1279) Add selected channel version to MsgChanOpenInitResponse and MsgChanOpenTryResponse. Emit channel version during OpenInit/OpenTry +* (modules/core/keeper) [\#1284](https://github.com/cosmos/ibc-go/pull/1284) Add sanity check for the keepers passed into `ibckeeper.NewKeeper`. `ibckeeper.NewKeeper` now panics if any of the keepers passed in is empty. +* (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. +* (modules/core/04-channel) [\#1464](https://github.com/cosmos/ibc-go/pull/1464) Emit a channel close event when an ordered channel is closed. +* (modules/light-clients/07-tendermint) [\#1118](https://github.com/cosmos/ibc-go/pull/1118) Deprecating `AllowUpdateAfterExpiry` and `AllowUpdateAfterMisbehaviour`. See ADR-026 for context. + +### Features + +* (modules/core/02-client) [\#1336](https://github.com/cosmos/ibc-go/pull/1336) Adding Query/ConsensusStateHeights gRPC for fetching the height of every consensus state associated with a client. +* (modules/apps/transfer) [\#1416](https://github.com/cosmos/ibc-go/pull/1416) Adding gRPC endpoint for getting an escrow account for a given port-id and channel-id. +* (modules/apps/27-interchain-accounts) [\#1512](https://github.com/cosmos/ibc-go/pull/1512) Allowing ICA modules to handle all message types with "*". + +### Bug Fixes + +* (modules/core/04-channel) [\#1130](https://github.com/cosmos/ibc-go/pull/1130) Call `packet.GetSequence()` rather than passing func in `WriteAcknowledgement` log output +* (apps/transfer) [\#1451](https://github.com/cosmos/ibc-go/pull/1451) Fixing the support for base denoms that contain slashes. + +## [v3.0.1](https://github.com/cosmos/ibc-go/releases/tag/v3.0.1) - 2022-04-16 + +### Dependencies + +* [\#1300](https://github.com/cosmos/ibc-go/pull/1300) Bump SDK version to v0.45.4 + +### Improvements + +* (transfer) [\#1342](https://github.com/cosmos/ibc-go/pull/1342) `DenomTrace` grpc now takes in either an `ibc denom` or a `hash` instead of only accepting a `hash`. +* (modules/core/04-channel) [\#1160](https://github.com/cosmos/ibc-go/pull/1160) Improve `uint64 -> string` performance in `Logger`. +* (modules/core/keeper) [\#1284](https://github.com/cosmos/ibc-go/pull/1284) Add sanity check for the keepers passed into `ibckeeper.NewKeeper`. `ibckeeper.NewKeeper` now panics if any of the keepers passed in is empty. +* (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. +* (modules/core/04-channel) [\#1464](https://github.com/cosmos/ibc-go/pull/1464) Emit a channel close event when an ordered channel is closed. + +### Bug Fixes + +* (modules/core/04-channel) [\#1130](https://github.com/cosmos/ibc-go/pull/1130) Call `packet.GetSequence()` rather than passing func in `WriteAcknowledgement` log output ## [v3.0.0](https://github.com/cosmos/ibc-go/releases/tag/v3.0.0) - 2022-03-15 @@ -99,17 +177,14 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### API Breaking * (02-client) [\#598](https://github.com/cosmos/ibc-go/pull/598) The client state and consensus state return value has been removed from `VerifyUpgradeAndUpdateState`. Light client implementations must update the client state and consensus state after verifying a valid client upgrade. -* (testing) [\#939](https://github.com/cosmos/ibc-go/pull/939) Support custom power reduction for testing. -* (modules/core/05-port) [\#1086](https://github.com/cosmos/ibc-go/pull/1086) Added `counterpartyChannelID` argument to IBCModule.OnChanOpenAck * (06-solomachine) [\#1100](https://github.com/cosmos/ibc-go/pull/1100) Remove `GetClientID` function from 06-solomachine `Misbehaviour` type. * (06-solomachine) [\#1100](https://github.com/cosmos/ibc-go/pull/1100) Deprecate `ClientId` field in 06-solomachine `Misbehaviour` type. * (07-tendermint) [\#1097](https://github.com/cosmos/ibc-go/pull/1097) Remove `GetClientID` function from 07-tendermint `Misbehaviour` type. * (07-tendermint) [\#1097](https://github.com/cosmos/ibc-go/pull/1097) Deprecate `ClientId` field in 07-tendermint `Misbehaviour` type. -* (channel( [\#848](https://github.com/cosmos/ibc-go/pull/848) Added `ChannelId` to MsgChannelOpenInitResponse -* (testing( [\#813](https://github.com/cosmos/ibc-go/pull/813) The `ack` argument to the testing function `RelayPacket` has been removed as it is no longer needed. -* (testing) [\#1003](https://github.com/cosmos/ibc-go/pull/1003) `CreateTMClientHeader` takes an additional `nextVals *tmtypes.ValidatorSet` as an argument * (testing) [\#939](https://github.com/cosmos/ibc-go/pull/939) Support custom power reduction for testing. * (modules/core/05-port) [\#1086](https://github.com/cosmos/ibc-go/pull/1086) Added `counterpartyChannelID` argument to IBCModule.OnChanOpenAck +* (channel) [\#848](https://github.com/cosmos/ibc-go/pull/848) Added `ChannelId` to MsgChannelOpenInitResponse +* (testing) [\#813](https://github.com/cosmos/ibc-go/pull/813) The `ack` argument to the testing function `RelayPacket` has been removed as it is no longer needed. * (testing) [\#774](https://github.com/cosmos/ibc-go/pull/774) Added `ChainID` arg to `SetupWithGenesisValSet` on the testing app. `Coordinator` generated ChainIDs now starts at index 1 * (transfer) [\#675](https://github.com/cosmos/ibc-go/pull/675) Transfer `NewKeeper` now takes in an ICS4Wrapper. The ICS4Wrapper may be the IBC Channel Keeper when ICS20 is not used in a middleware stack. The ICS4Wrapper is required for applications wishing to connect middleware to ICS20. * (core) [\#650](https://github.com/cosmos/ibc-go/pull/650) Modify `OnChanOpenTry` IBC application module callback to return the negotiated app version. The version passed into the `MsgChanOpenTry` has been deprecated and will be ignored by core IBC. @@ -117,11 +192,11 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (transfer) [\#517](https://github.com/cosmos/ibc-go/pull/517) Separates the ICS 26 callback functions from `AppModule` into a new type `IBCModule` for ICS 20 transfer. * (modules/core/02-client) [\#536](https://github.com/cosmos/ibc-go/pull/536) `GetSelfConsensusState` return type changed from bool to error. * (channel) [\#644](https://github.com/cosmos/ibc-go/pull/644) Removes `CounterpartyHops` function from the ChannelKeeper. -* (testing) [\#776](https://github.com/cosmos/ibc-go/pull/776) Adding helper fn to generate capability name for testing callbacks +* (modules/core/exported) [\#1107](https://github.com/cosmos/ibc-go/pull/1107) Merging the `Header` and `Misbehaviour` interfaces into a single `ClientMessage` type +* (testing) [\#776](https://github.com/cosmos/ibc-go/pull/776) Adding helper fn to generate capability name for testing callbacks * (testing) [\#892](https://github.com/cosmos/ibc-go/pull/892) IBC Mock modules store the scoped keeper and portID within the IBCMockApp. They also maintain reference to the AppModule to update the AppModule's list of IBC applications it references. Allows for the mock module to be reused as a base application in middleware stacks. * (channel) [\#882](https://github.com/cosmos/ibc-go/pull/882) The `WriteAcknowledgement` API now takes `exported.Acknowledgement` instead of a byte array * (modules/core/ante) [\#950](https://github.com/cosmos/ibc-go/pull/950) Replaces the channel keeper with the IBC keeper in the IBC `AnteDecorator` in order to execute the entire message and be able to reject redundant messages that are in the same block as the non-redundant messages. -* (modules/core/exported) [\#1107](https://github.com/cosmos/ibc-go/pull/1107) Merging the `Header` and `Misbehaviour` interfaces into a single `ClientMessage` type ### State Machine Breaking @@ -131,9 +206,6 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (client) [\#888](https://github.com/cosmos/ibc-go/pull/888) Add `GetTimestampAtHeight` to `ClientState` * (interchain-accounts) [\#1037](https://github.com/cosmos/ibc-go/pull/1037) Add a function `InitModule` to the interchain accounts `AppModule`. This function should be called within the upgrade handler when adding the interchain accounts module to a chain. It should be called in place of InitGenesis (set the consensus version in the version map). -* (testing) [\#1003](https://github.com/cosmos/ibc-go/pull/1003) Testing chain's `Signer` fields has changed from `[]tmtypes.PrivValidator` to `map[string]tmtypes.PrivValidator` to accomodate valset updates changing the order of the ValidatorSet. -* (testing) [\#1003](https://github.com/cosmos/ibc-go/pull/1003) `SignAndDeliver` will now just deliver the transaction without creating and committing a block. Thus, it requires that `BeginBlock` MUST be called before `SignAndDeliver` -* (testing) [\#1003](https://github.com/cosmos/ibc-go/pull/1003) `NextBlock` will now call `EndBlock` and `Commit` internally and apply validator updates to the `NextVals` of `TestChain` and the `NextValsHash` of the current header. Test writers can now make changes to validator set and have them reflected in the `TestChain` and handled appropriately in `UpdateClient` * (testing) [\#942](https://github.com/cosmos/ibc-go/pull/942) `NewTestChain` will create 4 validators in validator set by default. A new constructor function `NewTestChainWithValSet` is provided for test writers who want custom control over the validator set of test chains. * (testing) [\#904](https://github.com/cosmos/ibc-go/pull/904) Add `ParsePacketFromEvents` function to the testing package. Useful when sending/relaying packets via the testing package. * (testing) [\#893](https://github.com/cosmos/ibc-go/pull/893) Support custom private keys for testing. @@ -142,13 +214,15 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (channel) [\#692](https://github.com/cosmos/ibc-go/pull/692) Minimize channel logging by only emitting the packet sequence, source port/channel, destination port/channel upon packet receives, acknowledgements and timeouts. * [\#383](https://github.com/cosmos/ibc-go/pull/383) Adds helper functions for merging and splitting middleware versions from the underlying app version. * (modules/core/05-port) [\#288](https://github.com/cosmos/ibc-go/issues/288) Making the 05-port keeper function IsBound public. The IsBound function checks if the provided portID is already binded to a module. -* (channel) [\#644](https://github.com/cosmos/ibc-go/pull/644) Adds `GetChannelConnection` to the ChannelKeeper. This function returns the connectionID and connection state associated with a channel. -* (channel) [\#647](https://github.com/cosmos/ibc-go/pull/647) Reorganizes channel handshake handling to set channel state after IBC application callbacks. * (client) [\#724](https://github.com/cosmos/ibc-go/pull/724) `IsRevisionFormat` and `IsClientIDFormat` have been updated to disallow newlines before the dash used to separate the chainID and revision number, and the client type and client sequence. +* (channel) [\#644](https://github.com/cosmos/ibc-go/pull/644) Adds `GetChannelConnection` to the ChannelKeeper. This function returns the connectionID and connection state associated with a channel. +* (channel) [\647](https://github.com/cosmos/ibc-go/pull/647) Reorganizes channel handshake handling to set channel state after IBC application callbacks. +* (client) [\#724](https://github.com/cosmos/ibc-go/pull/724) `IsRevisionFormat` and `IsClientIDFormat` have been updated to disallow newlines before the dash used to separate the chainID and revision number, and the client type and client sequence. +* (interchain-accounts) [\#1466](https://github.com/cosmos/ibc-go/pull/1466) Emit event when there is an acknowledgement during `OnRecvPacket`. ### Features -* [\#432](https://github.com/cosmos/ibc-go/pull/432) Introduce `MockIBCApp` struct to the mock module. Allows the mock module to be reused to perform custom logic on each IBC App interface function. This might be useful when testing out IBC applications written as middleware. +* [\#432](https://github.com/cosmos/ibc-go/pull/432) Introduce `MockIBCApp` struct to the mock module. Allows the mock module to be reused to perform custom logic on each IBC App interface function. This might be useful when testing out IBC applications written as middleware. * [\#380](https://github.com/cosmos/ibc-go/pull/380) Adding the Interchain Accounts module v1 * [\#679](https://github.com/cosmos/ibc-go/pull/679) New CLI command `query ibc-transfer denom-hash ` to get the denom hash for a denom trace; this might be useful for debug @@ -159,12 +233,69 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (client) [\#941](https://github.com/cosmos/ibc-go/pull/941) Classify client states without consensus states as expired * (channel) [\#995](https://github.com/cosmos/ibc-go/pull/995) Call `packet.GetSequence()` rather than passing func in `AcknowledgePacket` log output +## [v2.3.0](https://github.com/cosmos/ibc-go/releases/tag/v2.3.0) - 2022-04-16 + +### Dependencies + +* [\#404](https://github.com/cosmos/ibc-go/pull/404) Bump Go version to 1.17 +* [\#1300](https://github.com/cosmos/ibc-go/pull/1300) Bump SDK version to v0.45.4 + +### Improvements + +* (transfer) [\#1342](https://github.com/cosmos/ibc-go/pull/1342) `DenomTrace` grpc now takes in either an `ibc denom` or a `hash` instead of only accepting a `hash`. +* (modules/core/04-channel) [\#1160](https://github.com/cosmos/ibc-go/pull/1160) Improve `uint64 -> string` performance in `Logger`. +* (modules/core/keeper) [\#1284](https://github.com/cosmos/ibc-go/pull/1284) Add sanity check for the keepers passed into `ibckeeper.NewKeeper`. `ibckeeper.NewKeeper` now panics if any of the keepers passed in is empty. +* (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. +* (modules/core/04-channel) [\#1464](https://github.com/cosmos/ibc-go/pull/1464) Emit a channel close event when an ordered channel is closed. +* (modules/light-clients/07-tendermint) [\#1118](https://github.com/cosmos/ibc-go/pull/1118) Deprecating `AllowUpdateAfterExpiry` and `AllowUpdateAfterMisbehaviour`. See ADR-026 for context. + +### Features + +* (modules/core/02-client) [\#1336](https://github.com/cosmos/ibc-go/pull/1336) Adding Query/ConsensusStateHeights gRPC for fetching the height of every consensus state associated with a client. +* (modules/apps/transfer) [\#1416](https://github.com/cosmos/ibc-go/pull/1416) Adding gRPC endpoint for getting an escrow account for a given port-id and channel-id. + +### Bug Fixes + +* (modules/core/04-channel) [\#1130](https://github.com/cosmos/ibc-go/pull/1130) Call `packet.GetSequence()` rather than passing func in `WriteAcknowledgement` log output +* (apps/transfer) [\#1451](https://github.com/cosmos/ibc-go/pull/1451) Fixing the support for base denoms that contain slashes. + +## [v2.2.1](https://github.com/cosmos/ibc-go/releases/tag/v2.2.1) - 2022-04-16 + +### Improvements + +* (transfer) [\#1342](https://github.com/cosmos/ibc-go/pull/1342) `DenomTrace` grpc now takes in either an `ibc denom` or a `hash` instead of only accepting a `hash`. +* (modules/core/04-channel) [\#1160](https://github.com/cosmos/ibc-go/pull/1160) Improve `uint64 -> string` performance in `Logger`. +* (modules/core/keeper) [\#1284](https://github.com/cosmos/ibc-go/pull/1284) Add sanity check for the keepers passed into `ibckeeper.NewKeeper`. `ibckeeper.NewKeeper` now panics if any of the keepers passed in is empty. +* (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. +* (modules/core/04-channel) [\#1464](https://github.com/cosmos/ibc-go/pull/1464) Emit a channel close event when an ordered channel is closed. + +### Bug Fixes + +* (modules/core/04-channel) [\#1130](https://github.com/cosmos/ibc-go/pull/1130) Call `packet.GetSequence()` rather than passing func in `WriteAcknowledgement` log output + ## [v2.2.0](https://github.com/cosmos/ibc-go/releases/tag/v2.2.0) - 2022-03-15 ### Dependencies * [\#851](https://github.com/cosmos/ibc-go/pull/851) Bump SDK version to v0.45.1 +## [v2.1.1](https://github.com/cosmos/ibc-go/releases/tag/v2.1.1) - 2022-04-16 + +### Dependencies + +* [\#1268](https://github.com/cosmos/ibc-go/pull/1268) Bump SDK version to v0.44.8 and Tendermint to version 0.34.19 + +### Improvements + +* (transfer) [\#1342](https://github.com/cosmos/ibc-go/pull/1342) `DenomTrace` grpc now takes in either an `ibc denom` or a `hash` instead of only accepting a `hash`. +* (modules/core/keeper) [\#1284](https://github.com/cosmos/ibc-go/pull/1284) Add sanity check for the keepers passed into `ibckeeper.NewKeeper`. `ibckeeper.NewKeeper` now panics if any of the keepers passed in is empty. +* (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. +* (modules/core/04-channel) [\#1464](https://github.com/cosmos/ibc-go/pull/1464) Emit a channel close event when an ordered channel is closed. + +### Bug Fixes + +* (modules/core/04-channel) [\#1130](https://github.com/cosmos/ibc-go/pull/1130) Call `packet.GetSequence()` rather than passing func in `WriteAcknowledgement` log output + ## [v2.1.0](https://github.com/cosmos/ibc-go/releases/tag/v2.1.0) - 2022-03-15 ### Dependencies @@ -186,7 +317,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (transfer) [\#978](https://github.com/cosmos/ibc-go/pull/978) Support base denoms with slashes in denom validation * (channel) [\#995](https://github.com/cosmos/ibc-go/pull/995) Call `packet.GetSequence()` rather than passing func in `AcknowledgePacket` log output -## [v2.0.3](https://github.com/cosmos/ibc-go/releases/tag/v2.0.2) - 2022-02-03 +## [v2.0.3](https://github.com/cosmos/ibc-go/releases/tag/v2.0.3) - 2022-02-03 ### Improvements @@ -227,18 +358,76 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### API Breaking * (core) [\#227](https://github.com/cosmos/ibc-go/pull/227) Remove sdk.Result from application callbacks -* (transfer) [\#350](https://github.com/cosmos/ibc-go/pull/350) Change FungibleTokenPacketData to use a string for the Amount field. This enables token transfers with amounts previously restricted by uint64. Up to the maximum uint256 value is supported. +* (transfer) [\#350](https://github.com/cosmos/ibc-go/pull/350) Change FungibleTokenPacketData to use a string for the Amount field. This enables token transfers with amounts previously restricted by uint64. Up to the maximum uint256 value is supported. ### Features * [\#384](https://github.com/cosmos/ibc-go/pull/384) Added `NegotiateAppVersion` method to `IBCModule` interface supported by a gRPC query service in `05-port`. This provides routing of requests to the desired application module callback, which in turn performs application version negotiation. +## [v1.5.0](https://github.com/cosmos/ibc-go/releases/tag/v1.5.0) - 2022-06-14 + +### Dependencies + +* [\#404](https://github.com/cosmos/ibc-go/pull/404) Bump Go version to 1.17 +* [\#1300](https://github.com/cosmos/ibc-go/pull/1300) Bump SDK version to v0.45.4 + +### Improvements + +* (transfer) [\#1342](https://github.com/cosmos/ibc-go/pull/1342) `DenomTrace` grpc now takes in either an `ibc denom` or a `hash` instead of only accepting a `hash`. +* (modules/core/04-channel) [\#1160](https://github.com/cosmos/ibc-go/pull/1160) Improve `uint64 -> string` performance in `Logger`. +* (modules/core/keeper) [\#1284](https://github.com/cosmos/ibc-go/pull/1284) Add sanity check for the keepers passed into `ibckeeper.NewKeeper`. `ibckeeper.NewKeeper` now panics if any of the keepers passed in is empty. +* (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. +* (modules/core/04-channel) [\#1464](https://github.com/cosmos/ibc-go/pull/1464) Emit a channel close event when an ordered channel is closed. +* (modules/light-clients/07-tendermint) [\#1118](https://github.com/cosmos/ibc-go/pull/1118) Deprecating `AllowUpdateAfterExpiry` and `AllowUpdateAfterMisbehaviour`. See ADR-026 for context. + +### Features + +* (modules/core/02-client) [\#1336](https://github.com/cosmos/ibc-go/pull/1336) Adding Query/ConsensusStateHeights gRPC for fetching the height of every consensus state associated with a client. +* (modules/apps/transfer) [\#1416](https://github.com/cosmos/ibc-go/pull/1416) Adding gRPC endpoint for getting an escrow account for a given port-id and channel-id. + +### Bug Fixes + +* (modules/core/04-channel) [\#1130](https://github.com/cosmos/ibc-go/pull/1130) Call `packet.GetSequence()` rather than passing func in `WriteAcknowledgement` log output +* (apps/transfer) [\#1451](https://github.com/cosmos/ibc-go/pull/1451) Fixing the support for base denoms that contain slashes. + +## [v1.4.1](https://github.com/cosmos/ibc-go/releases/tag/v1.4.1) - 2022-06-14 + +### Improvements + +* (transfer) [\#1342](https://github.com/cosmos/ibc-go/pull/1342) `DenomTrace` grpc now takes in either an `ibc denom` or a `hash` instead of only accepting a `hash`. +* (modules/core/04-channel) [\#1160](https://github.com/cosmos/ibc-go/pull/1160) Improve `uint64 -> string` performance in `Logger`. +* (modules/core/keeper) [\#1284](https://github.com/cosmos/ibc-go/pull/1284) Add sanity check for the keepers passed into `ibckeeper.NewKeeper`. `ibckeeper.NewKeeper` now panics if any of the keepers passed in is empty. +* (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. +* (modules/core/04-channel) [\#1464](https://github.com/cosmos/ibc-go/pull/1464) Emit a channel close event when an ordered channel is closed. + +### Bug Fixes + +* (modules/core/04-channel) [\#1130](https://github.com/cosmos/ibc-go/pull/1130) Call `packet.GetSequence()` rather than passing func in `WriteAcknowledgement` log output + ## [v1.4.0](https://github.com/cosmos/ibc-go/releases/tag/v1.4.0) - 2022-03-15 ### Dependencies * [\#851](https://github.com/cosmos/ibc-go/pull/851) Bump SDK version to v0.45.1 +## [v1.3.1](https://github.com/cosmos/ibc-go/releases/tag/v1.3.1) - 2022-06-14 + +### Dependencies + +* [\#1267](https://github.com/cosmos/ibc-go/pull/1267) Bump SDK version to v0.44.8 and Tendermint to version 0.34.19 + +### Improvements + +* (transfer) [\#1342](https://github.com/cosmos/ibc-go/pull/1342) `DenomTrace` grpc now takes in either an `ibc denom` or a `hash` instead of only accepting a `hash`. +* (modules/core/04-channel) [\#1160](https://github.com/cosmos/ibc-go/pull/1160) Improve `uint64 -> string` performance in `Logger`. +* (modules/core/keeper) [\#1284](https://github.com/cosmos/ibc-go/pull/1284) Add sanity check for the keepers passed into `ibckeeper.NewKeeper`. `ibckeeper.NewKeeper` now panics if any of the keepers passed in is empty. +* (transfer) [\#1414](https://github.com/cosmos/ibc-go/pull/1414) Emitting Sender address from `fungible_token_packet` events in `OnRecvPacket` and `OnAcknowledgementPacket`. +* (modules/core/04-channel) [\#1464](https://github.com/cosmos/ibc-go/pull/1464) Emit a channel close event when an ordered channel is closed. + +### Bug Fixes + +* (modules/core/04-channel) [\#1130](https://github.com/cosmos/ibc-go/pull/1130) Call `packet.GetSequence()` rather than passing func in `WriteAcknowledgement` log output + ## [v1.3.0](https://github.com/cosmos/ibc-go/releases/tag/v1.3.0) - 2022-03-15 ### Dependencies @@ -359,7 +548,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [v1.1.2](https://github.com/cosmos/ibc-go/releases/tag/v1.1.2) - 2021-10-15 * [\#485](https://github.com/cosmos/ibc-go/pull/485) Bump SDK version to v0.44.2 - + ## [v1.1.1](https://github.com/cosmos/ibc-go/releases/tag/v1.1.1) - 2021-10-04 ### Dependencies @@ -390,8 +579,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (core) [\#200](https://github.com/cosmos/ibc-go/pull/200) Fixes incorrect export of IBC identifier sequences. Previously, the next identifier sequence for clients/connections/channels was not set during genesis export. This resulted in the next identifiers being generated on the new chain to reuse old identifiers (the sequences began again from 0). * (02-client) [\#192](https://github.com/cosmos/ibc-go/pull/192) Fix IBC `query ibc client header` cli command. Support historical queries for query header/node-state commands. * (modules/light-clients/06-solomachine) [\#153](https://github.com/cosmos/ibc-go/pull/153) Fix solo machine proof height sequence mismatch bug. -* (modules/light-clients/06-solomachine) [\#122](https://github.com/cosmos/ibc-go/pull/122) Fix solo machine merkle prefix casting bug. -* (modules/light-clients/06-solomachine) [\#120](https://github.com/cosmos/ibc-go/pull/120) Fix solo machine handshake verification bug. +* (modules/light-clients/06-solomachine) [\#122](https://github.com/cosmos/ibc-go/pull/122) Fix solo machine merkle prefix casting bug. +* (modules/light-clients/06-solomachine) [\#120](https://github.com/cosmos/ibc-go/pull/120) Fix solo machine handshake verification bug. * (modules/light-clients/06-solomachine) [\#153](https://github.com/cosmos/ibc-go/pull/153) fix solo machine connection handshake failure at `ConnectionOpenAck`. ### API Breaking @@ -400,19 +589,19 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (modules) [\#206](https://github.com/cosmos/ibc-go/pull/206) Expose `relayer sdk.AccAddress` on `OnRecvPacket`, `OnAcknowledgementPacket`, `OnTimeoutPacket` module callbacks to enable incentivization. * (02-client) [\#181](https://github.com/cosmos/ibc-go/pull/181) Remove 'InitialHeight' from UpdateClient Proposal. Only copy over latest consensus state from substitute client. * (06-solomachine) [\#169](https://github.com/cosmos/ibc-go/pull/169) Change FrozenSequence to boolean in solomachine ClientState. The solo machine proto package has been bumped from `v1` to `v2`. -* (module/core/02-client) [\#165](https://github.com/cosmos/ibc-go/pull/165) Remove GetFrozenHeight from the ClientState interface. +* (module/core/02-client) [\#165](https://github.com/cosmos/ibc-go/pull/165) Remove GetFrozenHeight from the ClientState interface. * (modules) [\#166](https://github.com/cosmos/ibc-go/pull/166) Remove GetHeight from the misbehaviour interface. The `consensus_height` attribute has been removed from Misbehaviour events. -* (modules) [\#162](https://github.com/cosmos/ibc-go/pull/162) Remove deprecated Handler types in core IBC and the ICS 20 transfer module. +* (modules) [\#162](https://github.com/cosmos/ibc-go/pull/162) Remove deprecated Handler types in core IBC and the ICS 20 transfer module. * (modules/core) [\#161](https://github.com/cosmos/ibc-go/pull/161) Remove Type(), Route(), GetSignBytes() from 02-client, 03-connection, and 04-channel messages. * (modules) [\#140](https://github.com/cosmos/ibc-go/pull/140) IsFrozen() client state interface changed to Status(). gRPC `ClientStatus` route added. * (modules/core) [\#109](https://github.com/cosmos/ibc-go/pull/109) Remove connection and channel handshake CLI commands. -* (modules) [\#107](https://github.com/cosmos/ibc-go/pull/107) Modify OnRecvPacket callback to return an acknowledgement which indicates if it is successful or not. Callback state changes are discarded for unsuccessful acknowledgements only. +* (modules) [\#107](https://github.com/cosmos/ibc-go/pull/107) Modify OnRecvPacket callback to return an acknowledgement which indicates if it is successful or not. Callback state changes are discarded for unsuccessful acknowledgements only. * (modules) [\#108](https://github.com/cosmos/ibc-go/pull/108) All message constructors take the signer as a string to prevent upstream bugs. The `String()` function for an SDK Acc Address relies on external context. * (transfer) [\#275](https://github.com/cosmos/ibc-go/pull/275) Remove 'ChanCloseInit' function from transfer keeper. ICS20 does not close channels. ### State Machine Breaking -* (modules/light-clients/07-tendermint) [\#99](https://github.com/cosmos/ibc-go/pull/99) Enforce maximum chain-id length for tendermint client. +* (modules/light-clients/07-tendermint) [\#99](https://github.com/cosmos/ibc-go/pull/99) Enforce maximum chain-id length for tendermint client. * (modules/light-clients/07-tendermint) [\#141](https://github.com/cosmos/ibc-go/pull/141) Allow a new form of misbehaviour that proves counterparty chain breaks time monotonicity, automatically enforce monotonicity in UpdateClient and freeze client if monotonicity is broken. * (modules/light-clients/07-tendermint) [\#141](https://github.com/cosmos/ibc-go/pull/141) Freeze the client if there's a conflicting header submitted for an existing consensus state. * (modules/core/02-client) [\#8405](https://github.com/cosmos/cosmos-sdk/pull/8405) Refactor IBC client update governance proposals to use a substitute client to update a frozen or expired client. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000000..a193f54906e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM golang:1.18 as builder + +ENV GOPATH="" +ENV GOMODULE="on" + +COPY go.mod . +COPY go.sum . + +RUN go mod download + +ADD testing testing +ADD modules modules +ADD LICENSE LICENSE + +COPY Makefile . + +RUN make build + +FROM ubuntu:20.04 + +COPY --from=builder /go/build/simd /bin/simd + +ENTRYPOINT ["simd"] diff --git a/Makefile b/Makefile index 0ea7f0c10c5..07208812edd 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,8 @@ PACKAGES_NOSIMULATION=$(shell go list ./... | grep -v '/simulation') PACKAGES_SIMTEST=$(shell go list ./... | grep '/simulation') +CHANGED_GO_FILES := $(shell git diff --name-only | grep .go$$ | grep -v pb.go) +ALL_GO_FILES := $(shell find . -regex ".*\.go$$" | grep -v pb.go) VERSION := $(shell echo $(shell git describe --always) | sed 's/^v//') COMMIT := $(shell git log -1 --format='%H') LEDGER_ENABLED ?= true @@ -91,7 +93,7 @@ ifeq (,$(findstring nostrip,$(COSMOS_BUILD_OPTIONS))) BUILD_FLAGS += -trimpath endif -all: tools build lint test +all: build lint test # The below include contains the tools and runsim targets. #include contrib/devtools/Makefile @@ -154,7 +156,7 @@ mocks: $(MOCKS_DIR) $(MOCKS_DIR): mkdir -p $(MOCKS_DIR) -distclean: clean tools-clean +distclean: clean clean: rm -rf \ $(BUILDDIR)/ \ @@ -335,12 +337,17 @@ lint-fix: golangci-lint run --fix --out-format=tab --issues-exit-code=0 .PHONY: lint lint-fix -format: +format: goimports find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/docs/statik/statik.go" -not -path "./tests/mocks/*" -not -name '*.pb.go' | xargs gofmt -w -s find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/docs/statik/statik.go" -not -path "./tests/mocks/*" -not -name '*.pb.go' | xargs misspell -w - find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/docs/statik/statik.go" -not -path "./tests/mocks/*" -not -name '*.pb.go' | xargs goimports -w -local github.com/cosmos/cosmos-sdk .PHONY: format +goimports: + $(DOCKER) run -v $(CURDIR):/ibc-go --rm -w "/ibc-go" cytopia/goimports -w -local 'github.com/cosmos/ibc-go' "$(CHANGED_GO_FILES)" &> /dev/null || echo "No changed go files to format" + +goimports-all: + $(DOCKER) run -v $(CURDIR):/ibc-go --rm -w "/ibc-go" cytopia/goimports -w -local 'github.com/cosmos/ibc-go' "$(ALL_GO_FILES)" + ############################################################################### ### Devdoc ### ############################################################################### @@ -400,10 +407,10 @@ proto-lint: proto-check-breaking: @$(DOCKER_BUF) breaking --against $(HTTPS_GIT)#branch=main -TM_URL = https://raw.githubusercontent.com/tendermint/tendermint/v0.34.0-rc6/proto/tendermint +TM_URL = https://raw.githubusercontent.com/tendermint/tendermint/v0.34.20/proto/tendermint GOGO_PROTO_URL = https://raw.githubusercontent.com/regen-network/protobuf/cosmos -CONFIO_URL = https://raw.githubusercontent.com/confio/ics23/v0.6.3 -SDK_PROTO_URL = https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.41.0/proto/cosmos +CONFIO_URL = https://raw.githubusercontent.com/confio/ics23/v0.7.1 +SDK_PROTO_URL = https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.46.0/proto/cosmos TM_CRYPTO_TYPES = third_party/proto/tendermint/crypto TM_ABCI_TYPES = third_party/proto/tendermint/abci @@ -417,7 +424,7 @@ SDK_BASE = third_party/proto/cosmos/base/v1beta1 SDK_UPGRADE = third_party/proto/cosmos/upgrade GOGO_PROTO_TYPES = third_party/proto/gogoproto -CONFIO_TYPES = third_party/proto/confio +CONFIO_TYPES = third_party/proto proto-update-deps: @mkdir -p $(GOGO_PROTO_TYPES) @@ -455,7 +462,7 @@ proto-update-deps: ## insert go package option into proofs.proto file ## Issue link: https://github.com/confio/ics23/issues/32 - @sed -i '4ioption go_package = "github.com/confio/ics23/go";' $(CONFIO_TYPES)/proofs.proto + @perl -lp -i -e 'print q(option go_package = "github.com/confio/ics23/go";) if $$. == 4' $(CONFIO_TYPES)/proofs.proto .PHONY: proto-all proto-gen proto-gen-any proto-swagger-gen proto-format proto-lint proto-check-breaking proto-update-deps diff --git a/RELEASES.md b/RELEASES.md index c92cc13aed0..acc69009b95 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -23,13 +23,13 @@ We ensure all major releases are supported by relayers ([hermes](https://github. ## Release cycle -IBC-Go follows a traditional release cycle involving an alpha, beta, and rc (release candidate) releases before finalizing a new version. As ibc-go works in a non-traditional area, we apply our own interpretation to each release type. We reserve the right to make both go API breaking changes and state machine breaking changes throughout the entire release cycle. The stable release guarentees do not go into affect until a final release is performed. +IBC-Go follows a traditional release cycle involving an alpha, beta, and rc (release candidate) releases before finalizing a new version. As ibc-go works in a non-traditional area, we apply our own interpretation to each release type. We reserve the right to make both go API breaking changes and state machine breaking changes throughout the entire release cycle. The stable release guarantees do not go into affect until a final release is performed. It is never advisable to use a non-final release in production. ### Alpha -Alpha releases are intended to make available new features as soon as they are functional. No correctness guarentees are made and alpha releases **may** contain serious security vulnerabilities, bugs, and lack of user tooling, so long as they don't affect the core functionality. +Alpha releases are intended to make available new features as soon as they are functional. No correctness guarantees are made and alpha releases **may** contain serious security vulnerabilities, bugs, and lack of user tooling, so long as they don't affect the core functionality. Initial users of alpha releases are expected to be advanced, patient, and capable of handling unusual errors. Very basic integration testing will be performed by the ibc-go development team before alpha releases. @@ -64,12 +64,15 @@ For example, if the current major release series is v1 and was released on Janua Only the following major release series have a stable release status: |Release|End of Life Date| -|-------|-------| +|-------|----------------| |`v1.3.x`|July 01, 2022| |`v1.4.x`|July 01, 2022| +|`v1.5.x`|July 01, 2022| |`v2.1.x`|February 01, 2023| |`v2.2.x`|February 01, 2023| +|`v2.3.x`|February 01, 2023| |`v3.0.x`|March 15, 2023| +|`v3.1.x`|March 15, 2023| **Note**: The v1 major release series will reach end of life 6 months after merging this policy. v2 will reach end of life one year after merging this policy. @@ -94,6 +97,26 @@ As rule of thumb, the following changes will **NOT** be automatically accepted i * **API-breaking changes**, i.e. changes that prevent client applications to *build without modifications* to the client application's source code. * **CLI-breaking changes**, i.e. changes that require usage changes for CLI users. +## Version matrix + +Versions of Golang, Cosmos SDK and Tendermint used by ibc-go in the currently active releases: + +| Go | ibc-go | Cosmos SDK | Tendermint | +|----|--------|------------|------------| +| 1.15 | v2.1.0 | v0.44.6 | v0.34.14 | +| 1.15 | v2.1.1 | v0.44.8 | v0.34.19 | +| 1.15 | v2.1.2 | v0.44.8 | v0.34.19 | +| 1.15 | v2.2.0 | v0.45.1 | v0.34.14 | +| 1.15 | v2.2.1 | v0.45.1 | v0.34.14 | +| 1.15 | v2.2.2 | v0.45.1 | v0.34.14 | +| 1.17 | v2.3.0 | v0.45.4 | v0.34.19 | +| 1.17 | v2.3.1 | v0.45.5 | v0.34.19 | +| 1.17 | v3.0.0 | v0.45.1 | v0.34.14 | +| 1.17 | v3.0.1 | v0.45.4 | v0.34.19 | +| 1.17 | v3.0.2 | v0.45.4 | v0.34.19 | +| 1.17 | v3.1.0 | v0.45.4 | v0.34.19 | +| 1.17 | v3.1.1 | v0.45.5 | v0.34.19 | + ## Graphics The decision tree above was generated with the following code: diff --git a/cmd/build_test_matrix/main.go b/cmd/build_test_matrix/main.go new file mode 100644 index 00000000000..9841e6e9035 --- /dev/null +++ b/cmd/build_test_matrix/main.go @@ -0,0 +1,133 @@ +package main + +import ( + "encoding/json" + "fmt" + "go/ast" + "go/parser" + "go/token" + "io/fs" + "os" + "path/filepath" + "strings" +) + +const ( + testNamePrefix = "Test" + testFileNameSuffix = "_test.go" + e2eTestDirectory = "e2e" +) + +// GithubActionTestMatrix represents +type GithubActionTestMatrix struct { + Include []TestSuitePair `json:"include"` +} + +type TestSuitePair struct { + Test string `json:"test"` + Suite string `json:"suite"` +} + +func main() { + githubActionMatrix, err := getGithubActionMatrixForTests(e2eTestDirectory) + if err != nil { + fmt.Printf("error generating github action json: %s", err) + os.Exit(1) + } + + ghBytes, err := json.Marshal(githubActionMatrix) + if err != nil { + fmt.Printf("error marshalling github action json: %s", err) + os.Exit(1) + } + fmt.Println(string(ghBytes)) +} + +// getGithubActionMatrixForTests returns a json string representing the contents that should go in the matrix +// field in a github action workflow. This string can be used with `fromJSON(str)` to dynamically build +// the workflow matrix to include all E2E tests under the e2eRootDirectory directory. +func getGithubActionMatrixForTests(e2eRootDirectory string) (GithubActionTestMatrix, error) { + testSuiteMapping := map[string][]string{} + fset := token.NewFileSet() + err := filepath.Walk(e2eRootDirectory, func(path string, info fs.FileInfo, err error) error { + if err != nil { + return fmt.Errorf("error walking e2e directory: %s", err) + } + + // only look at test files + if !strings.HasSuffix(path, testFileNameSuffix) { + return nil + } + + f, err := parser.ParseFile(fset, path, nil, 0) + if err != nil { + return fmt.Errorf("failed parsing file: %s", err) + } + + suiteNameForFile, testCases, err := extractSuiteAndTestNames(f) + if err != nil { + return fmt.Errorf("failed extracting test suite name and test cases: %s", err) + } + + testSuiteMapping[suiteNameForFile] = testCases + + return nil + }) + if err != nil { + return GithubActionTestMatrix{}, err + } + + gh := GithubActionTestMatrix{ + Include: []TestSuitePair{}, + } + + for testSuiteName, testCases := range testSuiteMapping { + for _, testCaseName := range testCases { + gh.Include = append(gh.Include, TestSuitePair{ + Test: testCaseName, + Suite: testSuiteName, + }) + } + } + + return gh, nil +} + +// extractSuiteAndTestNames extracts the name of the test suite function as well +// as all tests associated with it in the same file. +func extractSuiteAndTestNames(file *ast.File) (string, []string, error) { + var suiteNameForFile string + var testCases []string + + for _, d := range file.Decls { + if f, ok := d.(*ast.FuncDecl); ok { + functionName := f.Name.Name + if isTestSuiteMethod(f) { + if suiteNameForFile != "" { + return "", nil, fmt.Errorf("found a second test function: %s when %s was already found", f.Name.Name, suiteNameForFile) + } + suiteNameForFile = functionName + continue + } + if isTestFunction(f) { + testCases = append(testCases, functionName) + } + } + } + if suiteNameForFile == "" { + return "", nil, fmt.Errorf("file %s had no test suite test case", file.Name.Name) + } + return suiteNameForFile, testCases, nil +} + +// isTestSuiteMethod returns true if the function is a test suite function. +// e.g. func TestFeeMiddlewareTestSuite(t *testing.T) { ... } +func isTestSuiteMethod(f *ast.FuncDecl) bool { + return strings.HasPrefix(f.Name.Name, testNamePrefix) && len(f.Type.Params.List) == 1 +} + +// isTestFunction returns true if the function name starts with "Test" and has no parameters. +// as test suite functions do not accept a *testing.T. +func isTestFunction(f *ast.FuncDecl) bool { + return strings.HasPrefix(f.Name.Name, testNamePrefix) && len(f.Type.Params.List) == 0 +} diff --git a/cmd/build_test_matrix/main_test.go b/cmd/build_test_matrix/main_test.go new file mode 100644 index 00000000000..8dd75b4e4c1 --- /dev/null +++ b/cmd/build_test_matrix/main_test.go @@ -0,0 +1,161 @@ +package main + +import ( + "os" + "path" + "sort" + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +const ( + nonTestFile = "not_test_file.go" + goTestFileNameOne = "first_go_file_test.go" + goTestFileNameTwo = "second_go_file_test.go" +) + +func TestGetGithubActionMatrixForTests(t *testing.T) { + t.Run("empty dir does not fail", func(t *testing.T) { + testingDir := t.TempDir() + _, err := getGithubActionMatrixForTests(testingDir) + assert.NoError(t, err) + }) + + t.Run("only test functions are picked up", func(t *testing.T) { + testingDir := t.TempDir() + createFileWithTestSuiteAndTests(t, "FeeMiddlewareTestSuite", "TestA", "TestB", testingDir, goTestFileNameOne) + + gh, err := getGithubActionMatrixForTests(testingDir) + assert.NoError(t, err) + + expected := GithubActionTestMatrix{ + Include: []TestSuitePair{ + { + Suite: "TestFeeMiddlewareTestSuite", + Test: "TestA", + }, + { + Suite: "TestFeeMiddlewareTestSuite", + Test: "TestB", + }, + }, + } + assertGithubActionTestMatricesEqual(t, expected, gh) + }) + + t.Run("all files are picked up", func(t *testing.T) { + testingDir := t.TempDir() + createFileWithTestSuiteAndTests(t, "FeeMiddlewareTestSuite", "TestA", "TestB", testingDir, goTestFileNameOne) + createFileWithTestSuiteAndTests(t, "TransferTestSuite", "TestC", "TestD", testingDir, goTestFileNameTwo) + + gh, err := getGithubActionMatrixForTests(testingDir) + assert.NoError(t, err) + + expected := GithubActionTestMatrix{ + Include: []TestSuitePair{ + { + Suite: "TestTransferTestSuite", + Test: "TestC", + }, + { + Suite: "TestFeeMiddlewareTestSuite", + Test: "TestA", + }, + { + Suite: "TestFeeMiddlewareTestSuite", + Test: "TestB", + }, + { + Suite: "TestTransferTestSuite", + Test: "TestD", + }, + }, + } + + assertGithubActionTestMatricesEqual(t, expected, gh) + }) + + t.Run("non test files are not picked up", func(t *testing.T) { + testingDir := t.TempDir() + createFileWithTestSuiteAndTests(t, "FeeMiddlewareTestSuite", "TestA", "TestB", testingDir, nonTestFile) + + gh, err := getGithubActionMatrixForTests(testingDir) + assert.NoError(t, err) + assert.Empty(t, gh.Include) + }) + + t.Run("fails when there are multiple suite runs", func(t *testing.T) { + testingDir := t.TempDir() + createFileWithTestSuiteAndTests(t, "FeeMiddlewareTestSuite", "TestA", "TestB", testingDir, nonTestFile) + + fileWithTwoSuites := `package foo +func SuiteOne(t *testing.T) { + suite.Run(t, new(FeeMiddlewareTestSuite)) +} + +func SuiteTwo(t *testing.T) { + suite.Run(t, new(FeeMiddlewareTestSuite)) +} + +type FeeMiddlewareTestSuite struct {} +` + + err := os.WriteFile(path.Join(testingDir, goTestFileNameOne), []byte(fileWithTwoSuites), os.FileMode(777)) + assert.NoError(t, err) + + _, err = getGithubActionMatrixForTests(testingDir) + assert.Error(t, err) + }) +} + +func assertGithubActionTestMatricesEqual(t *testing.T, expected, actual GithubActionTestMatrix) { + // sort by both suite and test as the order of the end result does not matter as + // all tests will be run. + sort.SliceStable(expected.Include, func(i, j int) bool { + memberI := expected.Include[i] + memberJ := expected.Include[j] + if memberI.Suite == memberJ.Suite { + return memberI.Test < memberJ.Test + } + return memberI.Suite < memberJ.Suite + }) + + sort.SliceStable(actual.Include, func(i, j int) bool { + memberI := actual.Include[i] + memberJ := actual.Include[j] + if memberI.Suite == memberJ.Suite { + return memberI.Test < memberJ.Test + } + return memberI.Suite < memberJ.Suite + }) + assert.Equal(t, expected.Include, actual.Include) +} + +func goTestFileContents(suiteName, fnName1, fnName2 string) string { + replacedSuiteName := strings.ReplaceAll(`package foo + +func TestSuiteName(t *testing.T) { + suite.Run(t, new(SuiteName)) +} + +type SuiteName struct {} + +func (s *SuiteName) fnName1() {} +func (s *SuiteName) fnName2() {} + +func (s *SuiteName) suiteHelper() {} + +func helper() {} +`, "SuiteName", suiteName) + + replacedFn1Name := strings.ReplaceAll(replacedSuiteName, "fnName1", fnName1) + return strings.ReplaceAll(replacedFn1Name, "fnName2", fnName2) +} + +func createFileWithTestSuiteAndTests(t *testing.T, suiteName, fn1Name, fn2Name, dir, filename string) { + goFileContents := goTestFileContents(suiteName, fn1Name, fn2Name) + err := os.WriteFile(path.Join(dir, filename), []byte(goFileContents), os.FileMode(777)) + assert.NoError(t, err) +} diff --git a/cmd/determine_simd_tag/main.go b/cmd/determine_simd_tag/main.go new file mode 100644 index 00000000000..e7b5d718194 --- /dev/null +++ b/cmd/determine_simd_tag/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "flag" + "fmt" +) + +var prNum string + +func init() { + flag.StringVar(&prNum, "pr", "", "the number of the pr") + flag.Parse() +} + +// in the context of a GithubAction workflow, the PR is non empty if it is a pr. When +// code is merged to main, it will be empty. In this case we just use the "main" tag. +func main() { + fmt.Print(getSimdTag(prNum)) +} + +func getSimdTag(prNum string) string { + if prNum == "" { + return "main" + } + return fmt.Sprintf("pr-%s", prNum) +} diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index bdd58cd8d72..f459a997da6 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -3,23 +3,53 @@ module.exports = { title: "IBC-Go", locales: { "/": { - lang: "en-US" + lang: "en-US", }, }, base: process.env.VUEPRESS_BASE || "/", head: [ - ['link', { rel: "apple-touch-icon", sizes: "180x180", href: "/apple-touch-icon.png" }], - ['link', { rel: "icon", type: "image/png", sizes: "32x32", href: "/favicon-32x32.png" }], - ['link', { rel: "icon", type: "image/png", sizes: "16x16", href: "/favicon-16x16.png" }], - ['link', { rel: "manifest", href: "/site.webmanifest" }], - ['meta', { name: "msapplication-TileColor", content: "#2e3148" }], - ['meta', { name: "theme-color", content: "#ffffff" }], - ['link', { rel: "icon", type: "image/svg+xml", href: "/favicon-svg.svg" }], - ['link', { rel: "apple-touch-icon-precomposed", href: "/apple-touch-icon-precomposed.png" }], + [ + "link", + { + rel: "apple-touch-icon", + sizes: "180x180", + href: "/apple-touch-icon.png", + }, + ], + [ + "link", + { + rel: "icon", + type: "image/png", + sizes: "32x32", + href: "/favicon-32x32.png", + }, + ], + [ + "link", + { + rel: "icon", + type: "image/png", + sizes: "16x16", + href: "/favicon-16x16.png", + }, + ], + ["link", { rel: "manifest", href: "/site.webmanifest" }], + ["meta", { name: "msapplication-TileColor", content: "#2e3148" }], + ["meta", { name: "theme-color", content: "#ffffff" }], + ["link", { rel: "icon", type: "image/svg+xml", href: "/favicon-svg.svg" }], + [ + "link", + { + rel: "apple-touch-icon-precomposed", + href: "/apple-touch-icon-precomposed.png", + }, + ], ], themeConfig: { repo: "cosmos/ibc-go", docsRepo: "cosmos/ibc-go", + docsBranch: "main", docsDir: "docs", editLinks: true, label: "ibc", @@ -31,97 +61,109 @@ module.exports = { //}, versions: [ { - "label": "main", - "key": "main" + label: "main", + key: "main", }, { - "label": "v1.1.0", - "key": "v1.1.0" + label: "v1.1.0", + key: "v1.1.0", }, { - "label": "v1.2.0", - "key": "v1.2.0" + label: "v1.2.0", + key: "v1.2.0", }, { - "label": "v1.3.0", - "key": "v1.3.0" + label: "v1.3.0", + key: "v1.3.0", }, { - "label": "v1.4.0", - "key": "v1.4.0" + label: "v1.5.0", + key: "v1.5.0", }, { - "label": "v2.0.0", - "key": "v2.0.0" - } , + label: "v1.4.0", + key: "v1.4.0", + }, { - "label": "v2.1.0", - "key": "v2.1.0" - }, - { - "label": "v2.2.0", - "key": "v2.2.0" + label: "v2.0.0", + key: "v2.0.0", }, { - "label": "v3.0.0", - "key": "v3.0.0" - } + label: "v2.1.0", + key: "v2.1.0", + }, + { + label: "v2.2.0", + key: "v2.2.0", + }, + { + label: "v2.3.0", + key: "v2.3.0", + }, + { + label: "v3.0.0", + key: "v3.0.0", + }, + { + label: "v3.1.0", + key: "v3.1.0", + }, ], topbar: { - banner: true + banner: true, }, - sidebar: { + sidebar: { auto: false, nav: [ - { + { title: "Using IBC-Go", children: [ { title: "Overview", directory: false, - path: "/ibc/overview.html" - }, + path: "/ibc/overview.html", + }, { title: "Integration", directory: false, - path: "/ibc/integration.html" + path: "/ibc/integration.html", }, { title: "Applications", - directory: false, - path: "/ibc/apps.html" + directory: true, + path: "/ibc/apps", }, { title: "Middleware", directory: true, - path: "/ibc/middleware" + path: "/ibc/middleware", }, { title: "Upgrades", directory: true, - path: "/ibc/upgrades" + path: "/ibc/upgrades", }, { title: "Governance Proposals", directory: false, - path: "/ibc/proposals.html" + path: "/ibc/proposals.html", }, { title: "Relayer", directory: false, - path: "/ibc/relayer.html" + path: "/ibc/relayer.html", }, { title: "Protobuf Documentation", directory: false, - path: "/ibc/proto-docs.html" + path: "/ibc/proto-docs.html", }, { title: "Roadmap", directory: false, - path: "/roadmap/roadmap.html" + path: "/roadmap/roadmap.html", }, - ] + ], }, { title: "IBC Application Modules", @@ -132,69 +174,164 @@ module.exports = { path: "/apps", children: [ { - title: "Overview", - directory: false, - path: "/apps/interchain-accounts/overview.html" - }, + title: "Overview", + directory: false, + path: "/apps/interchain-accounts/overview.html", + }, { title: "Authentication Modules", directory: false, - path: "/apps/interchain-accounts/auth-modules.html" + path: "/apps/interchain-accounts/auth-modules.html", }, { title: "Active Channels", directory: false, - path: "/apps/interchain-accounts/active-channels.html" + path: "/apps/interchain-accounts/active-channels.html", }, { - title: "Integration", - directory: false, - path: "/apps/interchain-accounts/integration.html" + title: "Integration", + directory: false, + path: "/apps/interchain-accounts/integration.html", }, { title: "Parameters", directory: false, - path: "/apps/interchain-accounts/parameters.html" + path: "/apps/interchain-accounts/parameters.html", }, { title: "Transactions", directory: false, - path: "/apps/interchain-accounts/transactions.html" + path: "/apps/interchain-accounts/transactions.html", + }, + ], + }, + { + title: "Transfer", + directory: true, + path: "/apps", + children: [ + { + title: "Overview", + directory: false, + path: "/apps/transfer/overview.html", + }, + { + title: "State", + directory: false, + path: "/apps/transfer/state.html", + }, + { + title: "State Transitions", + directory: false, + path: "/apps/transfer/state-transitions.html", + }, + { + title: "Messages", + directory: false, + path: "/apps/transfer/messages.html", + }, + { + title: "Events", + directory: false, + path: "/apps/transfer/events.html", + }, + { + title: "Metrics", + directory: false, + path: "/apps/transfer/metrics.html", + }, + { + title: "Params", + directory: false, + path: "/apps/transfer/params.html", + }, + ], + }, + ], + }, + { + title: "IBC Middleware Modules", + children: [ + { + title: "Fee Middleware", + directory: true, + path: "/middleware", + children: [ + { + title: "Overview", + directory: false, + path: "/middleware/ics29-fee/overview.html", + }, + { + title: "Integration", + directory: false, + path: "/middleware/ics29-fee/integration.html", + }, + { + title: "Fee Messages", + directory: false, + path: "/middleware/ics29-fee/msgs.html", + }, + { + title: "Fee Distribution", + directory: false, + path: "/middleware/ics29-fee/fee-distribution.html", }, - ] + { + title: "Events", + directory: false, + path: "/middleware/ics29-fee/events.html", + }, + { + title: "End Users", + directory: false, + path: "/middleware/ics29-fee/end-users.html", + }, + ], }, - ] + ], }, { title: "Migrations", children: [ + { + title: + "Support transfer of coins whose base denom contains slashes", + directory: false, + path: "/migrations/support-denoms-with-slashes.html", + }, { title: "SDK v0.43 to IBC-Go v1", directory: false, - path: "/migrations/sdk-to-v1.html" + path: "/migrations/sdk-to-v1.html", }, { title: "IBC-Go v1 to v2", directory: false, - path: "/migrations/v1-to-v2.html" + path: "/migrations/v1-to-v2.html", }, { title: "IBC-Go v2 to v3", directory: false, - path: "/migrations/v2-to-v3.html" + path: "/migrations/v2-to-v3.html", + }, + { + title: "IBC-Go v3 to v4", + directory: false, + path: "/migrations/v3-to-v4.html", }, - ] + ], }, { title: "Resources", children: [ { title: "IBC Specification", - path: "https://github.com/cosmos/ibc" + path: "https://github.com/cosmos/ibc", }, - ] - } - ] + ], + }, + ], }, gutter: { title: "Help & Support", @@ -203,46 +340,46 @@ module.exports = { title: "Discord", text: "Chat with IBC developers on Discord.", url: "https://discordapp.com/channels/669268347736686612", - bg: "linear-gradient(225.11deg, #2E3148 0%, #161931 95.68%)" + bg: "linear-gradient(225.11deg, #2E3148 0%, #161931 95.68%)", }, github: { title: "Found an Issue?", - text: "Help us improve this page by suggesting edits on GitHub." - } + text: "Help us improve this page by suggesting edits on GitHub.", + }, }, footer: { question: { - text: "Chat with IBC developers in Discord." + text: "Chat with IBC developers in Discord.", }, textLink: { text: "ibcprotocol.org", - url: "https://ibcprotocol.org" + url: "https://ibcprotocol.org", }, services: [ { service: "medium", - url: "https://blog.cosmos.network/" + url: "https://blog.cosmos.network/", }, { service: "twitter", - url: "https://twitter.com/cosmos" + url: "https://twitter.com/cosmos", }, { service: "linkedin", - url: "https://www.linkedin.com/company/interchain-gmbh" + url: "https://www.linkedin.com/company/interchain-gmbh", }, { service: "reddit", - url: "https://reddit.com/r/cosmosnetwork" + url: "https://reddit.com/r/cosmosnetwork", }, { service: "telegram", - url: "https://t.me/cosmosproject" + url: "https://t.me/cosmosproject", }, { service: "youtube", - url: "https://www.youtube.com/c/CosmosProject" - } + url: "https://www.youtube.com/c/CosmosProject", + }, ], smallprint: "The development of IBC-Go is led primarily by [Interchain GmbH](https://interchain.berlin/). Funding for this development comes primarily from the Interchain Foundation, a Swiss non-profit.", @@ -252,64 +389,63 @@ module.exports = { children: [ { title: "Cosmos SDK", - url: "https://docs.cosmos.network" + url: "https://docs.cosmos.network", }, { title: "Cosmos Hub", - url: "https://hub.cosmos.network" + url: "https://hub.cosmos.network", }, { title: "Tendermint Core", - url: "https://docs.tendermint.com" - } - ] + url: "https://docs.tendermint.com", + }, + ], }, { title: "Community", children: [ { title: "Cosmos blog", - url: "https://blog.cosmos.network" + url: "https://blog.cosmos.network", }, { title: "Forum", - url: "https://forum.cosmos.network" + url: "https://forum.cosmos.network", }, { title: "Chat", - url: "https://discord.gg/W8trcGV" - } - ] + url: "https://discord.gg/W8trcGV", + }, + ], }, { title: "Contributing", children: [ { title: "Contributing to the docs", - url: - "https://github.com/cosmos/ibc-go/blob/main/docs/DOCS_README.md" + url: "https://github.com/cosmos/ibc-go/blob/main/docs/DOCS_README.md", }, { title: "Source code on GitHub", - url: "https://github.com/cosmos/ibc-go/" - } - ] - } - ] - } + url: "https://github.com/cosmos/ibc-go/", + }, + ], + }, + ], + }, }, plugins: [ [ "@vuepress/google-analytics", { - ga: "UA-51029217-2" - } + ga: "UA-51029217-2", + }, ], [ "sitemap", { - hostname: "https://ibc.cosmos.network" - } - ] - ] + hostname: "https://ibc.cosmos.network", + }, + ], + ], }; diff --git a/docs/apps/interchain-accounts/active-channels.md b/docs/apps/interchain-accounts/active-channels.md index c574ea87d85..d387bdea038 100644 --- a/docs/apps/interchain-accounts/active-channels.md +++ b/docs/apps/interchain-accounts/active-channels.md @@ -12,11 +12,11 @@ channel type that provides ordering of packets without the channel closing on ti When an Interchain Account is registered using the `RegisterInterchainAccount` API, a new channel is created on a particular port. During the `OnChanOpenAck` and `OnChanOpenConfirm` steps (controller & host chain) the `Active Channel` for this interchain account is stored in state. -It is possible to create a new channel using the same controller chain portID if the previously set `Active Channel` is now in a `CLOSED` state. This channel creation can be initialized programatically by sending a new `OnChanOpenInit` message like so: +It is possible to create a new channel using the same controller chain portID if the previously set `Active Channel` is now in a `CLOSED` state. This channel creation can be initialized programatically by sending a new `MsgChannelOpenInit` message like so: ```go - msg := channeltypes.NewMsgChannelOpenInit(portID, string(versionBytes), channeltypes.ORDERED, []string{connectionID}, icatypes.PortID, icatypes.ModuleName) - handler := k.msgRouter.Handler(msg) +msg := channeltypes.NewMsgChannelOpenInit(portID, string(versionBytes), channeltypes.ORDERED, []string{connectionID}, icatypes.PortID, icatypes.ModuleName) +handler := k.msgRouter.Handler(msg) ``` Alternatively, any relayer operator may initiate a new channel handshake for this interchain account once the previously set `Active Channel` is in a `CLOSED` state. This is done by initiating the channel handshake on the controller chain using the same portID associated with the interchain account in question. diff --git a/docs/apps/interchain-accounts/auth-modules.md b/docs/apps/interchain-accounts/auth-modules.md index 0e8738f50c0..ec4c58bf46c 100644 --- a/docs/apps/interchain-accounts/auth-modules.md +++ b/docs/apps/interchain-accounts/auth-modules.md @@ -38,15 +38,15 @@ func (im IBCModule) OnChanOpenInit( chanCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, version string, -) error { +) (string, error) { // the authentication module *must* claim the channel capability on OnChanOpenInit if err := im.keeper.ClaimCapability(ctx, chanCap, host.ChannelCapabilityPath(portID, channelID)); err != nil { - return err + return version, err } // perform custom logic - return nil + return version, nil } // OnChanOpenAck implements the IBCModule interface @@ -150,13 +150,67 @@ func (im IBCModule) OnRecvPacket( The authentication module can begin registering interchain accounts by calling `RegisterInterchainAccount`: ```go -if err := keeper.icaControllerKeeper.RegisterInterchainAccount(ctx, connectionID, owner.String()); err != nil { +if err := keeper.icaControllerKeeper.RegisterInterchainAccount(ctx, connectionID, owner.String(), version); err != nil { return err } return nil ``` +The `version` argument is used to support ICS29 fee middleware for relayer incentivization of ICS27 packets. Consumers of the `RegisterInterchainAccount` are expected to build the appropriate JSON encoded version string themselves and pass it accordingly. If an empty string is passed in the `version` argument, then the version will be initialized to a default value in the `OnChanOpenInit` callback of the controller's handler, so that channel handshake can proceed. + +The following code snippet illustrates how to construct an appropriate interchain accounts `Metadata` and encode it as a JSON bytestring: + +```go +icaMetadata := icatypes.Metadata{ + Version: icatypes.Version, + ControllerConnectionId: controllerConnectionID, + HostConnectionId: hostConnectionID, + Encoding: icatypes.EncodingProtobuf, + TxType: icatypes.TxTypeSDKMultiMsg, +} + +appVersion, err := icatypes.ModuleCdc.MarshalJSON(&icaMetadata) +if err != nil { + return err +} + +if err := keeper.icaControllerKeeper.RegisterInterchainAccount(ctx, controllerConnectionID, owner.String(), string(appVersion)); err != nil { + return err +} +``` + +Similarly, if the application stack is configured to route through ICS29 fee middleware and a fee enabled channel is desired, construct the appropriate ICS29 `Metadata` type: + +```go +icaMetadata := icatypes.Metadata{ + Version: icatypes.Version, + ControllerConnectionId: controllerConnectionID, + HostConnectionId: hostConnectionID, + Encoding: icatypes.EncodingProtobuf, + TxType: icatypes.TxTypeSDKMultiMsg, +} + +appVersion, err := icatypes.ModuleCdc.MarshalJSON(&icaMetadata) +if err != nil { + return err +} + +feeMetadata := feetypes.Metadata{ + AppVersion: string(appVersion), + FeeVersion: feetypes.Version, +} + +feeEnabledVersion, err := feetypes.ModuleCdc.MarshalJSON(&feeMetadata) +if err != nil { + return err +} + +if err := keeper.icaControllerKeeper.RegisterInterchainAccount(ctx, controllerConnectionID, owner.String(), string(feeEnabledVersion)); err != nil { + return err +} +``` + ## `SendTx` The authentication module can attempt to send a packet by calling `SendTx`: @@ -231,8 +285,8 @@ if err := proto.Unmarshal(ack.GetResult(), txMsgData); err != nil { } ``` -If the txMsgData.Data field is non nil, the host chain is using SDK version <= v0.45. -The auth module should interpret the txMsgData.Data as follows: +If the `txMsgData.Data` field is non nil, the host chain is using SDK version <= v0.45. +The auth module should interpret the `txMsgData.Data` as follows: ```go switch len(txMsgData.Data) { @@ -283,8 +337,8 @@ default: } ``` -If the txMsgData.Data is empty, the host chain is using SDK version > v0.45. -The auth module should interpret the txMsgData.Responses as follows: +If the `txMsgData.Data` is empty, the host chain is using SDK version > v0.45. +The auth module should interpret the `txMsgData.Responses` as follows: ```go ... diff --git a/docs/apps/interchain-accounts/parameters.md b/docs/apps/interchain-accounts/parameters.md index f4ddcbc1160..8f985b9293e 100644 --- a/docs/apps/interchain-accounts/parameters.md +++ b/docs/apps/interchain-accounts/parameters.md @@ -47,4 +47,12 @@ For example, a Cosmos SDK based chain that elects to provide hosted Interchain A "host_enabled": true, "allow_messages": ["/cosmos.staking.v1beta1.MsgDelegate", "/cosmos.gov.v1beta1.MsgVote"] } +``` +There is also a special wildcard `"*"` message type which allows any type of message to be executed by the interchain account. This must be the only message in the `allow_messages` array. + +``` +"params": { + "host_enabled": true, + "allow_messages": ["*"] +} ``` \ No newline at end of file diff --git a/docs/apps/interchain-accounts/transactions.md b/docs/apps/interchain-accounts/transactions.md index a78a917387f..e17571a6e00 100644 --- a/docs/apps/interchain-accounts/transactions.md +++ b/docs/apps/interchain-accounts/transactions.md @@ -16,6 +16,6 @@ Transactions are executed via the ICS27 [`SendTx` API](./auth-modules.md#trysend ## Atomicity -As the Interchain Accounts module supports the execution of multiple transactions using the Cosmos SDK `Msg` interface, it provides the same atomicity guarantees as Cosmos SDK-based applications, leveraging the [`CacheMultiStore`](https://docs.cosmos.network/master/core/store.html#cachemultistore) architecture provided by the [`Context`](https://docs.cosmos.network/master/core/context.html) type. +As the Interchain Accounts module supports the execution of multiple transactions using the Cosmos SDK `Msg` interface, it provides the same atomicity guarantees as Cosmos SDK-based applications, leveraging the [`CacheMultiStore`](https://docs.cosmos.network/main/core/store.html#cachemultistore) architecture provided by the [`Context`](https://docs.cosmos.network/main/core/context.html) type. This provides atomic execution of transactions when using Interchain Accounts, where state changes are only committed if all `Msg`s succeed. diff --git a/modules/apps/transfer/spec/05_events.md b/docs/apps/transfer/events.md similarity index 84% rename from modules/apps/transfer/spec/05_events.md rename to docs/apps/transfer/events.md index 51b49da4602..a538d07d068 100644 --- a/modules/apps/transfer/spec/05_events.md +++ b/docs/apps/transfer/events.md @@ -4,7 +4,7 @@ order: 5 # Events -## MsgTransfer +## `MsgTransfer` | Type | Attribute Key | Attribute Value | |--------------|---------------|-----------------| @@ -13,28 +13,31 @@ order: 5 | message | action | transfer | | message | module | transfer | -## OnRecvPacket callback +## `OnRecvPacket` callback | Type | Attribute Key | Attribute Value | |-----------------------|---------------|-----------------| | fungible_token_packet | module | transfer | +| fungible_token_packet | sender | {sender} | | fungible_token_packet | receiver | {receiver} | | fungible_token_packet | denom | {denom} | | fungible_token_packet | amount | {amount} | | fungible_token_packet | success | {ackSuccess} | | denomination_trace | trace_hash | {hex_hash} | -## OnAcknowledgePacket callback +## `OnAcknowledgePacket` callback | Type | Attribute Key | Attribute Value | |-----------------------|-----------------|-------------------| | fungible_token_packet | module | transfer | +| fungible_token_packet | sender | {sender} | | fungible_token_packet | receiver | {receiver} | | fungible_token_packet | denom | {denom} | | fungible_token_packet | amount | {amount} | +| fungible_token_packet | acknowledgement | {ack.String()} | | fungible_token_packet | success | error | {ack.Response} | -## OnTimeoutPacket callback +## `OnTimeoutPacket` callback | Type | Attribute Key | Attribute Value | |-----------------------|-----------------|-----------------| diff --git a/docs/apps/transfer/messages.md b/docs/apps/transfer/messages.md new file mode 100644 index 00000000000..7cb61402e04 --- /dev/null +++ b/docs/apps/transfer/messages.md @@ -0,0 +1,36 @@ + + +# Messages + +## `MsgTransfer` + +A fungible token cross chain transfer is achieved by using the `MsgTransfer`: + +```go +type MsgTransfer struct { + SourcePort string + SourceChannel string + Token sdk.Coin + Sender string + Receiver string + TimeoutHeight ibcexported.Height + TimeoutTimestamp uint64 +} +``` + +This message is expected to fail if: + +- `SourcePort` is invalid (see [24-host naming requirements](https://github.com/cosmos/ibc/blob/master/spec/core/ics-024-host-requirements/README.md#paths-identifiers-separators). +- `SourceChannel` is invalid (see [24-host naming requirements](https://github.com/cosmos/ibc/blob/master/spec/core/ics-024-host-requirements/README.md#paths-identifiers-separators)). +- `Token` is invalid (denom is invalid or amount is negative) + - `Token.Amount` is not positive. + - `Token.Denom` is not a valid IBC denomination as per [ADR 001 - Coin Source Tracing](../../../docs/architecture/adr-001-coin-source-tracing.md). +- `Sender` is empty. +- `Receiver` is empty. +- `TimeoutHeight` and `TimeoutTimestamp` are both zero. + +This message will send a fungible token to the counterparty chain represented by the counterparty Channel End connected to the Channel End with the identifiers `SourcePort` and `SourceChannel`. + +The denomination provided for transfer should correspond to the same denomination represented on this chain. The prefixes will be added as necessary upon by the receiving chain. diff --git a/modules/apps/transfer/spec/06_metrics.md b/docs/apps/transfer/metrics.md similarity index 86% rename from modules/apps/transfer/spec/06_metrics.md rename to docs/apps/transfer/metrics.md index 3d2ce5000e6..e9e3086ba1d 100644 --- a/modules/apps/transfer/spec/06_metrics.md +++ b/docs/apps/transfer/metrics.md @@ -4,7 +4,7 @@ order: 6 # Metrics -The transfer IBC application module exposes the following set of [metrics](https://github.com/cosmos/cosmos-sdk/blob/master/docs/core/telemetry.md). +The IBC transfer application module exposes the following set of [metrics](https://github.com/cosmos/cosmos-sdk/blob/main/docs/core/telemetry.md). | Metric | Description | Unit | Type | |:--------------------------------|:------------------------------------------------------------------------------------------|:----------------|:--------| diff --git a/modules/apps/transfer/spec/01_concepts.md b/docs/apps/transfer/overview.md similarity index 72% rename from modules/apps/transfer/spec/01_concepts.md rename to docs/apps/transfer/overview.md index e70185fcae5..8b83b2c789b 100644 --- a/modules/apps/transfer/spec/01_concepts.md +++ b/docs/apps/transfer/overview.md @@ -2,19 +2,27 @@ order: 1 --> -# Concepts +# Overview -## Acknowledgements +Learn about what the token Transfer module is {synopsis} + +## What is the Transfer module? + +Transfer is the Cosmos SDK implementation of the [ICS-20](https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer) protocol, which enables cross-chain fungible token transfers. + +## Concepts + +### Acknowledgements ICS20 uses the recommended acknowledgement format as specified by [ICS 04](https://github.com/cosmos/ibc/tree/master/spec/core/ics-004-channel-and-packet-semantics#acknowledgement-envelope). A successful receive of a transfer packet will result in a Result Acknowledgement being written -with the value `[]byte(byte(1))` in the `Response` field. +with the value `[]byte{byte(1)}` in the `Response` field. An unsuccessful receive of a transfer packet will result in an Error Acknowledgement being written with the error message in the `Response` field. -## Denomination Trace +### Denomination trace The denomination trace corresponds to the information that allows a token to be traced back to its origin chain. It contains a sequence of port and channel identifiers ordered from the most recent to @@ -31,14 +39,13 @@ acting as the "source zone". When the token is sent back to the chain it previou prefix is removed. This is a backwards movement in the token's timeline and the sender chain is acting as the "sink zone". -It is strongly recommended to read the full details of [ADR 001: Coin Source Tracing](https://github.com/cosmos/ibc-go/blob/main/docs/architecture/adr-001-coin-source-tracing.md) to understand the implications and context of the IBC token representations. +It is strongly recommended to read the full details of [ADR 001: Coin Source Tracing](../../architecture/adr-001-coin-source-tracing.md) to understand the implications and context of the IBC token representations. -### UX suggestions for clients +## UX suggestions for clients -For clients (wallets, exchanges, applications, block explorers, etc) that want to display the source of the token, it is recommended to use the following -alternatives for each of the cases below: +For clients (wallets, exchanges, applications, block explorers, etc) that want to display the source of the token, it is recommended to use the following alternatives for each of the cases below: -#### Direct connection +### Direct connection If the denomination trace contains a single identifier prefix pair (as in the example above), then the easiest way to retrieve the chain and light client identifier is to map the trace information @@ -53,15 +60,15 @@ A general pseudo algorithm would look like the following: token. 3. Query the client state using the identifiers pair. Note that this query will return a `"Not Found"` response if the current chain is not connected to this channel. -4. Retrieve the the client identifier or chain identifier from the client state (eg: on +4. Retrieve the client identifier or chain identifier from the client state (eg: on Tendermint clients) and store it locally. -Using the gRPC gataway client service the steps above would be, with a given IBC token `ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2` stored on `chainB`: +Using the gRPC gateway client service the steps above would be, with a given IBC token `ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2` stored on `chainB`: -1. `GET /ibc_transfer/v1beta1/denom_traces/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2` -> `{"path": "transfer/channelToA", "base_denom": "uatom"}` -2. `GET /ibc/channel/v1beta1/channels/channelToA/ports/transfer/client_state"` -> `{"client_id": "clientA", "chain-id": "chainA", ...}` -3. `GET /ibc/channel/v1beta1/channels/channelToA/ports/transfer"` -> `{"channel_id": "channelToA", port_id": "transfer", counterparty: {"channel_id": "channelToB", port_id": "transfer"}, ...}` -4. `GET /ibc/channel/v1beta1/channels/channelToB/ports/transfer/client_state" -> {"client_id": "clientB", "chain-id": "chainB", ...}` +1. `GET /ibc/apps/transfer/v1/denom_traces/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2` -> `{"path": "transfer/channelToA", "base_denom": "uatom"}` +2. `GET /ibc/apps/transfer/v1/channels/channelToA/ports/transfer/client_state"` -> `{"client_id": "clientA", "chain-id": "chainA", ...}` +3. `GET /ibc/apps/transfer/v1/channels/channelToA/ports/transfer"` -> `{"channel_id": "channelToA", port_id": "transfer", counterparty: {"channel_id": "channelToB", port_id": "transfer"}, ...}` +4. `GET /ibc/apps/transfer/v1/channels/channelToB/ports/transfer/client_state" -> {"client_id": "clientB", "chain-id": "chainB", ...}` Then, the token transfer chain path for the `uatom` denomination would be: `chainA` -> `chainB`. @@ -69,9 +76,9 @@ Then, the token transfer chain path for the `uatom` denomination would be: `chai The multiple channel hops case applies when the token has passed through multiple chains between the original source and final destination chains. -The IBC protocol doesn't know the topology of the overall network (i.e connections between chains and identifier names between them). For this reason, in the the multiple hops case, a particular chain in the timeline of the individual transfers can't query the chain and client identifiers of the other chains. +The IBC protocol doesn't know the topology of the overall network (i.e connections between chains and identifier names between them). For this reason, in the multiple hops case, a particular chain in the timeline of the individual transfers can't query the chain and client identifiers of the other chains. -Take for example the following sequence of transfers `A -> B -> C` for an IBC token, with a final prefix path (trace info) of `transfer/channelChainC/transfer/channelChainB`. What the paragraph above means is that is that even in the case that chain `C` is directly connected to chain `A`, querying the port and channel identifiers that chain `B` uses to connect to chain `A` (eg: `transfer/channelChainA`) can be completely different from the one that chain `C` uses to connect to chain `A` (eg: `transfer/channelToChainA`). +Take for example the following sequence of transfers `A -> B -> C` for an IBC token, with a final prefix path (trace info) of `transfer/channelChainC/transfer/channelChainB`. What the paragraph above means is that even in the case that chain `C` is directly connected to chain `A`, querying the port and channel identifiers that chain `B` uses to connect to chain `A` (eg: `transfer/channelChainA`) can be completely different from the one that chain `C` uses to connect to chain `A` (eg: `transfer/channelToChainA`). Thus the proposed solution for clients that the IBC team recommends are the following: @@ -94,9 +101,9 @@ Thus the proposed solution for clients that the IBC team recommends are the foll The only viable alternative for clients (at the time of writing) to tokens with multiple connection hops, is to connect to all chains directly and perform relevant queries to each of them in the sequence. ::: -## Locked Funds +## Locked funds -In some [exceptional cases](https://github.com/cosmos/ibc-go/blob/main/docs/architecture/adr-026-ibc-client-recovery-mechanisms.md#exceptional-cases), a client state associated with a given channel cannot be updated. This causes that funds from fungible tokens in that channel will be permanently locked and thus can no longer be transferred. +In some [exceptional cases](../../architecture/adr-026-ibc-client-recovery-mechanisms.md#exceptional-cases), a client state associated with a given channel cannot be updated. This causes that funds from fungible tokens in that channel will be permanently locked and thus can no longer be transferred. To mitigate this, a client update governance proposal can be submitted to update the frozen client with a new valid header. Once the proposal passes the client state will be unfrozen and the funds @@ -104,14 +111,13 @@ from the associated channels will then be unlocked. This mechanism only applies allow updates via governance, such as Tendermint clients. In addition to this, it's important to mention that a token must be sent back along the exact route -that it took originally un order to return it to its original form on the source chain (eg: the +that it took originally in order to return it to its original form on the source chain (eg: the Cosmos Hub for the `uatom`). Sending a token back to the same chain across a different channel will **not** move the token back across its timeline. If a channel in the chain history closes before the token can be sent back across that channel, then the token will not be returnable to its original form. - -## Security Considerations +## Security considerations For safety, no other module must be capable of minting tokens with the `ibc/` prefix. The IBC transfer module needs a subset of the denomination space that only it can create tokens in. diff --git a/docs/apps/transfer/params.md b/docs/apps/transfer/params.md new file mode 100644 index 00000000000..e2e74305311 --- /dev/null +++ b/docs/apps/transfer/params.md @@ -0,0 +1,24 @@ + + +# Parameters + +The IBC transfer application module contains the following parameters: + +| Key | Type | Default Value | +|------------------|------|---------------| +| `SendEnabled` | bool | `true` | +| `ReceiveEnabled` | bool | `true` | + +## `SendEnabled` + +The transfers enabled parameter controls send cross-chain transfer capabilities for all fungible tokens. + +To prevent a single token from being transferred from the chain, set the `SendEnabled` parameter to `true` and then set the bank module's [`SendEnabled` parameter](https://github.com/cosmos/cosmos-sdk/blob/main/x/bank/spec/05_params.md#sendenabled) for the denomination to `false`. + +## `ReceiveEnabled` + +The transfers enabled parameter controls receive cross-chain transfer capabilities for all fungible tokens. + +To prevent a single token from being transferred to the chain, set the `ReceiveEnabled` parameter to `true` and then set the bank module's [`SendEnabled` parameter](https://github.com/cosmos/cosmos-sdk/blob/main/x/bank/spec/05_params.md#sendenabled) for the denomination to `false`. diff --git a/modules/apps/transfer/spec/03_state_transitions.md b/docs/apps/transfer/state-transitions.md similarity index 78% rename from modules/apps/transfer/spec/03_state_transitions.md rename to docs/apps/transfer/state-transitions.md index 9090da54343..86f7deab2d1 100644 --- a/modules/apps/transfer/spec/03_state_transitions.md +++ b/docs/apps/transfer/state-transitions.md @@ -2,27 +2,25 @@ order: 3 --> -# State Transitions +# State transitions -## Send Fungible Tokens +## Send fungible tokens -A successful fungible token send has two state transitions depending if the -transfer is a movement forward or backwards in the token's timeline: +A successful fungible token send has two state transitions depending if the transfer is a movement forward or backwards in the token's timeline: 1. Sender chain is the source chain, *i.e* a transfer to any chain other than the one it was previously received from is a movement forwards in the token's timeline. This results in the following state transitions: -- The coins are transferred to an escrow address (i.e locked) on the sender chain +- The coins are transferred to an escrow address (i.e locked) on the sender chain. - The coins are transferred to the receiving chain through IBC TAO logic. 2. Sender chain is the sink chain, *i.e* the token is sent back to the chain it previously received from. This is a backwards movement in the token's timeline. This results in the following state transitions: -- The coins (vouchers) are burned on the sender chain -- The coins transferred to the receiving chain though IBC TAO logic. +- The coins (vouchers) are burned on the sender chain. +- The coins are transferred to the receiving chain through IBC TAO logic. -## Receive Fungible Tokens +## Receive fungible tokens -A successful fungible token receive has two state transitions depending if the -transfer is a movement forward or backwards in the token's timeline: +A successful fungible token receive has two state transitions depending if the transfer is a movement forward or backwards in the token's timeline: 1. Receiver chain is the source chain. This is a backwards movement in the token's timeline. This results in the following state transitions: diff --git a/modules/apps/transfer/spec/02_state.md b/docs/apps/transfer/state.md similarity index 57% rename from modules/apps/transfer/spec/02_state.md rename to docs/apps/transfer/state.md index a0b2f99a4c5..f436d4af8cc 100644 --- a/modules/apps/transfer/spec/02_state.md +++ b/docs/apps/transfer/state.md @@ -4,7 +4,7 @@ order: 2 # State -The transfer IBC application module keeps state of the port to which the module is binded and the denomination trace information as outlined in [ADR 01](./../../../../docs/architecture/adr-001-coin-source-tracing.md). +The IBC transfer application module keeps state of the port to which the module is binded and the denomination trace information as outlined in [ADR 001](../../architecture/adr-001-coin-source-tracing.md). - `Port`: `0x01 -> ProtocolBuffer(string)` - `DenomTrace`: `0x02 | []bytes(traceHash) -> ProtocolBuffer(DenomTrace)` diff --git a/docs/architecture/adr-002-go-module-versioning.md b/docs/architecture/adr-002-go-module-versioning.md index 28207d5474d..983937e8537 100644 --- a/docs/architecture/adr-002-go-module-versioning.md +++ b/docs/architecture/adr-002-go-module-versioning.md @@ -23,7 +23,7 @@ v1.0.0 was decided to be used instead of v0.1.0 primarily for the following reas When a Go module is released under v1.0.0, all following releases must follow Go semantic versioning. Thus when the go API is broken, the Go module major version **must** be incremented. -For example, changing the go package version from `v2` to `v3` bumps the import from `github.com/cosmos/ibc-go/v2` to `github.com/cosmos/ibc-go/v3`. +For example, changing the go package version from `v2` to `v3` bumps the import from `github.com/cosmos/ibc-go/v2` to `github.com/cosmos/ibc-go/v5`. If the Go module version is not incremented then attempting to go get a module @v3.0.0 without the suffix results in: `invalid version: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v3` @@ -33,7 +33,7 @@ Not including a go.mod in our release is not a viable option. #### Attempting to import multiple go module versions for ibc-go -Attempting to import two versions of ibc-go, such as `github.com/cosmos/ibc-go/v2` and `github.com/cosmos/ibc-go/v3`, will result in multiple issues. +Attempting to import two versions of ibc-go, such as `github.com/cosmos/ibc-go/v2` and `github.com/cosmos/ibc-go/v5`, will result in multiple issues. The Cosmos SDK does global registration of error and governance proposal types. The errors and proposals used in ibc-go would need to now register their naming based on the go module version. @@ -72,11 +72,11 @@ This prevents the Go module version from being incremented with breaking changes It also requires all extended functions to live in the same Go module, disrupting the existing code structure. The version that implements this change will still be incompatible with previous versions, but future versions could be imported together without namespace collisions. -For example, lets say this solution is implmented in v3. Then +For example, lets say this solution is implemented in v3. Then `github.com/cosmos/ibc-go/v2` cannot be imported with any other ibc-go version -`github.com/cosmos/ibc-go/v3` cannot be imported with any previous ibc-go versions +`github.com/cosmos/ibc-go/v5` cannot be imported with any previous ibc-go versions `github.com/cosmos/ibc-go/v4` may be imported with ibc-go versions v3+ diff --git a/docs/architecture/adr-026-ibc-client-recovery-mechanisms.md b/docs/architecture/adr-026-ibc-client-recovery-mechanisms.md index 27bcb33e545..bec25a3aad9 100644 --- a/docs/architecture/adr-026-ibc-client-recovery-mechanisms.md +++ b/docs/architecture/adr-026-ibc-client-recovery-mechanisms.md @@ -7,6 +7,7 @@ - 2021/01/15: Revision to support substitute clients for unfreezing - 2021/05/20: Revision to simplify consensus state copying, remove initial height - 2022/04/08: Revision to deprecate AllowUpdateAfterExpiry and AllowUpdateAfterMisbehaviour +- 2022/07/15: Revision to allow updating of TrustingPeriod ## Status @@ -49,8 +50,11 @@ We elect not to deal with chains which have actually halted, which is necessaril 1. The second client is a substitute client. It carries all the state for the client which may be updated. It must have identitical client and chain parameters to the client which may be updated (except for latest height, frozen height, and chain-id). It should be continually updated during the voting period. 1. If this governance proposal passes, the client on trial will be updated to the latest state of the substitute. - Previously, AllowUpdateAfterExpiry and AllowUpdateAfterMisbehaviour were used to signal the recovery options for an expired or frozen client, and governance proposals were not allowed to overwrite the client if these parameters were set to false. However, this has now been deprecated because a code migration can overwrite the client and consensus states regardless of the value of these parameters. If governance would vote to overwrite a client or consensus state, it is likely that governance would also willing to perform a code migration to do the same. + Previously, `AllowUpdateAfterExpiry` and `AllowUpdateAfterMisbehaviour` were used to signal the recovery options for an expired or frozen client, and governance proposals were not allowed to overwrite the client if these parameters were set to false. However, this has now been deprecated because a code migration can overwrite the client and consensus states regardless of the value of these parameters. If governance would vote to overwrite a client or consensus state, it is likely that governance would also be willing to perform a code migration to do the same. + In addition, `TrustingPeriod` was initally not allowed to be updated by a client upgrade proposal. However, due to the number of situations experienced in production where the `TrustingPeriod` of a client should be allowed to be updated because of ie: initial misconfiguration for a canonical channel, governance should be allowed to update this client parameter. + + Note that this should NOT be lightly updated, as there may be a gap in time between when misbehaviour has occured and when the evidence of misbehaviour is submitted. For example, if the `UnbondingPeriod` is 2 weeks and the `TrustingPeriod` has also been set to two weeks, a validator could wait until right before `UnbondingPeriod` finishes, submit false information, then unbond and exit without being slashed for misbehaviour. Therefore, we recommend that the trusting period for the 07-tendermint client be set to 2/3 of the `UnbondingPeriod`. Note that clients frozen due to misbehaviour must wait for the evidence to expire to avoid becoming refrozen. diff --git a/docs/assets/fee-mw/feeflow.png b/docs/assets/fee-mw/feeflow.png new file mode 100644 index 0000000000000000000000000000000000000000..ba02071f4d8e8132ac527c279cf32da9d9dbe24d GIT binary patch literal 394717 zcmdSB_dnJBA3v@X4U$xLL`hj8dq+ujDv5)#_nsL^g_04Gy;t_$>naY}BgZD2V{?pS zeIKvu^Lcmm`4hh9hiJ<%}tIj{1JS zQ82U=+U|Alh{kdW>6Q+;%Or0uk5pnE<~kFax0Z&mA0D`n-{fTSy2SQ0^rl+sgUqMd zSsir3_75r?uq^W7oW=Q@JH zsJr48t|#69WV=^x#vvw#Y7C%f%dI`E=r`wg&vslI(k*n4{g^|&I*Y*sqN=GSzde3yxv+os8%nm1B0 zR8lgYJT&tqFeoX7wG5~i%2CTBuoYhQmXdXTOL(8+hB41{m-by zT#H(xh19&O0*wemc+VQ+(ig3L=}xOBvCY7`{nUb(qd@kNFIZ`pm<@5Fsv(~uxP zeLmQlJcETv?B0|fxr?&Q^MR!;Hw}wxJp{QUmSmTM`I&g+WV96@KK#b5*XaNH_jjKb zKZ+Y!+m~)Wk|83cxfUpKxO2UJk@OO^~dlCCl-3VQ!}`nmU$lj}z>nbv)M-I$mTmKcTex#;Gn5G=Z`TafVh7HN`dmkUHaJjM=E_7%-NAQH1w6yeegi&m8tk^5lI*g#( zPF~K7y^RhDY-CA5T*$|ki<>KBI@+(6_()S}OiWA)bnB11;OEmEP=jyZzQq>kd)L<1 z4m%E6;8z-oLJsz}MPgc-LvCDWVQIwE&pyu6tv4^FKYyMvI5=1-x1q7|p{ePuLQ(Sn z`|0}B%-yefUq<^e%p+(&@RT0NaZfFO+I; zT)U=)p>FwK&CA#;ewDQ9Y~XWE8(i8l&9SmQv#PBXmXPUN#mW>sKR>?(&nIthUlce= z((AUnZlYVNQ|m!9cgcskG~!BI1EW>`%ZAMt<|7pjcF%pb;CSNk7#+`SG77r`EofN2mz!ddd?e&B0F?lVmVZO7Q6M|49zb}qAti?%q zY9GaY{>%g|%t1J9$g*X;M;$K}T0tyn|;M-TzjZ9Hn-QX`PGQrN^>#Y+{EP zLtS-Lu_IZ`1buGn-p9-H-+Rt6h?`emWoK6i*O(itt-W~bF{^C-eTpoOC*MLjTUO_i z0);u2@~puV#cyHHvceoFI&r6xkAp+ede_oYW|0%KY{A=?u+53`>a-)S1E_4Gt7 z*LCIVp{HPpF$RpOa7@sF44CnSUnH9oJM`hvx6x6tu{kYDi-W~2uGO%!wiuMte5;Of zcRQ}1@c8j)LoSN{EpwM5vx-cG?*q-sk(~N_pDqqAIeL=2+?Aox*Vo_KKipf{s&U`@ z+4zYzTbYQM7)#jpo{YhggDa?KJm)vn6uppba(jhCbTiU1+?|Kso~E$hJ&EbK+m(3F zV0FBHy-Sus4hB%PVY#8ce$!yF*>nS?PHzgMVS982c0!v24rj$h?@4Yv9>35{!r-}| z&o_BFx7cFn>8&TAmfcNy))i`T?lH-pr5+@D}N+bnc3!Kc?}I^uK|dNY!a#%kOv`OGMf4q^R1 zfBl+n)(7oHr(o>$Yk~}|@`7Ra?GfS1oz4Vln)7_T+CAOf`YWT=1#Y{x0|f>jadjoI zpr|g5yjNR`!PLBl&%F8*?|pm--H=am>1%+hs%nLs%zSr>SnR<*bfgw|rxypKWj1=G z7et7PU{wE~&s^#Y%HTw%3l#M9)r}pNrF$QmDEOnYCx3onJJ9jiH5kZy;f-5{M{+M4 z@Fi!qZ?v!sGidTZz5f2)JGp9CoV|`_iFsE%XL4$)>Fdq$dhbWYrcYvo%#RlapjFDO zUzqggB|Of2s>opJxW8kQMqMl?Cr2ZyU16V*rCF-v$)yti8b?srBE&#<1iNCeJY3#a zQR(5~Q9-mC$!C_OYxm%RZ~J49)p}ywO6(%V>}`MwyR&hgS(w2R3pNhT5`BIarvLk? z5Zd+it@WLv41VX))zvjEqhAL&C6S1PD!$P0-!VB-Q49n1{;kL9*7v+C`?|D9*5AK< zJEt%TLxR*eGNKB)5lu8Sn#{*p&s4oz1F)D#&o=YX%N)-i1T)>6n(IokT^<%f<CdCvf2}v(;`Xx@SXM`2A?J+&IlUBrJS3)I@_SM4G)1McA>+v3F zeU%rJmv=iur?#fZ^w&d%I!FAb3Ca^=Sg5h0sH}`3SY4lPnNExI=+@;Lr96K=-fL!j zTsN@&(q5JI?>BDi%{P?fxywwull>H;1y#MLgvcoG6$MIjv}q%yg&7bGcAOYehd9 zu5d7Ozl~ZNEVip!UfCY=tP4rt6Q!A{Mn77e{S&b*scu}8b$S+ zmk`)I3wyCS*YyZ`NoE1NH~brqedBU}zMcVenm)qTsh8tL@F?B6Iuh=4&#bMj!-gKh z66-EbGdpExVM*<(Qv*RqMq|`T-Z{ftm%IWS0PRu1qJ`r;m>j#*N(kAOF3FJv~*JD2O8iu z4WH??NpxU1oFMJe@fS`?cPJX+|>&XnpdD!L>0;6bNu!6f^OeFjhYhY!1TmjOL*)?4fd@bfk@O za7e!=2^M$9PvPtBxw*M3L>u9uv+U;jvZL-;jf$dqz5YDy-217?8%%mK zCywyF*_!HbF5F2~K71!^&7p+ek6q)p9DcSw+mYLH^#>ZQ=_&DQD~mG_nVzKUm)V}S zTCDa&6PHk4zMM*?XZGvcmm-s%`wY)6lanWS%FD@h#SPclFdf9cS{8CyD#j#h6dGQj zp^412|B=uByyyXDiw~`q{D3?r->rqC^!Ct&|BWB=6FXX3LF(QWuxuFWM2tutwyD)a zQBE#+%<~8ph}5rA3)}cg>9FlbQCzQDcZS*xl!!p4Mos{)>Dp0m?_(jC_2l+5qvdvK zhl~CB(n`^S357l(At4P}$|Q$}hr(*5aP%wo?|!1;vv*vzC>=>PJF&OBizR#6W{v%U6dk8ct{oNT29h_02jqPOok#+~%p~kZEjg zZ686_WcQhbgoN%Q6SbIoL(u4BBBG)O3Ju*ye*BO@gyk;<3 z<-%jqeNCg*qq>K%KVHV~!g{APSu?P@3VzhJNS~yzRr+|2G<# zZiw?owJlFh+BFy@YAen>TU&u6qd)!g3xXWyX{rOfv`?Kn74+>%=7Rqy(7FY}zSYRm zn2vJ0S^eQM8+=eDAoinLL2>bl)Ky{zw|Fv}7J1D7rl_xPjyOZ*BvXltzh2!2ObOu) zhwfy#0talL{3tCI6>I6JYbH{uSDeR>WjxJ}oN5VQsUTLcIS1q-45-jg9|jNO?8>vq z(zyXcutn25-A?!TS4?xU&wy zj zMBo3j<)d869peu60HUcy9JAWrIB2C_y>sU=!#`oMu^!DvA1>ZxavF6>BT|jJW5NW= zKrhbSuHdPaC1Z2Q=g;;gey1r|nm%8bzsAAQhJSUqznkKDbjYJyM{pqVr>KKP1Y};r z04>B@7s!RM%tuz;kKi%T2iXDkni)3u3%!VA8R;ew5z)hP+v#M>k&5mD19@bGg>q>2 zx!xZ7@+Mj7!Gj=J;AUXh$n^RQM^~i!2EcIq))E^b@wwguyAh;Q{-4iJg;=uH#>U14 z_I{@^cZ{nbbtot5`F($?tEdY5E`oW44SyO1$a9b1YBYwu~7L4|Klo_z?c1AR>WnuV)t#WEWU%l*Dw9j=d;IX(l8mG&$hFjrb3JAFDB9_smf zQrcAcJGaZ^|17UYbKx;8$cJ%HBQNnHGbVW)npr>6%e zWdcYbL=PP>Pg5!4xES<_R$!rq9y8!@5#T5?>*nT+Z>lDq@UHyxOrhDLwByytv|nqW z6duAsQ|ZG3>!cZWpNTNCzn`TS-@A5%e63;>e>1FrJ~YGv_dQ3_8o<-~F}mX7G`$VV zuq;H52mAX!#>RBKE1~8H8)3EyC-vJj`?l)Rl1c36aq_CBDo_(S{TT;M%q~22QNYD` zjoL#&mY5^aO0xd_k1$~g$UPOkcOAVR?T;81&hxjfp9cBqGk^fB^ia;d?h_|YGy!*d zdGf#S@)i9ud%OyMB#&Mr3F%bhj~~x+W$)i#FxOW0uAJaWQs*QJP>vB!k-xQ%!|31( z0U5Y24VT+Ra83tVFzxM>kzOW-Zv}G1`Q3*M!{;qz_D3!7wPjL1=?o1$dwjVoNj4jE z_R_6uT($cJRjdD;y>R)m0vM+qc9#_RBy9d+J@2k&&T9 zCclBh{leKZGchFtpv3EzfKt)Ym#rD|rs~+SV@L;`Zyf*;ftNo&7?HAS9QK znR#<{^tdHp;?2bYHP`KB_l7r>k+%;IX#^XUe|>v`V;hlGYE^SUBW>)@C_ z25?R+6@j=DoLXfnPjj^9FAn2yxG(U7TWGDS66#So<^L6EdGHOxRfHx1)=B{;ZaZFg z42uH_;IcJfG%azo8_3yZoo#UGD}cxFm6|;zXd+Ygt26fmj7D^OBdV)QefQ$_VbUZh3(T9hs%3h#o&}yI4<4Ft-*f_WmWwrGfeOSOl@e} z3&QowhRXpod=G(beXryE^FS#6TvXy!W@hQ9+0U;-p9tkM>wA_~p0MTj>@$%4iu&}P%+u^cT zTx1AS5T)*$qfr-u1=f$SYFg_SbY5Dh$WQ?r;tFIh_TupDxiHACF zYxhXkX;{icOnX^#NtSbfUl4XLzp13Sp%hxVT=CKDzcuN)H2uVEb_n6LLkqI**up-Se^Gziz+ByJT?DtW+KFd;T*c^#dji? z-RbaYkpIr3Q~c#Y!ULf##OI3Z10#k%(f~P%RGZs-8;Eelk9z1K@r5s^Ct61g+ajAq zR;rj`1pLy?Efpm@ht7A|Fr*f=j%U}Y8J;hD7|zK7YGW`bs^Wp9q;<;|wi{N} zxG-@NPFB{Y%)T>!$Y&yLhl8d>9ec}pdU_7vJOytm;g$a_8))(=P;1(k7#p}51g#}U zohL~(3iSQ>hNvEfv1fQKD8&fN>FP56)sXFfp~C-N!~h0~9ItNJ%fU0t|74erej|Hq z)*0`GIr%{E<;y7$WkQAQW*)%d!nwk{pZcP%jmYtz>;D^k6^1$TueWrxV;N@{# zd`23Ynw$)+_1?Yt@68Ag2f~hzEX^u^1;7LK@a0Tv#OKIJ(*q9A!~O0wWrl;(WMuzO zsb`qcjDPy{=?hF^b#eS0GccbL?Z6Kox>LxOtGBh+wzsz*)H~Timp@LW zjpxM0#T8kOJRf!2Py}MHN%a>*&$VeVT1`z!X-3XCwijf_CRZ^KqlwPZrPrhOb*hXt z-cL>GNAO!jl0eb6M+&KE5ZQws9fc6kvm9 zuB?pA1CZMg?JpD*aOYp_{eY`t%0+Can&b_aORUDU!@s6$mGcn(2aTp2a-O{wK-5|M z{0;Y01Ar5=F&ncTT!?s%%zm0VT1i%B+|ew@#%8@Q8(r|SQQf}M%iPw77Qxi z+y!EIlLBpM4Bau>QZ@E-()>4gKYsImM)$ofhcnBd7@Jx{5bByh zxk&~|=&u%|8aug0qRnf!jdW|^0m3JpXhE@Asosw5{r03KGt8il+j6W173fm`=A@F> zERVs@xknd(5%s2A|Lc`#0u5I|CLe$z5f^OZF2hbvGCM5vcHzv-`m*Mq)T8KHpjZun zR3U1l;7KRo6P(_}WMP0mg8mv1KMM;;kuO3N41YSIM>B0vMkk#Tz_S%TTLKk9(~k=q z=LE7QYqWg0*`ut426H4KcYCf&`ZytBwW-j5Jufl3iNEgE#E;W4Cq?XL6q=iwIx%i; zZb+3>uuFqKgLASv6S_QFt%-=T^(ebm6;NYbCO-)zgI9ytnNN5F{;L4nTP?WLFJHdg ztT)kd$9+joPM$M^q57!Q5*1TElq^Sq^2SsxlOoJEw|Xmb9~zHR{m9FP5Ay{ii0%%x z#{E|hbcr1z$khmY0epUa4b32LYg>RT)wHU9@~oZYS55XDw(b3V7c{~O5 zfxhd^;)gqWat|LCXp@~g7d9LFN(pguo8u%T{)P4Bmd>r zb)YigplCb<45WVYVcVk%h;|E_5Eh5v@PWcKa4S@xt^C!C6KMl3{W}AZNg%#6PUsgH zSURebD0AA~SOdn*wcEEm@$f`EGe&p@j6IiSI`g)|5QS<2gifeuP ztIR6MOp<^KRtLBlm!MCB<`NDfiYz!0b$`FsMK^lyN>K6Ed)1Vi&vI3b!!fS2X^-HQ4gX|K zf;5|laEc6m_>%wq5{eCD`!@sypE0EJ+s~=oe4HMnPOlFW$!%|`lm~bLLPc>Efq{W{ zOnV=UdhA(bs3yI~(fpZ7U2T$tRfu*7fC$;Ri=0~hndff9&;yX2Qa_R;8~8kT50C#j z;xv{`_MG>xT}_Pg^8^F|t@8y0p4PcFwJTp<1CH@Q&+BE#;#`J7|y=;@L%py$ONBJ-B znT%GI4+9FVSd;<*KUbcB4`kAC11b={5Ea+x5-nmZfb6b(h|Bey&v)tZ*ZVVp6U`I} ztNOUa#V>%MD$j_FdrWyYpL;S{$%l=)IY?{WwQU zgCV`I#6t7*sZ--$Ko9sopTwxxKtK*4c%asOplEMumSnZhSac=6gUKLow2PRB&~$T~ z7PS`zxVcp^{RhxgrZaPEK0`@iFOUX6MKL1u4mgEhZLLJ^f4dy)yJNpRJa7nfwCV6* z4;atLQq*x6^Z-jC_j1Vu1lJsI&4jxr-8mpIVziCl*%9Oj*F9V*`*Hj*Fb)i6AxJm? z?N$Rn?3#QSd$8E6Ev*av4g8=xvLGE;bZ6W<`Y$PAs_w?ko6R*w9aj+Nx;0Kh2N|43 z?a|Gfgg~l=y-VR|YeXz0&jfy)k^g`OgDKD4et21{>99F57B53?uy9Z-~{Ywjz-~qqh5qa zhbsv>Eo+s~u7Q%4Lb2+7RLMD}TR3392gcv$urQY8u(!AGN=rMuw}t_p0yr9Y*a@+|-5J9f}gJSQe5V4HWqHufI@jj$Q;#J@=)T!N`{%wMe7cepV2 z*$kBoDKzl(bXJt()$7;qc^u%>)5v~TBmMvdrNnaBv!*lRD_Csi9+I}{1=(@1)QSrv zw=Wg>3`ynu8Jn589tIAqW=SYZ&|x($&U>2D!U;-)NOt zOL*oLI73B zc@vQ)Lrox3^iA!mGT3#Vy#I8wse5j)O-5vA&U714!9rd`RPy#gz??Z3Z$5f^^N-pp zGnL{70M?8PkhQpAHdrS#y&%W^lCW+34`KvwuLA+@1ExFor)iQ;)7J#l{w*elI_>bB z{tFYb5IO$`pVnFb|M_2@EXT-$xATUUlxp{Oc2=qW?;EkIk*r=Icku&Ag$y)0G1tfD z{86Fo8jpU4-ed;PNZZaIVVkf+&5)vM01^6U7zZ0flQ2jBS4`?EMw1JX2UGff{1}4J z)@UKSDab4c%a`akf9|eve>Fc`UI?2tRdIzOU>1@_Jb+?%mrBQ`K>3)!V%cE8grTpz zQdlmZy>j~8xtVv@{!e$PXrvmy{_`qKdLJ@|K8>*Dn#g7N-$5V?M~HZS6EmX0^(ad; z18KU(&)@e`edh=gEt^Ljq8t7vh={aH_51?^!(mu9g9pS0?Wm7C=XvqN7U>$d-DDW7 zkw?vTps4q7K{(99{Q^LvFSnk21{SLo>{gEUfvM{Jr;o^R@a@W zr*^?BKn}3OQcxQB``6&394-Cu;fF=Q??Y;8TaXb+8+-G@-Bs@wn{iJdolxQtnryHg z{(4LWcLx6^T>|2g7Qf=a+3yuql##&@zsi*RAkol{?y50nP zHVx6wV1NZe(>LwEf_ja>i0)KHTKXpK+C%zb-8N9I$d&5)#ld9(ud3QRC*4@gy@$Te|nA^MPUYd)NbP4iZS* z5L&2!Wi_R3uV}6O@#9AmB&Kjt*8*^pU%B;??|-6kVIo5}G|Yb*28|!P#?*mZ8dAUF zGDY5(B=D@dzSY zFJ6bUQi3@)y|XqsDCG36o<~?rCKed|8-3BJlj;23Vz46)s z5Rb$o*8vSZfF#7G=5c`ybM1{wleEpy#rbZVwr2vN>rRj+hFD;m+AKK(1DEIinh#MM zos~>{8>-m!OAet<*0X%kFPLZQqjV0NpFFbZJ3^XhQ&LlZ{`2lEE{ei-?fwwG)9_Uo z0frNuq<+V=nG###0Y>gM#9vMu0$(u17^_ z0LBW2SJU#Yfj_G}3?g%u_}C$j*xuN7OE4lVER}cBhE!EKA(oqvp2QUq`{HWB%PHGh zB-Mu^;Bi^k$2t{Br)O?FdX32n@poIma}f7Rfx*!2km2GDEqNH{8ODja1-z)lFfuJQ zm8VW#fPHJi&o?K2nB+Eh|1$6`j~FCigGo6*HDSx(G;HG|uDkS5R3B>#R?S@`q(OS_ z#chkifvjAW0x!deCY6EWjelc zOItlgG6hDiJ;j+;h-f_DmE;rF+&XRrfSZO@69C#FouGBybG1DXC)ewV8Rkejz)R&( zar7>h4JZuR7%XnE$<-?Fo|keCI0CTJ3`pvZ^C$igU*9IwtEL*#5fVX~8%*oRAtexk za8N?yC;_X!dNYvF+ebN`7tJ{^=q9Q4f({|3L{dUVFPtpTgTVBKUzzA)r;YT^P8Iis z;u}%}XD;2EEA|-oBHpaGj`P50w2y!JNTwMf_Nt^^CKu#EiY=NmWMmlH+p&@{-HG?k zx*Jb`vyr6p8?wxu>(yW;?gGe70g%q#F~!#&E0%d|7=+7eYOksf`yT64a&3s&TB~6T z$_p?Cb_#!h1eVYL9hb*Qo}Yz|xIJtaxR2F2>c#*-92R%Ry3)~(Kl>TZmFsO>82Yxh z_K39H@p^d&aZ?ERR-X|9j2UH7j?MC->@PG5Y+ufPlyb&M&UuZGq;NBECEnl|LF+z6ti7lY?T~dLspKMY1^-6(>r%?S?k2z^t<~=%EJ53556CKjl}`}{zW;v(_uFk z$%Y!mL0P-gwkonNu;sn~?&y`->L`UF3#$3^b%%j~UzzHfWG9A!c7?I^(hJFPg{HwV zG;zHuF)^6vc9BbaI73uBL-^G01+<@VQ?CoFUiu1@dGa)GX4UJZ_{H%;qR~LNh@s+i zRb|02N^>%_eR1EN#`0eoYO)Ah1oqf<2VEmzF_=6XHc~O>oLlZ8xC|EOoWl>?_YzeG zMvgUae0}Ry?J#yWQpcK9VKB-6>dHw#N{$-s&D`aEEi?P7ePYdlGj2f)`Si(`x*2x4 zfwp$ssN4^%phkODwD*QIsRhJw|Cp zIf95R!ZX@B)C*P&@h=50ho0?mWURf!@%-^ob(ny@;@(7m+->adC_dkjU&?dp5&On? zsV0WGz2Ez*9#!v`;$v*Hh`CDL#-HVLC12focQok`N*=1dxo2(OR5&2EN)g8w=Y&CT zB#(Kozqh|*eW1Y5(qpEJe;qJQj~o7SOFGr#Uc|k~-@?CXemiMV_L4PumT9Yh^9L=cMhi~f5RxddG;i0?($g|M;r|6mps2@SvNhA_3GT=kr+0pR znWqklgFF5Pk>K3hS(dz4VDuqTV-GQ>p%RP1*HP`v0p#=~ysr_Z3KE1`M(y!7Z6@D+ z>|~N^9I#I{VElS~>E@<-Jt^gLhEz=0777+~Famce2Ah9cda^yu3IgQNpYfgZobp!& zQRlpW#Rb_}B*}+huYu}UrD~F=W2EgF7cjY8p#1l2I8bU0)OyzX(~CS6c`L|IaqZ{g zaP8i*h?o^xNePUM6u5X2+5W(1Z4!;G_`19<3*>aV7^B@&bOaZLkZViLn})}_m&#{j zH&|KU9!!W@qlQzsbL0SD*hl%CqyH>0=BBpcSGf&Q`@6C3TN-Hxhg(Bdc)me4G1~L= z^2xFwfEBtiY<=V@g`Bs0q-cBn@Z-8M>$a}7`_vV%J4K=+kj9HN5~XJszB@1g_zkg< zD#F%-nPsz-xP|jrEB{U31?7PL6FIhS8$>Aqu_f0lhVk#D&i;G`qfCq@oq2@=Rq@!H zHyztbN=!o2*?j-N+qNHAEk}5ncKMR?BpwlYwtd!p4-!be3U{2K4WdMH04*1RZFMh6 zo?emFi00ON?;x69tAd$gse3ED3Kl~s%r?M(gko^o?TW|Ux?+*wexDifIl4~!=38|i zu|5?9m?hYkPB*LLx-4}c@q{i{Oq?NF@emyIO)XoBJbv#%Kz(K-2LSXnb{n)Lrldm+ zrm7KmwC#6ne4M2qTaBkTQc+){96PGm;5$d5(x<9^_V6v_wrbL8z9 zuLy(NGLWucOA&a8X*E8VrnipiTo%+O>{Vvf1c7$DLf8aC)~-EG`O8)yf5j?;iIieL z-`%%P+C-MAo?F9oOgotxZ_$5cT_Aw4Hi{sqTs%F_v@h!>+=A%#6ss^z^<%5Xi2W5fSs?U+l7gWw?Lf8AM5*mupLD0LM0G6DZPG1YheAQ7 z<{zAl4&fxxlxGpjSUqTYpq}rpjtkh^PwUP*a4tMc=G8_5@D7Xb@B_ooxJ~>$Sbx&v zKLnWg>)o$lTsZ(EwZP-Rm5tScrJ3=l4Ao@~nLFh&??rqis69qxBcbaD0T;Q!SaU<&MTzCFhklS3ljR`sc7~-uCUe0bs-Sc}$$jx11_i>52XybMm`2Vmt((_~5 zJ;C>>JI;)HAH#xWoe^UmI@W6WEMBb!Qa~JmRE!Su-S@EG(V`p-74gv#8E#)BE>bt%zWoeop?qT! z>rKqUg00P2481O89{pTDBP;jcV14!rAXL=GMa3ww_JhLJ`&Q|(Z;RbzOLagh_*8TQ zPS0*3m!~8d3-^6DBA_SE@J=x};Z6=RPjU4sLQbG`a12b8@|c^(3t~m3EOl5xEalO} z^B1pj(11yU=lQC%gE~~S+uE4vbbxpjXCLGJNO?d-vHz^ZJfd$TTrKydNLlRM#{{mI zmfhv4rFx#naN-Nswc@~m*ZDF|5O8)^_n)_?pZi3te{>5F{sw}&(#jZ&F*R*Tp*o|W zZ5GAIWD~QWIg{lP9xMw|y>dr*OzjjxhH00DA{u=4Waz#0?$_MmZ9&mXcxVmX)2c+& zW}NicSzIReP(>h7;=RX2hFaQYF(McjeD5LPYG=UtPCmL@7Lbk=JH5)p#fUoE-%u7) zwxbvgX+9MzIYxxLJ}5gSK|x^uZUfDCKZ^U+mU*?3F+(teXiT-A9vY`zW}PtVFFQCc zT)s6O^fcY6jTDJin2C9m&-xt>WN8!@DgEPOSfb7u;1r-!Fc zcPh;M-df7hxgz=M4SwjvgAp7isN=S!)X*=mRN9#5m<=6bY}f_0)jHswlF86papG>5 z^{HmO6GoU}_5+U|o7i&`Ry&D9dM#0?q=KUdy=INploC^p8T%_NBNno`Vj50d^i6?-J z@VNaI5W7-iL`cpQ;%Uf*AC0+h$GAaQlSYPjHWFn-_(`n&EWO;FZmK&8lM6J)4vLzX z4eQ0Px^-J%Hk+n36z4m=Yd0?DV2-I^{RzHAWQbUlYd|YuQm0 z{ag@iWxo;Kxu)8zC$i#0R>1#jzV*9QQG$EDStnOT;4 zt>F;B?fgTM)PcUcpX3pbJfWS%ZOOa%#6u)HN_0&0^k4+72!qE?LKyW_;Nq5%rE!){ zt#&SlN1if<=SlW+J`QFo_DDPFQR$H{Jp>dBLL_bqw^@K?5-+Cf(PLj{ss;dyiZRTJ z%6(kveXI+lwgf_L3SAoo<-*548PcuT2ec$%s+_^GxmD{Qh{6iJdDh|L*-ubP9dwN> z?G2m`RIDbS$Fsw&JWb*^vF+_Ga@J10>8g>nDru8tx4$m;qy>&%vvs04jt-QXg&2rE zBi7^)UAKn-Akpq5Su%Qs%F6k1IaK%)+DS#^7U{|3t>(FKV4qEkgPluQHK!LZ@pe1j zU6y8g>#Elr<%?H{d_Y8@FsT2FXnZh?1C-G2w35AKYADHzbdA!8{S>?U<@=ZEqW9M7uzyM4|TG(~L*g1MyZ5d=N+4 zyCings7(m&G)YVNbZjpTVJvQEgID9aal(PTo!Y<@fbjE~f~b67yZhz$TzJs>hAoK} zkj(ceK}WzXMu(5(M1o@w2srp4I!@+312=G*A-$F;KwF5-jImNhM0Rt_4a5~=7vm7q>x?esEpL;Pt)2NzMiddHyy}5 zr0p*)&s2*D$}UpuHExN{qmw$Ufx6M783U0#)+0dM>{b(H0p!+h2+MS3Skf`H`0Bzn z$dSyQ^8#RaQHQTBH{2t{(z0oM83K0^vCn3H9U~;tA7ZFC3i1i!2UV*N-x_i#^7G1q z3E&OOT91Rx`}$AgY!qo1X{VbV+`^t5yxEYZ|Fr(5YCOlHV|j2!pIsV34%1Y^=jUYf zbbs#@S1uCG8dGr-xWb`!xU6bOXvkY=w7;{4FJ`e1vb|t$Cwj$RxNEJB0B(H5^;PyP zkFSimZG3Wr+m27qbKf9MGcoSk-GkJj!}z;^Cyv;=72W|Y5VI@RTWNNQa!<0`1m0n) zo2FT6slE1v-d_Lqsa;4%ah<*xHO*ulyG-O3pm4h<%WC=z;dOK7!ib*HQ@fzc{(647 zQ}su2yNS2}FO}!vu90F3plz|12>GTsR^7Y~f4Z zbR_Mz7seYHPw)1f$jDm)Ng0cIk=sxaYv}mO5$>-{L#x1ydz+*wNK%@370E<0eQFg3 z`U3fn;=Y?`hkFD6?BO@(L#96y7(OLiM;wsopRDT-AdJkH{-(;C=k5B3eMB(B;$P_c z*WXxJHi~s&8RD}MBV7j9L9N!*)Nt+CpdUaqY%7yf{iP}^NEHYN@$Gg+Q>-(#6I%!d zkh>g52W;3x|NdwP;kC~mGk!N>tshEg`GBb~Z+na-j(I7Vp{@89SlS-Ejcb{;hKA;r zVJYR2Dl7q4#7ya5WjspZ+&v@Oo&r)Yi0Q8j%?EfanC)D}QYx%eDf8Hr=CPv zW4egS%J1i2bGf2unOKj~t%7R6Rj6e$`B3G*brKh=LG*(?kk@)#^1!s>2JXa9#)Se< zOh=xpUs@ttr(X|lwrk=_f2G*jI(%&p?xWlD9P4JPEZ~N;qM5`@e^734?V2}_nWa{| z)d#Hk!bM&+>RB=Urt=n*bVEA5*-g2IOHTb|Hc8q(i^r?xdJ+_^t8D_t@<}%}3pG=J zxD~dU6B<-Q#JNwQWthk}4~BzL3lw55raqZ={X#o6E>k1!66S(CS&{lqZFxcoD1q5J zNDTTQ74>xYxXBUJziF&wWYl(I&K>zn5eHXCIysqYC+&g`S5tRc+2{+PP7aPJO7My=%4=`a^uerBbaHHtsbqoe$J z0g}J|_EP11)2F5zlY=upT3bHIgj)rs^gz1N>{uqZb4x$rUUv$5@+-e_rmC#&;)_^9 zFldrY^bAqV7GYdEIp}ay+yI|N9!E4SesN}(M$l-Ha(WD>u_JuH}B1Wo%VgdYkMK+ z?&Mo379s)&xmnY`l`*oJ_~AEL-?X4qsyBP5FyI!Am`EQtcCKSHW+l5<%w!_Ag2XKK7qofRNzL?j#`YOjt z1(tKE|10&WoOvI+rS6oEj)y$nqWO@DQphD04lFjqY*iF|{7t*xEWQyf!R2n!h3v}e*kwEwEOdT!o~NPfB92qG7F z+)Fe(Wdjs9#_9y5WCmP)&n}!NX2}WGBw+=JiYC^#c$;n@L2V+Zw!@&*^l+8htDjn>&*m$V@Y~P_ z>EyW=sj=ko!SBbZUIquDY|)4HB_rGsa*k0oTS$To+gz&jFj}&=%AYJR-2ij=)QytXl72Q z4KljovGc;>sEu%?_4@*_u5S*4;%3L0%i586s&-rp>E*BS7uKWntSKGF;-$RpQ}fb> z(A<$439QmhZ0WT@vq5BvvC?~fcK>)N#@zu6ZZ8m#N<_mo25viWievkY%7J_rw>K2u zjWM&N)7$&^cSdvq;Ln=o&+9-4+}>^E?uweqz^0dqY?Q&}ApUeN6$brjuqy|Ztud66 zo~Il<9FL76xnS-nyZah3IT z`dI3-YS-dl#P!Y-$giw`dk+?;wjln0_aJLGEJP?A5}?ZA-P{5a`4Ss>9R6yZ+cFFk zCWpU$7z`_ZXd1dqAzqfPVVJ`|W@YX0!+Wh};-fFIsz`2JTbCG=jqU-d9XG?c;LvN5 zepYmZtArOA09%<^z)5$m-tZ<27%K%=ij1zDDl=@OX)|h~WwHKn2kjC_#m&@Xb*W;D z!gJ?0u?4y_hsix(IrPOM8T!51E--mx5x%u>S^-!CT zWf#O!*vl^I%8@SCk&F2_H^tioD=l)fy_dSP;g|{&*p^C=be_8+nyy3J zO45x7cPb**4qBcV{*1#@YgAW4TQf~n8B0XyXJ z5M$1{oY}Pi&&ZW@WQmOM35jv6%S?p)ae=w<39A4Xw!#7f;YmS>(6ba-Le}H2wSB6n z#>L>8^*NSS1sdL#b1oy7x(BrwLeSQvfay(^Ix9K1-<;#`CRxdV+@iJ}iHB-zFtN(0 z_|d){$Ju2f4XU7a#P#%u&_gmDxuILjBbr!tOcVjt@C5NR9bpFCyM4whZk}HM z8E0M$Ks^mF3W^{Iwb+%^6X}7{+4o(%HRQW$xX!ZwZRPO_#-mA^NGVcibL?WtgoET8 zzYJmasX$NJOoQyR658Z=!-Gs&2KUDsKOkJ2#aFeqg1F-~ z=Mx2ZR6T{YCA2j6zY?>6Hr0pU@{MTzxc{ioP%)5bI^v6gR+?(k{dqoqoET9%WaocH zR0jA%iV(>~Nv2P?XzUyt6i%*C>E!RUz)o z>?p_&91L^Vaw4UFzJJFN8z2Gt=OrpedYU^LdAeR(+^TWH9+y{S>2;4+8LJ^`n#)zT zCQ24TY~*Zf#rGU{V~p7w{9r3VgG-`Yq(g$;S$74rIByQ`U`e>Ps~n+f&ip6-;}Q?N zkug_i16PxUwd;(!1f&kX&!VvEYBhNh7^_dng`OK0Wy@r>ljzn&^kL_A^Ww4Uh%aWn zdrfM_%B`Ph;g`ONZAWhr{(mf;WmJ^!*M;ek9FUe7LQp_zXof~4EW)6qK|)HpTR<8V zl};7?iG-liDItv@C8fZCbeF_?=D*&rE*CY=bKmFev-fq3UuB7wn{3|w{OEq2ZiwIH zPKG?>`7USGIfT`WN^iaJ#bi57(|Ep4`<<{!*0~Q>9ovuEwbtLy3n7XR#mWh;>?O+X zgO)qOCXlczqL^4s@;5O^17J?3O6~KMNqtER8gVRn^WVy}T#I6Lq;sj#zRSPu83#-P zc=6M!)>5TLMYe`Q2#G7EUl@+(PO4nUpTbWKK4yG-SDs`8*Kwzmlg?L8B$rE`5S*_I zmyqYxCKCgqwpFJC=Q@(dy)o_8;4eL4dSMm9JTkKTODMrUa$9|>^X9Y;57bS3NYSP{ zgOBqquC+JGKOrNog2cKVXRE7C^s*EL2MV*!jr9J7=3uAyYmM?p3mg4hcgHaCMUo5z zos1%9H=Qgs9`fRK{KCrO2DzYkb?1!>FNGDp%}qJ+y`mTE+dV;pWux8JeXn_!rUI;RGy~td;GU5FI#x~ zgktiT9q@H_J)I!m+@THG12=zD89n2F_~iLuqbN%#O?FKN%VoZ}rqHxQolflZnXmUGHB35L7%Q8GwHC=}L^EB2#N;bxh=zlbNGv7T&n&O`Vy^l{bg|!XYL$v)A%nQSs05j$yjR7R**D5W{BhJ z@YSD#J(;Et#}d6ZQSG}|JuSRF`Uue^5X#%`_tD#+$MBq(a3^?|k1myu>gZdTM>~Xs zN+z%oyQQcNF&B^YZDw#D2riin{e#DSx^#MUbo8e4@QnDo9GwzbvKaVIg~ZnF84uTb z$qz|aS$}wdI;a;y@lTbteYf+rQQFwOu9pzw)U@b7{&7>pUgw)&*UVbA#WYlt?@8y_ zhBP!AifpLT<%hvEsDP}H!x3h%q!vu6vR2>mZDm{HGIoDmM&3(&Bne(z&woKfs|PB9 z<~ARNz%%@dL)+%kY-@ciMBe4xIth`uI^AtT z>j5r!S+>5-<@L)?ZP-Izj!~0jQjYK8V~QIWe1A=hY6PDTv@F+lA4DAzwnqj2zVPSF zj!mq_H&jB6gY}mLAt#FYsKf5n0MqQ*+Bkg+$+MoXGCCr8PJNHYD71?ukIv(8yt(nB z4p_P3yp>MZNtf4hM_2fiF3SXg_-NnXC)v;k#lliSMuumd|NgKnde=Zt+ONNu3z^5> z?CM{A`jI>?Us&Rw`h)<)#7Haw~F|&(- zAicixJce9&MV}D!tG8E;3X}}@xD@vF9ZD4p8ny?^Ia1iWIMl;q@aW86$^AlEq>s1!r(9} z`lx*<^hyG4w6jTxG&S0T>g3*XoK3j*{rwgP#zF%t`JtPJF9I)umu0cKF_!`Ti0a5# zj%x97&~}fstU-@pM{LsyR9%^-sx46}Z_-YF7thi$GQL^H& z=fDi^%P;3a8h1R=O!nF0xv%h#7b$R03Muy?8Oel5-GzZC_Q4JPt6Lu9=?~d~UHEbJYn;>xA^?EU&B;&7>+G&e4Bu zG7*2Lx9!{IHS-Cfj(VE0i*+ympZ`@bXv6;)E9fPS%~6Nj$_ z3^CGrnWUObRz^H0HN}_deJvr5uGc6gg3gc0`*ZArMO~KZ`1_i4G4%t*2<))frE!rGGnr3(D`oVdO$Bo5rf2{o2;f?j70FWaKSQ)Cj_}cA1lQ zmziwtZBNr4919;-3&_`OUYR9v=oBaGcXz8f;!O)i$T@4hH)*7j7R@9Mbq|3Q#Z@lp zjSfF}m($&?g5oAy0{7(iz2%vN&?Ja0jHIVUjXYMgD_?^{u!{oY%VzAo-9u3BEcHX6 z{1P*`Sc^s&<{2I`oRA!I9Cnc~m4_|=sqCit!Q|-$4y%td&R&N-0YCl0J*vmiQ*<{C zKb9ff?FE0RB*tnle9yKqgwU^?N7})?pg0f|#m{C7*V9_Dc)-)(kARz`POIP<5GLQq zzm?kyt$WFf%N@@l&oQ*u`y8>7&Q__dc=)>4QeyQF+>)PjqGcN$iRY;Ub3xj9(B+ex z$sy+@ILL_{=V*WUzMlznWmT8-)Sw|a=66uy4^+`3gU0lOxU^GEXRaLZij@psIDMCq z^a`kjYZY3L^>*o(^6_=$KOWpK9?)ceWRw;YnwIlKj=>c1Ohe(>&)Zkpj}v6s?4zWR zBNNY$pL)^l=8~5Zk87oruQ-2`8D36Q*h?J_w|VK{g%LJ_IK3w~`d4Ea_nFVpjP2YD zxQ(uECm!xGZe8k(5KZb&*ilH--@q$r@xlg)$_Q0`2}*Wg+Om_FE1|}FE26&lmp=rNgMTP zTR_GxT|e2Um&iM1UZtnzW`>^Q+d}AmU>cSsY{<<;eOORo8?D3TQrqr?_U?oEjm@g9 znj|>Vc$?YSFKgCw03@L}7R52Awu?$ff_LBcT3k|KeMF+tCAAymQk!;gzu z{cj5_sdOarYLz$37n0`QNh$J2J|no4lci{*tfJw+Vl680Y~^uyGa|fa%3y$r0pU#{ zXFiyNu^<}gE7EkcNC%Ncm*)xhI1u~3>#WqyzZ1Gq!H^=OkUu1US?b@cEJchLK-iD`vZO-v=z@1!+{+>+i^O)(y zs%x9&4kN{LPeqBzc!vc`Y+0}YeAW+FH{?Tk|Lw247=LIvD?lc>+q7T8-F)SrR00La zXX8t(eE^OeL~YuF*LsI$n~)@~3~tb|4I(NBTmDBZxm}>^QH{g=CftW;xs(r~T--)x zC1O93pbSZq$cxnGBO8|(I{DMRq zH=_E(-oZLXe)q72J>;~e+&lLK?AUjB=HXV4uWHXG@_ka*dH=H?%Q#5)lDNUXzQnk| zK#mGA_6legm0Qxfw1hMel@A%=%@9LH1jvA!8yO{iqm)CrUiGb*0?bV;7);AQkqx{R z&H==bO>N(m2B0>F?wrGYg_AkNL(qFz)W;pfIFGx85<24+e?cx^*XuPA=TOyxNqg(3 zwWcWj(JmjVv9Ym;IiY2Z{u7x`=*7`8?p5-&dv6ii+d={geV3WP{vfRT2!E$G)SEYN z#;!HVy7&IKteZKy&qeQ3J40NguR);wSA_{2US98_3`wWHYu%x#Zj@b6z4l>?aA)Qh zxewBjumio_^9jO0t=&(64aO#^1T0h6ay(8!R6^yMFy_tU}_r@d8p`PaR zNi? zdTj`FKD453ToNM>OTEMIa8?>}(bW>E@DnfyumoTxRv1}l1@6IEjF&Y{M{tFZ0uyH= z^#oFUvqJ~rTM0cVvS-}9m=vXe1*n|`t>d;mJ79*I{4BO%`>nHA^Y48alswy7vg4N4 zASyN}%h!nr;=2pL%)EE}`UBd>x1d_-Q1%#lTWuO&1AcgqkH4lE`F6Mk1U?L*&M8NS zKl{&&c{n*WRdb}aJ2^z>9mLunjvRjLykv)*uX(*C3Sa(Zz6u(xZmvj%WOp>46%V!r z-B)TL@5slz76Jz&k5jR;p@7fQeZ2rlO3FG!BuCuEBHjMSpj=2r@!N1SO3Vd>?EMHT zr3ZNRZwY6O-h)4FkW6{U87UsY?m(k1WJh(Ov2i3TEWpzTWM;3diA*@f)Om+ztHh+mdS5~qr@)EA>%aaf}1-`FDYa+QMp*oVJB&2mH$ zHKpP&oIwfdB>tp_ex?ullhI^T#{Ri-bIdp(1cmeTL0|FkE{578a4|0mW%^-gP}t|0 z{!liZOWznp_8gxC!O34B?Y10$Nf>XgrMe*TH1kpduJ5N@;{&{Oc-wRUtP0i7&HxZq zxkBGXQ?Es#e7Q+^*E+#sF`RwH8kmfQicFF*r4$3E?F1k|ht1ndxEfH+ve;zQebtC7xL5Ex|X8qvc0fNdSh!|IRijcD6a>M4ukc*y0750;%)z+ z_zJKqbN4I@g**n}sM1vqQ#d42QV$+e-4WVmHS@)&gxGxRK)a?tB01 zJ1hx4oM$fR|4$rE>3D+<#-h5L+lg4PzzU}RfZ<5xi- z<)=Yo>iGDGUx>lkJ)L;6KT>RQrSn739VKu*)Z9Qxxzv-9KNJuZ9k8&rgV^!p>8N{B zlfftbT*^QNx4Cotzw}VGsJ!K+M+_-eam2G_3mze19cm=b5(eZ?J^`yRkj<9q3>~RN zbzu_Qs&$Dad2fr_{k1aW3U3H9b5q3wOh-pc#{bYAD{Br9d*q$sV1&EdVn5fBy@&!a zmCQyX)IUO-H{gSz!20~$U5e16Bp{x!IY)$czP558Kp29f#}V+UEIFOJs(5NiL_ z=Ng_6+Tl1f$Sy31OEHH7r$7Iq?14QyF^)7waht84gO%0rT}%UG_QEeJNMWm6$ae6! z4`f1=Bjb-Kh6j5z_}mk>B)8-@WmJ>_pCpTZ8u+HKX|ZaM(H!-R+)9(0Ve_UEj6=e0 zIxk2;v5gq>2ebMgm;U$yr-Mej?o`p2#la8e@78i`CkEoxKn9^Awu8Npbs%-K9ESx( zMMbgcH-G%nGrc{;)rR$+hRK}lwOKx)m7CyIkij-%Wd{v&l!-fddzrsSap}3!kBh%< z>N8G3R{ShD-z5vEar@vubp#IikhT#&e!v5Po3!b*GC#`Limqsy-cvMOuxG3)Mo-* z3a`B%r!#d>F9!Nm6Yfyfme~zl;KUsZK3C`20vsB4VP=DDu`5 z#ZL|+!qpa*UY{;qx-@nzH$Tu{?cD@nTg1t$g7(0`!0Tq7`&okF7-6rD*|UwiBAk>} z6hXFQeQN*Yh2+UEfa|bJ=C#L{vkRSYE0me09dwwW72jHE%WM@h z?UD1=BDkzrOI6-)4JKHh9yQHL6MBQMQ^QCVwxS1bsXYja47EeCgwvKnf3kAr>}FR& zsHbhm)_S?f7n_!!Z!=iMzlyw=M-(dKLrO%*#mDzFg-kz#UdsGKVWp0BUVwS|XXc&| zZ?$XJDkrE64Z)CHV-keytmG!nrj&bp-(SCT3FeY<#_@Y`V#kv)$y5)sKiJn?5MZ$4 zqp>Lz6L`I5yedSloEIkQ2T%0XUUWZOBn3{jukRf9B}K(4K3ZG7YjU1Tb7k92Cb@~g z2zlFl)3~GamN(xfeE5|uwV|++!HuQ0iSZ{uIPTxP!ErR(F-ETT;%;)tStjfxcmW^r@0;in5SPF`IA?B&ErVFITdizoQx!DE;nOnASvAQ$2W!xb z{Jm0qKdR7>DSsWh@z=Fairo^%-EV~sA1IqzAsYiSm4c@ZX3jv|*QB}NkGLtj;T=f* zrv~~H^UAe(lYs7%geO0esZPV!+FZBJrWi%!|K=6G@p zb-1irqFCd8@L`vkW}9DuQueh;0m`T=sk|N71V_?75Y49xB(x`(vZIVGH7@N@)!!%% zN8a3!?q384Fpp9_=i>TO5{p=h%jsiN zrtV1!guwcv2ks^mJFux{yrQ>a} zhLS;azWai#0M%`GhPTBto1UEBQm+2%VO$oUF^t(!12zv)m+XgpTgVA7F}F?QBbD#+ zF>OR@QdsO*8zg)?lCMUL9RytI`>=o)r(BAE#qI)!;58np2ikcc2e5*iZe4ZswM10 zNrd&R4|T34e)+*497E#;qO+{-6-n$>P=IQAH$~9J4u&RpPeY(!35@-D9gMx&_3jH= zH8iFj3sCKj$Kkg$e9V7Ry}6h`_}wE)g_)K0`bZ~Ow5`9}e^0i_#m4ysz|*SniOhl8 z;Ys`y=p&=AH%r|*$btrtj^@WdK_dEQE#CJFyi!gwh6f?YKsm!5X7SRceg2Im#Z%q`j?$QTz+IW0d7%O zK1-30404YQ3!99u;((KSK`a^RXdt}(k$#QCj!JR%Vr#$$($($M#$Z=hSM?igz532x zJT;WH+6_M=KOcjKlJ&jW#0!&D%HeoJ=g@XT#Tl3CyU2=j;8F)SnH0lwmwd)Rr7RF?9KO8`}=E-NThzWrt zbCc#ZP(FWx4r(%*}5q9aZt2xUeX};8a!Ot3K^>?$0S+Jt-wFvSDKu z(FogU2o%wITYr@vo`-bgO2RzMLYH7XUWn>f^W