To learn more about ibc-go versioning, please read our RELEASES.md.
IMPORTANT: Please read the migration guides for any versions of ibc-go that you might be going through when upgrading to this version. For example: if you upgrade from the IBC module contained in the Cosmos SDK 0.42.0 to SDK v0.50.6 and ibc-go v8.3.1, please follow:
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.
#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.
(core/ante) #6278 Performance: Exclude pruning from tendermint client updates in ante handler executions.
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.1.
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
9b6567b
update changelog before v8.3.1 releasebcd74b7
imp: add updateClientCheckTx to redunant relayer ante decorator (backport #62...e18de37
perf: minimize logic on rechecktx for recvpacket (backport #6280) (#6344)611a9a3
perf: minimize necessary execution on recvpacket checktx (backport #6302) (#6...30a03a3
perf: exclude pruning from tendermint update client in ante handler execution...f6fe145
Update CHANGELOG.md8b708ca
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...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