Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix to correctly parse denoms with slashes in the base denom #1451

Conversation

crodriguezvega
Copy link
Contributor

Description

closes: #1446


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)
  • Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
  • Code follows the module structure standards.
  • Wrote unit and integration tests
  • Updated relevant documentation (docs/) or specification (x/<module>/spec/)
  • Added relevant godoc comments.
  • 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

@codecov-commenter
Copy link

codecov-commenter commented May 27, 2022

Codecov Report

Merging #1451 (58d1133) into main (da232b8) will increase coverage by 0.02%.
The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1451      +/-   ##
==========================================
+ Coverage   80.27%   80.29%   +0.02%     
==========================================
  Files         166      166              
  Lines       12252    12269      +17     
==========================================
+ Hits         9835     9852      +17     
  Misses       1954     1954              
  Partials      463      463              
Impacted Files Coverage Δ
modules/apps/transfer/types/trace.go 90.08% <100.00%> (+1.62%) ⬆️

Copy link

@danburck danburck left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, LGTM!

@AdityaSripal
Copy link
Member

Let's manually test the following:

  • Sending slashed coins works
  • Receiving slashed coins works, verify trace and base_denom is as expected
  • (ideally but maybe not super necessary) receive to a third chain verify trace and base_denom is as expected
  • Unwind token path completely and check that we get back the original token

We should also test a packet refund, I think the second chain will be most relevant here

Copy link
Contributor

@fedekunze fedekunze left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add the 2 denom examples (gamm/pool/1 and erc20/0x85bcBCd7e79Ec36f4fBBDc54F90C643d921151AA) to TestValidatePrefixedDenom and TestDenomTrace_Validate just to make sure it won't fail elsewhere?

@crodriguezvega
Copy link
Contributor Author

I've been doing some manual testing, so I just want to report back the results so far... I have tested 2 scenarios so far:

Scenario 1

Setup of 2 chains:

I setup the transfer channel between both chains and I try to send 100erc20/0x85bcBCd7e79Ec36f4fBBDc54F90C643d921151AA from an account on chain1 to an account on chain2. The transfer succeeds and denom-trace and denom-hash CLI commands return the expected output on chain2:

> simd q ibc-transfer denom-trace C1D5D3AE1B5C9C9778DF7E8972352937B52C8E97C66505FF6639ED12BD9E8084
denom_trace:
  base_denom: erc20/0x85bcBCd7e79Ec36f4fBBDc54F90C643d921151AA
  path: transfer/channel-0
> simd q ibc-transfer denom-hash transfer/channel-0/erc20/0x85bcBCd7e79Ec36f4fBBDc54F90C643d921151AA
hash: C1D5D3AE1B5C9C9778DF7E8972352937B52C8E97C66505FF6639ED12BD9E8084

Scenario 2

Setup of 2 chains:

I setup the transfer channel between both chains and I try to send 100erc20/0x85bcBCd7e79Ec36f4fBBDc54F90C643d921151AA from an account on chain1 to an account on chain2. The transfer fails:

{
  "type":"fungible_token_packet",
  "attributes":[
     {
        "key":"module",
        "value":"transfer"
     },
     {
        "key":"sender",
        "value":"cosmos1sc3r6elp0vh8qftt55kr9qawrwe6xq6qsl74xx"
     },
     {
        "key":"receiver",
        "value":"cosmos1qufuxgutlt0skpccyxlzmwtmvge0ccfrl96l80"
     },
     {
        "key":"denom",
        "value":"erc20/0x85bcBCd7e79Ec36f4fBBDc54F90C643d921151AA"
     },
     {
        "key":"amount",
        "value":"100"
     },
     {
        "key":"acknowledgement",
        "value":"error:\"ABCI code: 1: error handling packet on destination chain: see events for details\" "
     },
     {
        "key":"error",
        "value":"ABCI code: 1: error handling packet on destination chain: see events for details"
     }
  ]
}

The error message is actually not very useful and I think there is nothing else in the events to give more information about what went wrong. But I suspect that the problem is the following (since chain2 is running the code from main without this fix):

In the OnRecvPacket callback there is a validation of the data in the FungibleTokenPacketData. The last step of this validation calls ValidatePrefixedDenom with the denom erc20/0x85bcBCd7e79Ec36f4fBBDc54F90C643d921151AA. Inside ValidatePrefixedDenom the last step is to validate the trace identifiers. The input to validateTraceIdentifiers is going to be a string slice with only the element erc20. And then inside validateTraceIdentifiers I think an error is returned because len(identifiers)%2 != 0.

So I am afraid that for IBC transfers of coins with slashed denoms to succeed we are going to need to have this fix deployed as well in all the counterparty chains.

@crodriguezvega crodriguezvega marked this pull request as ready for review June 3, 2022 10:14
Copy link
Contributor

@fedekunze fedekunze left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, pending changelog entry

modules/apps/transfer/types/trace.go Outdated Show resolved Hide resolved
Copy link
Member

@damiannolan damiannolan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to go, I just left some nits and a quick question! Thanks 🙏

