Skip to content

Commit

Permalink
Merge branch 'main' into hermes
Browse files Browse the repository at this point in the history
  • Loading branch information
faddat authored Jan 9, 2024
2 parents 793fca1 + be84275 commit 719a19c
Show file tree
Hide file tree
Showing 52 changed files with 2,613 additions and 294 deletions.
4 changes: 2 additions & 2 deletions .changelog/epilogue.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,9 @@ Date: June 1st, 2023

Unlike prior releases, the ICS `v2.0.0` release will be based on the main branch. `v2.0.0` will contain all the accumulated PRs from the various releases below, along with other PRs that were merged, but not released to production. After `v2.0.0`, we plan to revamp release practices, and how we modularize the repo for consumer/provider.

Upgrading a provider from `v1.1.0-multiden` to `v2.0.0` will require state migrations. See [migration.go](./x/ccv/provider/keeper/migration.go). See the provider module's `ConsensusVersion` in [module](./x/ccv/provider/module.go)
Upgrading a provider from `v1.1.0-multiden` to `v2.0.0` will require state migrations. See [migration.go](https://github.com/cosmos/interchain-security/blob/v2.0.0/x/ccv/provider/keeper/migration.go).

Upgrading a consumer from `v1.2.0-multiden` to `v2.0.0` will NOT require state migrations. See the consumer module's `ConsensusVersion` in [module](./x/ccv/consumer/module.go)
Upgrading a consumer from `v1.2.0-multiden` to `v2.0.0` will NOT require state migrations.

Some PRs from v2.0.0 may reappear from other releases below. This is due to the fact that ICS v1.1.0 deviates from the commit ordering of the main branch, and other releases thereafter are based on v1.1.0.

Expand Down
3 changes: 3 additions & 0 deletions .changelog/unreleased/bug-fixes/consumer/1549-soft-opt-out.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- Avoid jailing validators immediately once they can no longer opt-out from
validating consumer chains.
([\#1549](https://github.com/cosmos/interchain-security/pull/1549))
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Add `QueryAllPairsValConAddrByConsumerChainID` method to get list of all pairs `valConsensus` address by `Consummer chainID`. ([\#1503](https://github.com/cosmos/interchain-security/pull/1503))
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- Avoid jailing validators immediately once they can no longer opt-out from
validating consumer chains.
([\#1549](https://github.com/cosmos/interchain-security/pull/1549))
3 changes: 3 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ jobs:
**/go.sum
**/Makefile
Makefile
Dockerfile*
- name: e2e tests
if: env.GIT_DIFF
run: |
Expand Down Expand Up @@ -222,6 +223,7 @@ jobs:
**/go.sum
**/Makefile
Makefile
Dockerfile*
- name: cometmock tests
if: env.GIT_DIFF
run: |
Expand Down Expand Up @@ -252,6 +254,7 @@ jobs:
**/go.sum
**/Makefile
Makefile
Dockerfile*
- name: trace-e2e tests
if: env.GIT_DIFF
run: |
Expand Down
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,9 @@ Date: June 1st, 2023

Unlike prior releases, the ICS `v2.0.0` release will be based on the main branch. `v2.0.0` will contain all the accumulated PRs from the various releases below, along with other PRs that were merged, but not released to production. After `v2.0.0`, we plan to revamp release practices, and how we modularize the repo for consumer/provider.

Upgrading a provider from `v1.1.0-multiden` to `v2.0.0` will require state migrations. See [migration.go](./x/ccv/provider/keeper/migration.go). See the provider module's `ConsensusVersion` in [module](./x/ccv/provider/module.go)
Upgrading a provider from `v1.1.0-multiden` to `v2.0.0` will require state migrations. See [migration.go](https://github.com/cosmos/interchain-security/blob/v2.0.0/x/ccv/provider/keeper/migration.go).

Upgrading a consumer from `v1.2.0-multiden` to `v2.0.0` will NOT require state migrations. See the consumer module's `ConsensusVersion` in [module](./x/ccv/consumer/module.go)
Upgrading a consumer from `v1.2.0-multiden` to `v2.0.0` will NOT require state migrations.

Some PRs from v2.0.0 may reappear from other releases below. This is due to the fact that ICS v1.1.0 deviates from the commit ordering of the main branch, and other releases thereafter are based on v1.1.0.

Expand Down
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ RUN make install
# Get Hermes build
FROM ghcr.io/informalsystems/hermes:v1.7.4 AS hermes-builder


# Get CometMock
FROM ghcr.io/informalsystems/cometmock:v0.37.x as cometmock-builder

Expand Down
1 change: 1 addition & 0 deletions Dockerfile.gaia
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ RUN make install
# Get Hermes build
FROM ghcr.io/informalsystems/hermes:v1.7.4 AS hermes-builder


FROM --platform=linux/amd64 fedora:36
RUN dnf update -y
RUN dnf install -y which iproute iputils procps-ng vim-minimal tmux net-tools htop jq
Expand Down
30 changes: 15 additions & 15 deletions FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@

The following table indicates the major ICS features available in the [currently active releases](./RELEASES.md#version-matrix):

| Feature | `v1.2.0-multiden` | `v2.0.0` | `v2.1.0-provider-lsm` | `v2.4.0-lsm` | `v3.1.0` | `v3.2.0` | `v3.3.0` | `v4.0.0` |
|---------|------------------:|---------:|----------------------:|-------------:|---------:|---------:|---------:|---------:|
| [Channel initialization: new chains](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#channel-initialization-new-chains) |||||||||
| [Validator set update](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#validator-set-update) |||||||||
| [Completion of unbonding operations](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#completion-of-unbonding-operations) |||||||||
| [Consumer initiated slashing](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#consumer-initiated-slashing) |||||||||
| [Reward distribution](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#reward-distribution) | ||||||||
| [Consumer chain removal](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/methods.md#consumer-chain-removal) |||||||||
| [Key assignment](https://github.com/cosmos/interchain-security/issues/26) |||||||||
| [Jail throttling](https://github.com/cosmos/interchain-security/issues/404) |||||||||
| [Soft opt-out](https://github.com/cosmos/interchain-security/issues/851) || |||||||
| [Channel initialization: existing chains](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#channel-initialization-existing-chains) (aka [Standalone to consumer changeover](https://github.com/cosmos/interchain-security/issues/756)) | || ||||||
| [Cryptographic verification of equivocation](https://github.com/cosmos/interchain-security/issues/732) || || |||||
| [Jail throttling with retries](https://github.com/cosmos/interchain-security/issues/713) - consumer-side changes |||| || |||
| [Jail throttling with retries](https://github.com/cosmos/interchain-security/issues/713) - [provider-side changes](https://github.com/cosmos/interchain-security/issues/1102) |||||| || |
| Feature | `v2.0.0` | `v2.4.0-lsm` | `v3.1.0` | `v3.2.0` | `v3.3.0` | `v4.0.0` |
|---------|---------:|-------------:|---------:|---------:|---------:|---------:|
| [Channel initialization: new chains](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#channel-initialization-new-chains) |||||||
| [Validator set update](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#validator-set-update) |||||||
| [Completion of unbonding operations](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#completion-of-unbonding-operations) |||||||
| [Consumer initiated slashing](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#consumer-initiated-slashing) |||||||
| [Reward distribution](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#reward-distribution) |||||||
| [Consumer chain removal](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/methods.md#consumer-chain-removal) |||||||
| [Key assignment](https://github.com/cosmos/interchain-security/issues/26) |||||||
| [Jail throttling](https://github.com/cosmos/interchain-security/issues/404) |||||||
| [Soft opt-out](https://github.com/cosmos/interchain-security/issues/851) |||||||
| [Channel initialization: existing chains](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#channel-initialization-existing-chains) (aka [Standalone to consumer changeover](https://github.com/cosmos/interchain-security/issues/756)) |||||||
| [Cryptographic verification of equivocation](https://github.com/cosmos/interchain-security/issues/732) |||||||
| [Jail throttling with retries](https://github.com/cosmos/interchain-security/issues/713) - consumer-side changes |||||||
| [Jail throttling with retries](https://github.com/cosmos/interchain-security/issues/713) - [provider-side changes](https://github.com/cosmos/interchain-security/issues/1102) |||||||
77 changes: 35 additions & 42 deletions RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,109 +9,102 @@
- [Backwards Compatibility](#backwards-compatibility)
- [Notes](#notes)

## Semantic Versioning
## Semantic Versioning

Interchain Security (ICS) follows [semantic versioning](https://semver.org), but with the following deviations (similar to [IBC-Go](https://github.com/cosmos/ibc-go/blob/main/RELEASES.md)):

- A library API breaking change will result in an increase of the MAJOR version number (X.y.z | X > 0).
- A library API breaking change will result in an increase of the MAJOR version number (X.y.z | X > 0).
- A state-machine breaking change will result in an increase of the MINOR version number (x.Y.z | x > 0).
- Any other changes (including node API breaking changes) will result in an increase of the PATCH version number (x.y.Z | x > 0).

### Breaking Changes

A change is considered to be ***library API breaking*** if it modifies the integration of ICS on either consumer or provider chains (i.e., it changes the way ICS is used as a library).
A change is considered to be ***library API breaking*** if it modifies the integration of ICS on either consumer or provider chains (i.e., it changes the way ICS is used as a library).
Note that bumping the major version of [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) or [IBC](https://github.com/cosmos/ibc-go) will be considered as a library API breaking change.

A change is considered to be ***state-machine breaking*** if it requires a coordinated upgrade and/or state migration for either consumer or provider chains in order to preserve [state compatibility](./STATE-COMPATIBILITY.md).
A change is considered to be ***state-machine breaking*** if it requires a coordinated upgrade and/or state migration for either consumer or provider chains in order to preserve [state compatibility](./STATE-COMPATIBILITY.md).
Note that when bumping the dependencies of [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) and [IBC](https://github.com/cosmos/ibc-go) we will only treat patch releases as non state-machine breaking.

A change is considered to be ***node API breaking*** if it modifies the API provided by a node of either consumer or provider chains.
This includes events, queries, CLI interfaces.
A change is considered to be ***node API breaking*** if it modifies the API provided by a node of either consumer or provider chains.
This includes events, queries, CLI interfaces.

## Release Cycle

ICS follows a traditional release cycle involving release candidates (RCs) releases before finalizing a new version.
ICS follows a traditional release cycle involving release candidates (RCs) releases before finalizing a new version.
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.***

Final releases should contain little to no changes in comparison to the latest RC.
Final releases should contain little to no changes in comparison to the latest RC.

A release should not be finalized until the development team and the external community have done sufficient integration tests on the targeted release.

## Stable Release Policy

The beginning of a new major release series is marked by the release of a new major version.
A major release series is comprised of all minor and patch releases made under the same major version number.
The series continues to receive bug fixes (released as minor or patch releases) until it reaches end of life.
The beginning of a new major release series is marked by the release of a new major version.
A major release series is comprised of all minor and patch releases made under the same major version number.
The series continues to receive bug fixes (released as minor or patch releases) until it reaches end of life.
The date when a major release series reaches end of life is determined by one of the following methods:

- If there is no known chain using a major release series, then it reached end of life.
- If there is no known chain using a major release series, then it reached end of life.
This is a temporary policy that is possible due to the relatively low number of consumer chains.
- If the next major release is made within the first 6 months, then the end of
- If the next major release is made within the first 6 months, then the end of
life date of the major release series is 1 year after its initial release.
- If the next major release is made 6 months after the initial release, then the
end of life date of the major release series is 6 months after the release date
- If the next major release is made 6 months after the initial release, then the
end of life date of the major release series is 6 months after the release date
of the next major release.

Only the following major release series have a stable release status.
Only the following major release series have a stable release status.
All missing minor release versions have been discontinued.

| Release | End of Life Date |
|---------|------------------|
| `v1.2.x` | February 21, 2024 |
| `v2.0.x` | June 09, 2024 |
| `v2.1.x-provider-lsm` | June 09, 2024 |
| `v2.4.x-lsm` | June 09, 2024 |
| `v3.1.x` | July 10, 2024 |
| `v3.2.x` | July 10, 2024 |
| `v3.3.x` | July 10, 2024 |
| `v4.0.x` | TBA |

**Note**: As of [Gaia v12.0.0](https://github.com/cosmos/gaia/releases/tag/v12.0.0),
the Cosmos Hub uses a fork of Cosmos SDK ([v0.45.16-ics-lsm](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.16-ics-lsm))
that contains the Liquid Staking Module (LSM).
This means the Cosmos Hub requires a fork of ICS.
This fork is maintained by the development team and released using the `-lsm` prefix.
As soon as the Cosmos Hub uses mainline Cosmos SDK, the `-lsm` releases will reach end of life.
**Note**: As of [Gaia v12.0.0](https://github.com/cosmos/gaia/releases/tag/v12.0.0),
the Cosmos Hub uses a fork of Cosmos SDK ([v0.45.16-ics-lsm](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.16-ics-lsm))
that contains the Liquid Staking Module (LSM).
This means the Cosmos Hub requires a fork of ICS.
This fork is maintained by the development team and released using the `-lsm` prefix.
As soon as the Cosmos Hub uses mainline Cosmos SDK, the `-lsm` releases will reach end of life.

## Version Matrix

Versions of Golang, IBC, Cosmos SDK and CometBFT used by ICS in the currently active releases:

| ICS | Golang | IBC | Cosmos SDK | CometBFT | Note |
|-----|--------|-----|------------|----------|------|
| [v1.2.0-multiden](https://github.com/cosmos/interchain-security/releases/tag/v1.2.0-multiden) | 1.18 | v4.2.0 | v0.45.15-ics | v0.34.27 | Consumer only |
| [v2.0.0](https://github.com/cosmos/interchain-security/releases/tag/v2.0.0) | 1.19 | v4.4.2 | v0.45.15-ics | v0.34.28 |
| [v2.1.0-provider-lsm](https://github.com/cosmos/interchain-security/releases/tag/v2.1.0-provider-lsm) | 1.19 | v4.4.2 | v0.45.16-ics-lsm | v0.34.28 | Provider only (Cosmos Hub specific) |
| [v2.0.0](https://github.com/cosmos/interchain-security/releases/tag/v2.0.0) | 1.19 | v4.4.2 | v0.45.15-ics | v0.34.28 |
| [v2.4.0-lsm](https://github.com/cosmos/interchain-security/releases/tag/v2.4.0-lsm) | 1.19 | v4.4.2 | v0.45.16-ics-lsm | v0.34.28 | Provider only (Cosmos Hub specific) |
| [v3.1.0](https://github.com/cosmos/interchain-security/releases/tag/v3.1.0) | 1.20 | v7.1.0 | v0.47.3 | v0.37.2 |
| v3.2.0 | 1.20 | v7.3.0 | v0.47.5 | v0.37.2 |
| [v3.2.0](https://github.com/cosmos/interchain-security/releases/tag/v3.2.0) | 1.20 | v7.3.0 | v0.47.5 | v0.37.2 |
| v3.3.0 | 1.20 | v7.3.0 | v0.47.5 | v0.37.2 |
| v4.0.0 | 1.20 | v7.3.0 | v0.47.5 | v0.37.2 | Provider on >= v4.0.0 backwards compatible with consumers >= v3.2.0 |

**Note:** For a list of major ICS features available in the currently active releases, see [FEATURES.md](./FEATURES.md).

### Backwards Compatibility

A MAJOR version of ICS will always be backwards compatible with the previous MAJOR version of ICS.
A MAJOR version of ICS will always be backwards compatible with the previous MAJOR version of ICS.

The following table indicates the compatibility of currently active releases:

| Consumer | Provider | `v2.0.0` | `v2.1.0-provider-lsm` | `v2.4.0-lsm` | `v3.1.0` | `v3.2.0` | `v3.3.0` | `v4.0.0` |
|----------|----------|----------|-----------------------|--------------|----------|----------|----------|----------|
| `v1.2.0-multiden` || ✅ (1) | ✅ (1) | ✅ (1) | ✅ (1),(2) | ✅ (1),(2) | ✅ (1),(2),(4) ||
| `v2.0.0` ||||| ✅ (2) | ✅ (2) | ✅ (2),(4) ||
| `v3.1.0` ||||||| ✅ (4) ||
| `v3.2.0` ||||||| ✅ (4) ||
| `v3.3.0` |||||||||
| `v4.0.0` || ✅ (3) | ✅ (3) | ✅ (3) | ✅ (3) ||||
| Consumer | Provider | `v2.0.0` | `v2.4.0-lsm` | `v3.1.0` | `v3.2.0` | `v3.3.0` | `v4.0.0` |
|----------|----------|----------|--------------|----------|----------|----------|----------|
| `v2.0.0` |||| ✅ (1) | ✅ (1) | ✅ (1),(2) ||
| `v3.1.0` |||||| ✅ (2) ||
| `v3.2.0` |||||| ✅ (2) ||
| `v3.3.0` || ✅ (2) | ✅ (2) | ✅ (2) | ✅ (2) |||
| `v4.0.0` || ✅ (2) | ✅ (2) | ✅ (2) | ✅ (2)| ✅ (2)||

#### Notes

The following adjustments must be made to the CCV consumer genesis state that is obtained from the provider chain after the spawn time is reached in order for the consumer chain to start without errors.
The following adjustments must be made to the CCV consumer genesis state that is obtained from the provider chain after the spawn time is reached in order for the consumer chain to start without errors.

- (1) Remove “preCCV” key
- (2) Remove “prehash_key_before_comparison” keys
- (3) Add .params.retry_delay_period: “3600s”
- (4) Use `interchain-security-cd genesis transform` to transform the consumer genesis file obtained from the provider.
- (1) Remove “prehash_key_before_comparison” keys
- (2) Use `interchain-security-cd genesis transform` to transform the consumer genesis file obtained from the provider.
Loading

0 comments on commit 719a19c

Please sign in to comment.