We present here a summary of the most relevant changes, please see the v8.3.0 changelog for the full set of changes included in this release. Check out also the release announcement blog post for more information.
Up until now ibc-go assumed that its underlying consensus is Tendermint, but in this release we have added the ConsensusHost interface that defines methods to validate an IBC light client ClientState and ConsensusState against the host chain's underlying consensus parameters. This enables chains whose underlying consensus is not Tendermint to still use ibc-go and be able to specify how the client state and consensus state of counterparties' light clients should be verified during the connection handshake. A custom implementation of the ConsensusHost interface can be set in the core IBC keeper using function SetConsensusHost. By default the consensus host will be set to the implementation for 07-tendermint. See issue cosmos/ibc-go#5315 and PR cosmos/ibc-go#6055 for more details.
core/02-client
We have added the VerifyMembershipProof query service gRPC endpoint that queries an IBC light client for proof verification of a value at a given key path. This endpoint specifically enables light clients to query other light clients through gRPC, and streamlines the process of implementing conditional clients, particularly within the 08-wasm module. The method takes a QueryVerifyMembershipRequest where the ID of the light client the verification parameters (proof, value, height, etc) are specified. See issue cosmos/ibc-go#5310 and PR cosmos/ibc-go#5821 for more details.
apps/transfer
In v8.1.0 the field allowed_packet_data was added to the Allocation type used for authz support of IBC transfers. This field was originally a list of MsgTransfer's memo packet data keys that were allowed (i.e. top level JSON object keys). After receiving some feedback (thanks to Yieldmos team), we have re-purposed this field to be a list of full memo strings. That means that this field contains a list of memo strings that that the granter allows the grantee to include in the memo field of MsgTransfer, the grantee can then submit MsgTransfer with one of the allowed memo strings. See the documentation for more information.
In OnChanOpenTry, when the counterparty version does not match the executing chain's own version, instead of returning an error, the current version is now returned. This allows the channel handshake to complete in situations where the handshake initiating chain has the fee middleware wired up, but the counterparty doesn't (then transfer channel will be created with a version that does not contain fee middleware information). Similar change has been applied to OnChanOpenTry of the host submodule in 27-interchain-accounts. See PR cosmos/ibc-go#6253 for more details.
apps/27-interchain-accounts
Unordered channels
Support for unordered channels was introduced in v8.1.0, and with this release we have now also changed the default ordering of new ICA channels from ordered to unordered. This means that new ICA channels will be unordered by default. Ordering can be specified either by setting the field ordering of MsgRegisterInterchainAccount or using the newly introduced function RegisterInterchainAccountWithOrdering (in case the legacy RegisterInterchainAccount function is used by a custom auth module).
Queries
We have added the message MsgModuleQuerySafe, which enables to perform queries on the host chain. This message contains a list of QueryRequests that will be routed to the query router when the message MsgModuleQuerySafe is executed on the host chain. The MsgModuleQuerySafe message can be included in the list of encoded sdk.Msgs of InterchainPacketData. The host chain will return on the acknowledgment the responses for all the queries (in the same order as the query requests in the Requests field of the MsgModuleQuerySafe).
We have fixed a bug where, upon channel closure, already refunded fees remained in state in the event of one or more of the packet fees attached to a packet not being refunded. See PR cosmos/ibc-go#6255 for more details. Many thanks to @sushiwushi for reporting this bug.
Contributors ❤️
Special thanks to all external contributors that pushed code for this release:
#6300 Bump Cosmos SDK to v0.50.6 and CometBFT to v0.38.7.
State Machine Breaking
(light-clients/07-tendermint) #6276 Fix: No-op to avoid panicking on UpdateState for invalid misbehaviour submissions.
Improvements
(apps/27-interchain-accounts, apps/tranfer, apps/29-fee) #6253 Allow channel handshake to succeed if fee middleware is wired up on one side, but not the other.
(apps/27-interchain-accounts) #6251 Use UNORDERED as the default ordering for new ICA channels.
(apps/transfer) #6268 Use memo strings instead of JSON keys in AllowedPacketData of transfer authorization.
Features
(core) #6055 Introduce a new interface ConsensusHost used to validate an IBC ClientState and ConsensusState against the host chain's underlying consensus parameters.
(core/02-client) #5821 Add rpc VerifyMembershipProof (querier approach for conditional clients).
(core/04-channel) #5788 Add NewErrorAcknowledgementWithCodespace to allow codespaces in ack errors.
(apps/27-interchain-accounts) #5785 Introduce a new tx message that ICA host submodule can use to query the chain (only those marked with module_query_safe) and write the responses to the acknowledgement.
Bug Fixes
(apps/27-interchain-accounts) #6167 Fixed an edge case bug where migrating params for a pre-existing ica module which implemented controller functionality only could panic when migrating params for newly added host, and align controller param migration with host.
(app/29-fee) #6255 Delete refunded fees from state if some fee(s) cannot be refunded on channel closure.
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 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 show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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)
Bumps github.com/cosmos/ibc-go/v8 from 8.2.1 to 8.3.0.
Release notes
Sourced from github.com/cosmos/ibc-go/v8's releases.
... (truncated)
Changelog
Sourced from github.com/cosmos/ibc-go/v8's changelog.
... (truncated)
Commits
8b708ca
update changelog before v8.3.0 release0b10c11
deps: bump cosmos sdk to v0.50.6 and comet bft to v0.38.7 (#6300)41b6a00
Update CHANGELOG.md5470cd2
imp: allow memo strings instead of keys for transfer authorizations (backport...725fe10
fix: noop on UpdateState for invalid misbehaviour (backport #6276) (#6297)0cece8d
fix: delete already refunded fees from state if some fee cannot be refunded o...740532d
imp(apps): allow one sided fee middleware handshakes to complete (backport #6...3aa76ad
Update CHANGELOG.mdb3d46d7
feat(release/v8.3.x): use unordered ordering by default for new ica channels ...0b77b98
fix: avoid panic when migrate param for newly added host (backport #6167) (#6...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 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 show