modules/apps/transfer/types/trace.go Outdated Show resolved Hide resolved
modules/apps/transfer/types/trace.go Outdated Show resolved Hide resolved
modules/apps/transfer/types/trace.go Outdated Show resolved Hide resolved
modules/apps/transfer/types/trace.go Outdated Show resolved Hide resolved
modules/apps/transfer/types/trace_test.go Show resolved Hide resolved
@AdityaSripal
Copy link
Member

In the OnRecvPacket callback there is a validation of the data in the FungibleTokenPacketData. The last step of this validation calls ValidatePrefixedDenom with the denom erc20/0x85bcBCd7e79Ec36f4fBBDc54F90C643d921151AA. Inside ValidatePrefixedDenom the last step is to validate the trace identifiers. The input to validateTraceIdentifiers is going to be a string slice with only the element erc20. And then inside validateTraceIdentifiers I think an error is returned because len(identifiers)%2 != 0.

Yes in order for this fix to work correctly both sides must have the updated code.

Otherwise we enter into different scenarios depending on the denomination passed in:

  1. If we have an even split like erc20/0x85bcBCd7e79Ec36f4fBBDc54F90C643d921151AA

Then we will fail as described by @crodriguezvega at packet data validation. The receiving chain will write an error ack, and then the sending chain will simply refund to the sender. This is not a bad outcome.

  1. If we have an odd split like gamm/pool/1

Then we will pass packet validation but the token will be issued on the receiving chain with BaseDenom: 1 and Trace: gamm/pool which is incorrect. The internal representation of the token would then be ibc/hash{gamm/pool/1}

This is not ideal for the receiving chain since it may mess with client UX but it isn't catastrophic.

When the chains get moved back to the original sender, since it is updated it will recognize that gamm/pool/1 is the base denom and appropriately unescrow funds.

When the funds go to other receiving chains, if they have the updated code then they will generate the trace and base denom correctly. If the other receiving chains don't have the update, they will also include gamm/pool to the end of the trace and have 1 in the base denom.

We should decide how to deal with the second scenario.

One option is to simply allow it and have some chains temporarily have the wrong trace information on their chains. This will only affect internal representations and users of that chain by giving them poor UX.

We can try to prevent slashed denoms from being received on chains that do not have this update. There is no great way to do this apart from creating middleware filters on updated sending chain that explicitly permission approved receiver chains that are known to have the update. This middleware can be added to until it is no longer necessary and can be removed. This would be an annoying mechanism to deal with, but is the cleanest one I can think of if we want to be very strict and avoid the problem all together.

@fedekunze
Copy link
Contributor

We should decide how to deal with the second scenario.

@AdityaSripal IMO there should be an upgrade migration logic so that the denom hash is updated everywhere

@AdityaSripal
Copy link
Member

AdityaSripal commented Jun 8, 2022

IMO there should be an upgrade migration logic so that the denom hash is updated everywhere

Not sure I understand the proposal. Is the proposal that we allow slashed denoms to enter into all chains as is, and then once the upgrade happens on each chain we run migration logic to fix the traces?

The denom hashes shouldn't be an issue, since they are going to hash the full denom path regardless.

The issue is the hash -> trace mapping on the receiving chains that don't upgrade. We'll have to iterate over all of the traces and fix them. That seems plausible to me, but will be a decent size migration

@crodriguezvega
Copy link
Contributor Author

Running chain1 with the fix and chain2 without it, I tested as well with denom gamm/pool/1 but the transfer fails on the receiving chain here because pool has fewer than 8 characters...

So I tried with denom gamm/poolpoolpool/1 to able to pass that validation and the transfer succeeded and on the receiving chain I can query for the denom trace and get the following:

denom_traces:
- base_denom: "1"
  path: transfer/channel-0/gamm/poolpoolpool

I can transfer the tokens back to the sending chain and the denom is correctly unwinded.

@AdityaSripal
Copy link
Member

Great, thanks @crodriguezvega! So we can confirm the different behavior.

Since it gets correctly unwinded at the source and the trace information is purely local this isn't a critical issue.

I would say that we should release, and as Fede says, we should have a migration script that will update the trace information on receiver chains once they upgrade. Perhaps we can have that at some point after with one of the upcoming releases since it is more of a UX fix.

Note that in the interim we will have to live with the wrong trace information living on unupgraded receiver chains when they receive slashed denoms.

It looks to me like @fedekunze usecase of: erc20/{coin} will not be receivable anyway until the counterparty also upgrades so it is not as relevant an issue in evmos case

crodriguezvega and others added 4 commits June 12, 2022 22:23
* 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 <crodveg@gmail.com>
@crodriguezvega crodriguezvega merged commit 3a235af into main Jun 14, 2022
@crodriguezvega crodriguezvega deleted the carlos/1446-bugtransfer-cannot-send-namespaced-ibc-denom-using-slashes branch June 14, 2022 11:19
mergify bot pushed a commit that referenced this pull request Jun 14, 2022
* 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 <crodveg@gmail.com>

* rename migration file

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
(cherry picked from commit 3a235af)

# Conflicts:
#	CHANGELOG.md
mergify bot pushed a commit that referenced this pull request Jun 14, 2022
* 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 <crodveg@gmail.com>

* rename migration file

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
(cherry picked from commit 3a235af)

# Conflicts:
#	CHANGELOG.md
mergify bot pushed a commit that referenced this pull request Jun 14, 2022
* 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 <crodveg@gmail.com>

* rename migration file

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
(cherry picked from commit 3a235af)

# Conflicts:
#	CHANGELOG.md
crodriguezvega added a commit that referenced this pull request Jun 14, 2022
…#1451) (#1534)

* 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 <crodveg@gmail.com>

* rename migration file

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
(cherry picked from commit 3a235af)

# Conflicts:
#	CHANGELOG.md

* fix conflict

* fix conflict

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
crodriguezvega added a commit that referenced this pull request Jun 14, 2022
…#1451) (#1535)

* 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 <crodveg@gmail.com>

* rename migration file

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
(cherry picked from commit 3a235af)

# Conflicts:
#	CHANGELOG.md

* fix conflict

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
crodriguezvega added a commit that referenced this pull request Jun 14, 2022
…#1451) (#1536)

* 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 <crodveg@gmail.com>

* rename migration file

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
(cherry picked from commit 3a235af)

# Conflicts:
#	CHANGELOG.md

* fix conflict

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Comment on lines +84 to +86
if i < length-1 && length > 2 && fullDenomItems[i] == PortID {
path = append(path, fullDenomItems[i], fullDenomItems[i+1])
} else {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work @crodriguezvega! It should be noted this introduces undocumented changes. Specifically the usage of PortID. ICS20 does not specify the PortID that should be used for the transfer channel. See specification callbacks. This is also true in our code. This code now assumes the PortID to be transfer. This should be enforced (in channel handshakes) if this the intended behaviour

I'm unaware of any chains which have changed the portID, but last I checked, Agoric used a modified portID in testing

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like it might be a problem with chains running wasm:

In order to enable IBC communication, a contract must expose the following 6 entry points. Upon detecting such an "IBC-Enabled" contract, the [x/wasm runtime](https://github.com/CosmWasm/wasmd) will automatically bind a port for this contract (wasm.<contract-address>), which allows a relayer to create channels between this contract and another chain. Once channels are created, the contract will process all packets and receipts.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice catch @colin-axner ! Unfortunately without a standardized port, it's impossible to correctly differentiate between what is trace info and what is the base denom. Since the trace is largely internal information for a chain and will not affect correctness, I think we can live with the fact that non-standard ports and their subsequent traces will be part of the base denom.

Reiterating for future viewers that this will not affect correctness of the protocol. But when querying trace information, any nonstandard trace will be in the base denom

ellie4x pushed a commit to Carina-labs/ibc-go that referenced this pull request Sep 14, 2022
…cosmos#1451) (cosmos#1536)

* fix to correctly parse denoms with slashes in the base denom (cosmos#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 (cosmos#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 <crodveg@gmail.com>

* rename migration file

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
(cherry picked from commit 3a235af)

# Conflicts:
#	CHANGELOG.md

* fix conflict

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
liorzilp added a commit to dymensionxyz/ibc-go that referenced this pull request Jan 4, 2023
* override default docsBranch (cosmos#1355) (cosmos#1390)

## Description

closes: cosmos#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/<module>/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

(cherry picked from commit 2709c24)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.3 to 0.45.4 (cosmos#1300) (cosmos#1365)

* 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](cosmos/cosmos-sdk@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] <support@github.com>

* 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 <carlos@interchain.io>
(cherry picked from commit bd08650)

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

* add empty keepers checking in ibc NewKeeper (backport cosmos#1284) (cosmos#1382)

* add empty keepers checking in ibc NewKeeper (cosmos#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>
(cherry picked from commit f2577f9)

# Conflicts:
#	CHANGELOG.md

* fix conflict

* fix conflict

Co-authored-by: khanh <50263489+catShaark@users.noreply.github.com>
Co-authored-by: crodriguezvega <carlos@interchain.io>

* fix: prefix ResponseResultType enum for proto linting (cosmos#1143) (cosmos#1393)

(cherry picked from commit 5cf580c)

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* chore : add selected channel version to MsgChanOpenInitResponse and MsgChanOpenTryResponse (backport cosmos#1279) (cosmos#1374)

* chore : add selected channel version to MsgChanOpenInitResponse and MsgChanOpenTryResponse (cosmos#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/<module>/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: cosmos#1204
(cherry picked from commit a187803)

# Conflicts:
#	CHANGELOG.md
#	modules/core/04-channel/types/tx.pb.go

* fix conflict

* regenerate proto file

* go mod tidy

Co-authored-by: vuong <56973102+nguyenvuong1122000@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* feat: Add sender to fungible_token_packet events (backport cosmos#1414) (cosmos#1427)

* Add Sender to funginble_token_packet events

(cherry picked from commit f05a7cf)

* chore: Updated CHANGELOG.md

(cherry picked from commit c809c51)

# Conflicts:
#	CHANGELOG.md

* Update CHANGELOG.md

(cherry picked from commit d8be3d0)

# Conflicts:
#	CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: Damian Nolan <damiannolan@gmail.com>
(cherry picked from commit 46d73a0)

# Conflicts:
#	CHANGELOG.md

* fix conflicts

Co-authored-by: chatton <cianhatton@gmail.com>
Co-authored-by: Cian Hatton <cian@interchain.io>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* add swagger for interchain accounts (cosmos#1402) (cosmos#1411)

## 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/<module>/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

(cherry picked from commit bf444a6)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* add actual parameter example to denom-trace and denom-hash CLI queries (backport cosmos#1442) (cosmos#1463)

* add actual parameter example to denom-trace and denom-hash CLI queries (cosmos#1442)

(cherry picked from commit 8062d01)

# Conflicts:
#	modules/apps/transfer/client/cli/query.go

* fix conflict

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* Emit channel close event on ordered channel close (backport cosmos#1464) (cosmos#1476)

* Emit channel close event on ordered channel close (cosmos#1464)

(cherry picked from commit 9ed5ca4)

# Conflicts:
#	CHANGELOG.md

* fix conflict

Co-authored-by: Cian Hatton <cian@interchain.io>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* backport cosmos#1416 (cosmos#1496)

Co-authored-by: Cian Hatton <cian@interchain.io>

* chore: improve DenomTrace grpc (backport cosmos#1342) (cosmos#1504)

* chore: improve DenomTrace grpc (cosmos#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 <carlos@interchain.io>

* Update modules/apps/transfer/keeper/grpc_query_test.go

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* Update CHANGELOG.md

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* use TrimPrefix() in DenomTrace()

* update migration doc

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>
(cherry picked from commit 23e7e7d)

# Conflicts:
#	CHANGELOG.md
#	docs/ibc/proto-docs.md
#	docs/migrations/v3-to-v4.md
#	modules/apps/transfer/client/cli/query.go

* fix conflicts

Co-authored-by: khanh <50263489+catShaark@users.noreply.github.com>
Co-authored-by: crodriguezvega <carlos@interchain.io>

* Emit an event to indicate a successful acknowledgement in the ICA module (backport cosmos#1466) (cosmos#1509)

* Emit an event to indicate a successful acknowledgement in the ICA module (cosmos#1466)

(cherry picked from commit b2ca193)

# Conflicts:
#	modules/apps/27-interchain-accounts/host/keeper/events.go

* fix conflicts

Co-authored-by: Cian Hatton <cian@interchain.io>
Co-authored-by: crodriguezvega <carlos@interchain.io>

* chore: Add consensus state heights query (backport cosmos#1336) (cosmos#1507)

* chore: Add consensus state heights query (cosmos#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 <damiannolan@gmail.com>

* Update modules/core/02-client/client/cli/query.go

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* Update modules/core/02-client/client/cli/query.go

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* Update modules/core/02-client/client/cli/query.go

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* 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 <seantking@users.noreply.github.com>

* Update modules/core/02-client/keeper/grpc_query_test.go

Co-authored-by: Sean King <seantking@users.noreply.github.com>

* Update modules/core/02-client/keeper/grpc_query_test.go

Co-authored-by: Sean King <seantking@users.noreply.github.com>

* Update modules/core/02-client/keeper/grpc_query_test.go

Co-authored-by: Sean King <seantking@users.noreply.github.com>

* Update modules/core/02-client/client/cli/query.go

Co-authored-by: Sean King <seantking@users.noreply.github.com>

* Update modules/core/02-client/keeper/grpc_query_test.go

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* 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 <damiannolan@gmail.com>

* nit

Co-authored-by: Damian Nolan <damiannolan@gmail.com>
Co-authored-by: Sean King <seantking@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: vuong <56973102+vuong177@users.noreply.github.com>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
(cherry picked from commit 042d818)

# Conflicts:
#	CHANGELOG.md
#	docs/client/swagger-ui/swagger.yaml

* fix conflicts and change gRPC web route to consensus_state/{client_id}/heights

Co-authored-by: khanh <50263489+catShaark@users.noreply.github.com>
Co-authored-by: crodriguezvega <carlos@interchain.io>

* fix: deprecate AllowUpdateAfter...check (backport cosmos#1511) (cosmos#1521)

* fix: deprecate AllowUpdateAfter...check (cosmos#1511)

* fix: deprecate AllowUpdateAfter...check

* update IsMatchingClientState

* rm unnecessary fields in testing

(cherry picked from commit 5e5e2cd)

# Conflicts:
#	CHANGELOG.md

* fix conflicts

* Update CHANGELOG.md

* Update adr-026-ibc-client-recovery-mechanisms.md

Co-authored-by: Charly <charly@interchain.berlin>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* fix to correctly parse denoms with slashes in the base denom (backport cosmos#1451) (cosmos#1536)

* fix to correctly parse denoms with slashes in the base denom (cosmos#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 (cosmos#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 <crodveg@gmail.com>

* rename migration file

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
(cherry picked from commit 3a235af)

# Conflicts:
#	CHANGELOG.md

* fix conflict

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md

* feat: added check for wildcard * to allow all message types (cosmos#1512) (cosmos#1537)

* added check for wildcard * to allow all message types

* update docs

* nit

(cherry picked from commit 08d91ad)

Co-authored-by: Charly <charly@interchain.berlin>

* Update versions

* Update config.js

* Delete v3-to-v4.md

* build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.4 to 0.45.5 (backport cosmos#1525) (cosmos#1547)

* build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.4 to 0.45.5 (cosmos#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](cosmos/cosmos-sdk@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] <support@github.com>

* 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 <damiannolan@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
(cherry picked from commit 681a558)

# Conflicts:
#	CHANGELOG.md

* fix conflicts

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* add migration for base denoms with slashes to docs site (cosmos#1544) (cosmos#1557)

## 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/<module>/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

(cherry picked from commit 6c034bc)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* docs: add upgrade client proposal event (cosmos#1596) (cosmos#1635)

(cherry picked from commit 41282c7)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* feat: emitting an event when handling a client upgrade proposal (backport cosmos#1570) (cosmos#1594)

* feat: emitting an event when handling a client upgrade proposal (cosmos#1570)

* feat: emitting an event when handling a client upgrade proposal

* refactor: only emit event if err is nil

* refactor: idiotmatic go:

(cherry picked from commit 8422d0c)

# Conflicts:
#	CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: Sean King <seantking@users.noreply.github.com>

* deps: bumping go version 1.18 (backport cosmos#1627) (cosmos#1656)

* deps: bumping go version 1.18 (cosmos#1627)

* bumping go version 1.18

* updating broken workflow setup

(cherry picked from commit 7d971ec)

# Conflicts:
#	.github/workflows/test.yml
#	Dockerfile
#	go.sum

* fixing merge conflicts

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.5 to 0.45.6 (backport cosmos#1615) (cosmos#1658)

* build(deps): bump github.com/cosmos/cosmos-sdk from 0.45.5 to 0.45.6 (cosmos#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](cosmos/cosmos-sdk@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] <support@github.com>

* 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 <carlos@interchain.io>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
(cherry picked from commit e049649)

# Conflicts:
#	.github/workflows/codeql-analysis.yml
#	CHANGELOG.md

* fixing conflicts in changelog.md

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

* Update CHANGELOG.md

* fix typo

* chore: denom traces migration handler (backport cosmos#1680) (cosmos#1754)

* chore: denom traces migration handler (cosmos#1680)

* update code & test

* register migrator service

(cherry picked from commit be5ccf3)

# Conflicts:
#	CHANGELOG.md
#	docs/migrations/support-denoms-with-slashes.md
#	docs/migrations/v3-to-v4.md
#	modules/apps/transfer/types/trace.go

* fix conflicts

* fix go version package

* put back entry that got removed by mistake

Co-authored-by: Charly <charly@interchain.berlin>
Co-authored-by: crodriguezvega <carlos@interchain.io>

* feat: allow governance to update the TrustingPeriod of the 07-tendermint light client (backport cosmos#1713) (cosmos#1761)

* feat: allow governance to update the TrustingPeriod of the 07-tendermint light client (cosmos#1713)

* initial commit

* format imports

* update docs

* update CHANGELOG

* update upgrade dev docs

* update re: pr comments

(cherry picked from commit c12789d)

* position correctly changelog entry

Co-authored-by: Charly <charly@interchain.berlin>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* fix broken link (cosmos#1776) (cosmos#1808)

(cherry picked from commit ef7a5c7)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* fix: add cosmos_proto.implements_interface (backport cosmos#1740) (cosmos#1817)

* fix: add cosmos_proto.implements_interface (cosmos#1740)

* fix: add cosmos_proto.implements_interface

* changelog

* Update CHANGELOG.md

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* run `make proto-all`

* run `go mod tidy`

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
(cherry picked from commit 40d0ff7)

# Conflicts:
#	CHANGELOG.md
#	modules/core/02-client/types/client.pb.go

* fix conflict

Co-authored-by: Dan Lynch <pyramation@gmail.com>
Co-authored-by: crodriguezvega <carlos@interchain.io>

* fix: ics27 check packet data length explicitly over nil check (cosmos#1882) (cosmos#1897)

* using len check in favour of nil check for interchain account packet data

* adding changelog

* updating changelog

(cherry picked from commit 73fdde9)

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* chore: adding dockerfile and release task to release/3.2.x (cosmos#1932)

* fix: prevent blocked addresses from sending ICS 20 transfers (backport cosmos#1907) (cosmos#1945)

* fix: prevent blocked addresses from sending ICS 20 transfers (cosmos#1907)

* fix bug, add test

Ensures that a sender account isn't a blocked address
Added test cases for MsgTransfer handling

* update documentation

* move blocked address check to SendTransfer

* add changelog entry

(cherry picked from commit f891c29)

# Conflicts:
#	modules/apps/transfer/keeper/relay_test.go

* fix conflicts

Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>

* Fixing github action workflows (backport cosmos#1428) (cosmos#1939)

* chore: backport cosmos#1905 (cosmos#1978)

Co-authored-by: Devashish Dixit <devashish@crypto.com>

* fix: "acknowledgement written" logs unsupported type (backport cosmos#1919) (cosmos#1960)

* fix: "acknowledgement written" logs unsupported type (cosmos#1919)

* fix: "acknowledgement written" logs unsupported type

* Updating CHANGELOG.md

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
(cherry picked from commit 897e7eb)

# Conflicts:
#	CHANGELOG.md

* fix conflict

Co-authored-by: Joe Abbey <joe.abbey@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* Update CHANGELOG.md

* Update CHANGELOG.md

* fix broken link (cosmos#2059) (cosmos#2096)

(cherry picked from commit 7d26a87)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* gofumpt v3.2.x (cosmos#1735)

* gofumpt v3.2.x

* update Makefile, run make format

* remove empty line in comments

* chore: fix broken link to bank module spec (backport cosmos#2201) (cosmos#2208)

* chore: fix broken link to bank module spec (cosmos#2201)

## 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/<module>/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

(cherry picked from commit 1a0918d)

# Conflicts:
#	docs/apps/transfer/params.md

* fix conflict

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* feat: adding interchain account address query to controller submodule (backport cosmos#2193) (cosmos#2291)

* feat: adding interchain account address query to controller submodule (cosmos#2193)

* adding interchain account address query to ica controller

* adding basic cli query

* satisfy linter, aligning recvr var naming

* Apply suggestions from code review

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* reordering cli args

* regenerate protobufs and swagger docs post review suggestions

* adding changelog

* Update modules/apps/27-interchain-accounts/controller/client/cli/query.go

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
(cherry picked from commit e569045)

# Conflicts:
#	CHANGELOG.md
#	docs/client/swagger-ui/swagger.yaml
#	docs/ibc/proto-docs.md
#	modules/apps/27-interchain-accounts/controller/keeper/grpc_query.go
#	modules/apps/27-interchain-accounts/controller/keeper/grpc_query_test.go
#	modules/apps/27-interchain-accounts/controller/types/query.pb.go

* fix merge conflicts

Co-authored-by: Damian Nolan <damiannolan@gmail.com>
Co-authored-by: Colin Axnér <25233464+colin-axner@users.noreply.github.com>

* `release/v3.3.x` - Bump SDK to v0.45.8 and Tendermint to v0.34.21 (cosmos#2286)

* deps: bump SDK to v0.45.8 and tendermint to v0.34.21

* changelog entry

* Merge pull request from GHSA-832c-mq9v-367r

* fix: use block app hash and tx list to generate interchain account address

Generate interchain account addresses using host connection ID, controller PortID, block app hash, and block data hash
Update tests to handle non-determinstic address creation
Add test case to ensure address generation is block dependent

* fix: return error on existing non-interchainaccounts for generated address

If an account exists and is not an interchain account return an error
Add test cases for existing accounts, both interchain and non interchain account
Refactor account tests to be table tests

* fix: refactor handshake code to account for block dependent address generation

* add more test cases, update error messaging

* self review fix

* increase test readability

* remove msg_server_test.go

* fix API breaking changes

* self nit

* fix tests

* fix naming GenerateAddress naming

* add test cases for controller side channel reopening

* fix cherry-pick conflict

* Update modules/apps/27-interchain-accounts/types/account.go

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* fix: add nil checks for controller and host keeper services (backport cosmos#2308) (cosmos#2313)

* fix: add nil checks for controller and host keeper services (cosmos#2308)

## 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/<module>/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

(cherry picked from commit 888c4a0)

# Conflicts:
#	CHANGELOG.md
#	modules/apps/27-interchain-accounts/controller/keeper/migrations.go
#	modules/apps/27-interchain-accounts/module.go

* fix merge conflicts

Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>

* update changelog for v3.3.0 release

* Update CHANGELOG.md

* fix broken link/update link (cosmos#2338) (cosmos#2346)

(cherry picked from commit d908b1b)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* Fix ICAControllerKeeper (cosmos#2303) (cosmos#2332)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
(cherry picked from commit 280db0c)

Co-authored-by: Raul Bernal <bernal.raul@gmail.com>

* Adding `paramsKeeper.Subspace(icahosttypes.SubModuleName)` (cosmos#2220) (cosmos#2324)

* Adding `paramsKeeper.Subspace(icahosttypes.SubModuleName)`

Adding `paramsKeeper.Subspace(icahosttypes.SubModuleName)` at `initParamsKeeper` func

* fix spaces

* adding missing paramsKeeper

paramsKeeper.Subspace(icacontrollertypes.SubModuleName)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
(cherry picked from commit 7b26bda)

Co-authored-by: Raul Bernal <bernal.raul@gmail.com>

* MsgTransferResponse add sequence (backport cosmos#2377) (cosmos#2465)

* MsgTransferResponse add sequence (cosmos#2377)

## Description

Returns sequence from `sendTransfer`, and returns it with the `MsgTransferResponse`. This is not an API breaking change.

Retrieving the sequence at the time of creating the transfer is necessary in the packet forward middleware for correlation with multihop packet flows.

strangelove-ventures/packet-forward-middleware#33
strangelove-ventures/interchaintest#306

Closes cosmos#1969

---

- [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)
Existing test coverage exercises this new method due to the re-routing of `SendTransfer` through `SendPacketTransfer`
- [x] Updated relevant documentation (`docs/`) or specification (`x/<module>/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

(cherry picked from commit 3363917)

# Conflicts:
#	docs/ibc/proto-docs.md
#	modules/apps/transfer/keeper/msg_server.go
#	modules/apps/transfer/keeper/relay.go
#	modules/apps/transfer/types/tx.pb.go

* fix conflicts

Co-authored-by: Andrew Gouin <andrew@gouin.io>
Co-authored-by: crodriguezvega <carlos@interchain.io>

* fixing dead link to sdk v0.44 (cosmos#2488) (cosmos#2493)

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
(cherry picked from commit a1843f8)

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* chore: fix broken links (backport cosmos#2511) (cosmos#2521)

* fix broken links (cosmos#2511)

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
(cherry picked from commit 4c45212)

# Conflicts:
#	docs/ibc/apps/apps.md
#	docs/middleware/ics29-fee/fee-distribution.md
#	modules/apps/transfer/spec/06_metrics.md

* Delete fee-distribution.md

* fix conflict

* Delete apps.md

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* Added optional packet metadata to the packet and message types (backport cosmos#2305) (cosmos#2505)

* Added optional packet metadata to the packet and message types (cosmos#2305)

* added optional packet metadata to the packet and message types

* added docs

* breaking the api (backports should add a utility function for this)

* adding nil metadata on all the calls

* added metadata to the cli

* added events

* breaking api for FungibleTokenPacketData

* hex encoding metadata

* added abstraction

* fixed bad merge

* added tests with metadata

* added missing metadata to packet for recv

* cleaning up metadata on every test

* reset metadata

* added metadata flag

* lint

* Update modules/apps/transfer/client/cli/tx.go

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* fixed bad call in tests

Co-authored-by: Damian Nolan <damiannolan@gmail.com>
(cherry picked from commit 82397d6)

# Conflicts:
#	docs/apps/transfer/messages.md
#	docs/ibc/proto-docs.md
#	go.mod
#	go.sum
#	modules/apps/29-fee/transfer_test.go
#	modules/apps/transfer/ibc_module.go
#	modules/apps/transfer/keeper/mbt_relay_test.go
#	modules/apps/transfer/keeper/relay_test.go
#	modules/apps/transfer/spec/05_events.md
#	modules/apps/transfer/types/packet.pb.go
#	modules/apps/transfer/types/tx.pb.go
#	proto/ibc/applications/interchain_accounts/controller/v1/tx.proto

* fixing conflicts

* fix event emission

* fix test

* fix broken link

* revert unnecessary change

* revert unnecessary change

* remove api breaking changes

* removing more api breaking changes

* another api breaking change

* remove unused code

* another api breaking change

* another api breaking change

* fix tests

* remove test

Co-authored-by: Nicolas Lara <nicolaslara@gmail.com>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* add entry for cosmos#2305

* refactor: adapting transfer metadata bytes field to memo string (backport cosmos#2595) (cosmos#2597)

* refactor: adapting transfer metadata bytes field to memo string (cosmos#2595)

* adapting transfer metadata bytes field to memo string

* updating changelog

(cherry picked from commit 05685b3)

# Conflicts:
#	CHANGELOG.md
#	docs/ibc/proto-docs.md
#	go.mod
#	go.sum
#	modules/apps/29-fee/transfer_test.go
#	modules/apps/transfer/client/cli/tx.go
#	modules/apps/transfer/ibc_module.go
#	modules/apps/transfer/keeper/mbt_relay_test.go
#	modules/apps/transfer/keeper/msg_server_test.go
#	modules/apps/transfer/keeper/relay.go
#	modules/apps/transfer/keeper/relay_test.go
#	modules/apps/transfer/transfer_test.go
#	modules/apps/transfer/types/msgs.go
#	modules/apps/transfer/types/msgs_test.go
#	modules/apps/transfer/types/packet.go
#	modules/apps/transfer/types/packet.pb.go
#	modules/apps/transfer/types/packet_test.go
#	modules/apps/transfer/types/tx.pb.go

* resolving conflicts

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* use controller module address instead of module name for NewMsgChannelOpenInit (backport cosmos#2568) (cosmos#2609)

* use controller module address instead of module name for NewMsgChannelOpenInit (cosmos#2568)

## Description

In controller keeper's `registerInterchainAccount` we execute a `MsgChannelOpenInit` to set up an ica channel. Currently, we have [`icatypes.ModuleName`](https://github.com/cosmos/ibc-go/blob/95cec44c9fb10a2e84a327cdd98c7d588f091f42/modules/apps/27-interchain-accounts/controller/keeper/account.go#L63) as the msg signer. This is not good because the [`ValidateBasic()`](https://github.com/cosmos/ibc-go/blob/692790402a033c1d9647c1e1eded5351332283bf/modules/core/04-channel/types/msgs.go#L34) of `MsgChannelOpenInit` has check if msg signer is bech32 or not.

ref cosmos#2566

closes: cosmos#2559

---

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/main/docs/docs/building-modules/10-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/<module>/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

(cherry picked from commit 6105db4)

# Conflicts:
#	modules/apps/27-interchain-accounts/controller/keeper/account.go

* resolving conflicts

Co-authored-by: khanh-notional <50263489+catShaark@users.noreply.github.com>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* remove port prefix requirement (backport cosmos#2590) (cosmos#2632)

* remove port prefix requirement (cosmos#2590)

* remove port prefix requirement

* chore: remove depcrated test and fix lint

* add changelog entry

* Update CHANGELOG.md

Co-authored-by: Damian Nolan <damiannolan@gmail.com>

Co-authored-by: Damian Nolan <damiannolan@gmail.com>
(cherry picked from commit 5f9966b)

# Conflicts:
#	modules/apps/27-interchain-accounts/host/keeper/handshake.go

* fix conflict

Co-authored-by: LaurensKubat <32776056+LaurensKubat@users.noreply.github.com>
Co-authored-by: crodriguezvega <carlos@interchain.io>

* release/v3.4.x: bump to SDK v0.45.10 (cosmos#2589)

* use authtypes.NewModuleAddress

* bumps

* retract former v3s

* fixes

* rationale

* discard changes to account.go

* review comments

Co-authored-by: catShaark <gundamaster5@gmail.com>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: khanh-notional <50263489+catShaark@users.noreply.github.com>

* fix: skip emission of unpopulated memo field in ics20 (backport cosmos#2651) (cosmos#2653)

* fix: skip emission of unpopulated memo field in ics20 (cosmos#2651)

## Description

By setting `EmitDefaults` to false, we will not include an empty memo field in the marshaled json bytes

closes: cosmos#2645

---

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/main/docs/docs/building-modules/10-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/<module>/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

(cherry picked from commit 393247b)

* Update modules/apps/transfer/types/codec_test.go

* fix: merge conflict build

Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>

* add check send enabled (backport cosmos#2679) (cosmos#2688)

* add check send enabled (cosmos#2679)

* add check send enabled

* changelog

(cherry picked from commit b1f494c)

# Conflicts:
#	CHANGELOG.md
#	modules/apps/transfer/keeper/msg_server.go
#	modules/apps/transfer/keeper/msg_server_test.go

* fix conflicts

* fix return value

* fix build

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>

* prepare changelog for v3.4.0 release

* typo in tag link

* Update CHANGELOG.md

* Update incorrect PR link in changelog regarding "check x/bank send enabled" fix (backport cosmos#2714) (cosmos#2716)

* Update check x/bank sendEnabled link in changelog (cosmos#2714)

Co-authored-by: Cian Hatton <cian@interchain.io>
(cherry picked from commit 7249d82)

# Conflicts:
#	CHANGELOG.md

* fix conflicts

Co-authored-by: Calvin Lau <38898718+calvinaco@users.noreply.github.com>
Co-authored-by: Colin Axnér <25233464+colin-axner@users.noreply.github.com>

* docs: add missing set order functions for ICA (backport cosmos#2740) (cosmos#2754)

* add missing set order functions for ica (cosmos#2740)

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
(cherry picked from commit f54143e)

# Conflicts:
#	docs/middleware/ics29-fee/integration.md

* Delete integration.md

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>

* tests compiles

* 1. remove allow_update_after_expiry & allow_update_after_misbehaviour as it became deprecated
2. update proposal_handle following v3.4.x upgrade
3. delete fraction as it not used anymore
4. fix test function CreateDMClientHeader
5. add more checks and errors to header

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: khanh <50263489+catShaark@users.noreply.github.com>
Co-authored-by: Damian Nolan <damiannolan@gmail.com>
Co-authored-by: vuong <56973102+nguyenvuong1122000@users.noreply.github.com>
Co-authored-by: chatton <cianhatton@gmail.com>
Co-authored-by: Cian Hatton <cian@interchain.io>
Co-authored-by: Charly <charly@interchain.berlin>
Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Sean King <seantking@users.noreply.github.com>
Co-authored-by: Dan Lynch <pyramation@gmail.com>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: Devashish Dixit <devashish@crypto.com>
Co-authored-by: Joe Abbey <joe.abbey@gmail.com>
Co-authored-by: Jacob Gadikian <jacobgadikian@gmail.com>
Co-authored-by: Raul Bernal <bernal.raul@gmail.com>
Co-authored-by: Andrew Gouin <andrew@gouin.io>
Co-authored-by: Nicolas Lara <nicolaslara@gmail.com>
Co-authored-by: LaurensKubat <32776056+LaurensKubat@users.noreply.github.com>
Co-authored-by: catShaark <gundamaster5@gmail.com>
Co-authored-by: Calvin Lau <38898718+calvinaco@users.noreply.github.com>
Co-authored-by: Michael Tsitrin <michael@dymension.xyz>
dudong2 pushed a commit to dudong2/ibc-go that referenced this pull request Jan 19, 2023
…cosmos#1451) (cosmos#1536)

* fix to correctly parse denoms with slashes in the base denom (cosmos#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 (cosmos#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 <crodveg@gmail.com>

* rename migration file

Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
(cherry picked from commit 3a235af)

* fix conflict

Co-authored-by: Carlos Rodriguez <carlos@interchain.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

bug(transfer): Cannot send namespaced IBC denom using slashes
8 participants