diff --git a/.changelog/unreleased/bug-fixes/1921-write-stderr.md b/.changelog/unreleased/bug-fixes/1921-write-stderr.md deleted file mode 100644 index 665ef78024..0000000000 --- a/.changelog/unreleased/bug-fixes/1921-write-stderr.md +++ /dev/null @@ -1,2 +0,0 @@ -- Write unbonding period advisory to stderr instead of stdout - ([\#1921](https://github.com/cosmos/interchain-security/pull/1921)) \ No newline at end of file diff --git a/.changelog/unreleased/bug-fixes/provider/1925-apply-audit-suggestions.md b/.changelog/unreleased/bug-fixes/provider/1925-apply-audit-suggestions.md deleted file mode 100644 index 3d12033a4e..0000000000 --- a/.changelog/unreleased/bug-fixes/provider/1925-apply-audit-suggestions.md +++ /dev/null @@ -1,3 +0,0 @@ -- Apply audit suggestions that include a bug fix in the way we compute the - maximum capped power. ([\#1925](https://github.com/cosmos/interchain- - security/pull/1925)) diff --git a/.changelog/unreleased/bug-fixes/provider/1946-get-consumer-chains.md b/.changelog/unreleased/bug-fixes/provider/1946-get-consumer-chains.md deleted file mode 100644 index eae373c390..0000000000 --- a/.changelog/unreleased/bug-fixes/provider/1946-get-consumer-chains.md +++ /dev/null @@ -1,3 +0,0 @@ -- Replace `GetAllConsumerChains` with lightweight version - (`GetAllRegisteredConsumerChainIDs`) that doesn't call into the staking module - ([\#1946](https://github.com/cosmos/interchain-security/pull/1946)) \ No newline at end of file diff --git a/.changelog/unreleased/dependencies/1924-bump-ibc.md b/.changelog/unreleased/dependencies/1924-bump-ibc.md deleted file mode 100644 index 8980dd3b9a..0000000000 --- a/.changelog/unreleased/dependencies/1924-bump-ibc.md +++ /dev/null @@ -1,3 +0,0 @@ -- Bump [ibc-go](https://github.com/cosmos/ibc-go) to - [v7.5.1](https://github.com/cosmos/ibc-go/releases/tag/v7.5.1). - ([\#1924](https://github.com/cosmos/interchain-security/pull/1924)) \ No newline at end of file diff --git a/.changelog/unreleased/dependencies/2013-bump-comet.md b/.changelog/unreleased/dependencies/2013-bump-comet.md new file mode 100644 index 0000000000..a68b1e78fe --- /dev/null +++ b/.changelog/unreleased/dependencies/2013-bump-comet.md @@ -0,0 +1,3 @@ +- Bump [CometBFT](https://github.com/cometbft/cometbft) to + [v0.38.9](https://github.com/cometbft/cometbft/releases/tag/v0.38.9). + ([\#2013](https://github.com/cosmos/interchain-security/pull/2013)) \ No newline at end of file diff --git a/.changelog/unreleased/dependencies/2013-bump-ibc.md b/.changelog/unreleased/dependencies/2013-bump-ibc.md new file mode 100644 index 0000000000..eeaec9b362 --- /dev/null +++ b/.changelog/unreleased/dependencies/2013-bump-ibc.md @@ -0,0 +1,3 @@ +- Bump [ibc-go](https://github.com/cosmos/ibc-go) to + [v8.2.1](https://github.com/cosmos/ibc-go/releases/tag/v8.2.1). + ([\#2013](https://github.com/cosmos/interchain-security/pull/2013)) \ No newline at end of file diff --git a/.changelog/unreleased/dependencies/2013-bump-sdk.md b/.changelog/unreleased/dependencies/2013-bump-sdk.md new file mode 100644 index 0000000000..34354e35e7 --- /dev/null +++ b/.changelog/unreleased/dependencies/2013-bump-sdk.md @@ -0,0 +1,3 @@ +- Bump [cosmos-sdk](https://github.com/cosmos/cosmos-sdk) to +[v0.50.7](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.7) +([\#2013](https://github.com/cosmos/interchain-security/pull/2013)) \ No newline at end of file diff --git a/.changelog/unreleased/improvements/provider/1929-distribute-rewards-to-long-term-validating-validators.md b/.changelog/unreleased/improvements/provider/1929-distribute-rewards-to-long-term-validating-validators.md deleted file mode 100644 index b4ff9d6341..0000000000 --- a/.changelog/unreleased/improvements/provider/1929-distribute-rewards-to-long-term-validating-validators.md +++ /dev/null @@ -1,3 +0,0 @@ -- Only start distributing rewards to validators after they have been validating - for a fixed number of blocks. Introduces the `NumberOfEpochsToStartReceivingRewards` param. - ([\#1929](https://github.com/cosmos/interchain-security/pull/1929)) diff --git a/.changelog/unreleased/state-breaking/2013-bump-comet.md b/.changelog/unreleased/state-breaking/2013-bump-comet.md new file mode 100644 index 0000000000..a68b1e78fe --- /dev/null +++ b/.changelog/unreleased/state-breaking/2013-bump-comet.md @@ -0,0 +1,3 @@ +- Bump [CometBFT](https://github.com/cometbft/cometbft) to + [v0.38.9](https://github.com/cometbft/cometbft/releases/tag/v0.38.9). + ([\#2013](https://github.com/cosmos/interchain-security/pull/2013)) \ No newline at end of file diff --git a/.changelog/unreleased/state-breaking/2013-bump-ibc.md b/.changelog/unreleased/state-breaking/2013-bump-ibc.md new file mode 100644 index 0000000000..eeaec9b362 --- /dev/null +++ b/.changelog/unreleased/state-breaking/2013-bump-ibc.md @@ -0,0 +1,3 @@ +- Bump [ibc-go](https://github.com/cosmos/ibc-go) to + [v8.2.1](https://github.com/cosmos/ibc-go/releases/tag/v8.2.1). + ([\#2013](https://github.com/cosmos/interchain-security/pull/2013)) \ No newline at end of file diff --git a/.changelog/unreleased/state-breaking/2013-bump-sdk.md b/.changelog/unreleased/state-breaking/2013-bump-sdk.md new file mode 100644 index 0000000000..34354e35e7 --- /dev/null +++ b/.changelog/unreleased/state-breaking/2013-bump-sdk.md @@ -0,0 +1,3 @@ +- Bump [cosmos-sdk](https://github.com/cosmos/cosmos-sdk) to +[v0.50.7](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.7) +([\#2013](https://github.com/cosmos/interchain-security/pull/2013)) \ No newline at end of file diff --git a/.changelog/unreleased/state-breaking/provider/1925-apply-audit-suggestions.md b/.changelog/unreleased/state-breaking/provider/1925-apply-audit-suggestions.md deleted file mode 100644 index 3d12033a4e..0000000000 --- a/.changelog/unreleased/state-breaking/provider/1925-apply-audit-suggestions.md +++ /dev/null @@ -1,3 +0,0 @@ -- Apply audit suggestions that include a bug fix in the way we compute the - maximum capped power. ([\#1925](https://github.com/cosmos/interchain- - security/pull/1925)) diff --git a/.changelog/unreleased/state-breaking/provider/1929-distribute-rewards-to-long-term-validating-validators.md b/.changelog/unreleased/state-breaking/provider/1929-distribute-rewards-to-long-term-validating-validators.md deleted file mode 100644 index b4ff9d6341..0000000000 --- a/.changelog/unreleased/state-breaking/provider/1929-distribute-rewards-to-long-term-validating-validators.md +++ /dev/null @@ -1,3 +0,0 @@ -- Only start distributing rewards to validators after they have been validating - for a fixed number of blocks. Introduces the `NumberOfEpochsToStartReceivingRewards` param. - ([\#1929](https://github.com/cosmos/interchain-security/pull/1929)) diff --git a/.changelog/v4.2.0/api-breaking/provider/1732-assigning-already-assigned-key-fix.md b/.changelog/v4.2.0/api-breaking/provider/1732-assigning-already-assigned-key-fix.md deleted file mode 100644 index 667a481d3f..0000000000 --- a/.changelog/v4.2.0/api-breaking/provider/1732-assigning-already-assigned-key-fix.md +++ /dev/null @@ -1,2 +0,0 @@ -- Assigning a key that is already assigned by the same validator will now be a no-op instead of throwing an error. - ([\#1732](https://github.com/cosmos/interchain-security/pull/1732)) \ No newline at end of file diff --git a/.changelog/v4.2.0/api-breaking/provider/1863-add-minimum-power-in-topN-to-consumer-chain-list.md b/.changelog/v4.2.0/api-breaking/provider/1863-add-minimum-power-in-topN-to-consumer-chain-list.md deleted file mode 100644 index 482702f26b..0000000000 --- a/.changelog/v4.2.0/api-breaking/provider/1863-add-minimum-power-in-topN-to-consumer-chain-list.md +++ /dev/null @@ -1,2 +0,0 @@ -- Changes the `list-consumer-chains` query to include a `min_power_in_top_N` field, as well as fields for all power shaping parameters of the consumer. - ([\#1863](https://github.com/cosmos/interchain-security/pull/1863)) \ No newline at end of file diff --git a/.changelog/v4.2.0/dependencies/1876-bump-comet.md b/.changelog/v4.2.0/dependencies/1876-bump-comet.md deleted file mode 100644 index aed8c4f155..0000000000 --- a/.changelog/v4.2.0/dependencies/1876-bump-comet.md +++ /dev/null @@ -1,3 +0,0 @@ -- Bump [CometBFT](https://github.com/cometbft/cometbft) to - [v0.37.6](https://github.com/cometbft/cometbft/releases/tag/v0.37.6). - ([\#1876](https://github.com/cosmos/interchain-security/pull/1876)) \ No newline at end of file diff --git a/.changelog/v4.2.0/dependencies/1876-bump-sdk.md b/.changelog/v4.2.0/dependencies/1876-bump-sdk.md deleted file mode 100644 index 8f18db0eca..0000000000 --- a/.changelog/v4.2.0/dependencies/1876-bump-sdk.md +++ /dev/null @@ -1,3 +0,0 @@ -- Bump [cosmos-sdk](https://github.com/cosmos/cosmos-sdk) to - [v0.47.11](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.47.11). - ([\#1876](https://github.com/cosmos/interchain-security/pull/1876)) \ No newline at end of file diff --git a/.changelog/v4.2.0/features/provider/1587-enable-opt-in-chains-through-gov-proposals.md b/.changelog/v4.2.0/features/provider/1587-enable-opt-in-chains-through-gov-proposals.md deleted file mode 100644 index 57f16adc9b..0000000000 --- a/.changelog/v4.2.0/features/provider/1587-enable-opt-in-chains-through-gov-proposals.md +++ /dev/null @@ -1,2 +0,0 @@ -- Enable Opt In and Top N chains through gov proposals. - ([\#1587](https://github.com/cosmos/interchain-security/pull/1587)) \ No newline at end of file diff --git a/.changelog/v4.2.0/features/provider/1809-pss.md b/.changelog/v4.2.0/features/provider/1809-pss.md deleted file mode 100644 index f7a235c5be..0000000000 --- a/.changelog/v4.2.0/features/provider/1809-pss.md +++ /dev/null @@ -1,3 +0,0 @@ -- Adding the Partial Set Security (PSS) feature cf. [ADR 015](https://cosmos.github.io/interchain-security/adrs/adr-015-partial-set-security). - PSS enables consumer chains to join ICS as _Top N_ or _Opt In_ chains and enables validators to opt to validate the consumer chains they want. - ([\#1809](https://github.com/cosmos/interchain-security/pull/1809)) \ No newline at end of file diff --git a/.changelog/v4.2.0/features/provider/1830-introduce-power-shaping.md b/.changelog/v4.2.0/features/provider/1830-introduce-power-shaping.md deleted file mode 100644 index 87cd4590b4..0000000000 --- a/.changelog/v4.2.0/features/provider/1830-introduce-power-shaping.md +++ /dev/null @@ -1,2 +0,0 @@ -- Introduce power-shaping features for consumer chains. The features: (i) allow us to cap the total number of validators that can validate the consumer chain, (ii) set a cap on the maximum voting power (percentage-wise) a validator can have on a consumer chain, and (iii) introduce allowlist and denylists to restrict which validators are allowed or not to validate a consumer chain. - ([\#1830](https://github.com/cosmos/interchain-security/pull/1830)) \ No newline at end of file diff --git a/.changelog/v4.2.0/features/provider/1863-add-minimum-power-in-topN-to-consumer-chain-list.md b/.changelog/v4.2.0/features/provider/1863-add-minimum-power-in-topN-to-consumer-chain-list.md deleted file mode 100644 index 482702f26b..0000000000 --- a/.changelog/v4.2.0/features/provider/1863-add-minimum-power-in-topN-to-consumer-chain-list.md +++ /dev/null @@ -1,2 +0,0 @@ -- Changes the `list-consumer-chains` query to include a `min_power_in_top_N` field, as well as fields for all power shaping parameters of the consumer. - ([\#1863](https://github.com/cosmos/interchain-security/pull/1863)) \ No newline at end of file diff --git a/.changelog/v4.2.0/features/provider/1867-add-query-for-latest-consumer-validator-set.md b/.changelog/v4.2.0/features/provider/1867-add-query-for-latest-consumer-validator-set.md deleted file mode 100644 index dc33ef69d0..0000000000 --- a/.changelog/v4.2.0/features/provider/1867-add-query-for-latest-consumer-validator-set.md +++ /dev/null @@ -1,2 +0,0 @@ -- Introduces the `consumer-validators` query to retrieve the latest set consumer-validator set for a consumer chain. - ([\#1863](https://github.com/cosmos/interchain-security/pull/1867)) diff --git a/.changelog/v4.2.0/state-breaking/provider/1587-enable-opt-in-chains-through-gov-proposals.md b/.changelog/v4.2.0/state-breaking/provider/1587-enable-opt-in-chains-through-gov-proposals.md deleted file mode 100644 index 57f16adc9b..0000000000 --- a/.changelog/v4.2.0/state-breaking/provider/1587-enable-opt-in-chains-through-gov-proposals.md +++ /dev/null @@ -1,2 +0,0 @@ -- Enable Opt In and Top N chains through gov proposals. - ([\#1587](https://github.com/cosmos/interchain-security/pull/1587)) \ No newline at end of file diff --git a/.changelog/v4.2.0/state-breaking/provider/1732-assigning-already-assigned-key-fix.md b/.changelog/v4.2.0/state-breaking/provider/1732-assigning-already-assigned-key-fix.md deleted file mode 100644 index 667a481d3f..0000000000 --- a/.changelog/v4.2.0/state-breaking/provider/1732-assigning-already-assigned-key-fix.md +++ /dev/null @@ -1,2 +0,0 @@ -- Assigning a key that is already assigned by the same validator will now be a no-op instead of throwing an error. - ([\#1732](https://github.com/cosmos/interchain-security/pull/1732)) \ No newline at end of file diff --git a/.changelog/v4.2.0/state-breaking/provider/1809-pss.md b/.changelog/v4.2.0/state-breaking/provider/1809-pss.md deleted file mode 100644 index c0af9ae11e..0000000000 --- a/.changelog/v4.2.0/state-breaking/provider/1809-pss.md +++ /dev/null @@ -1,2 +0,0 @@ -- Adding the Partial Set Security feature cf. [ADR 015](https://cosmos.github.io/interchain-security/adrs/adr-015-partial-set-security). - ([\#1809](https://github.com/cosmos/interchain-security/pull/1809)) \ No newline at end of file diff --git a/.changelog/v4.2.0/state-breaking/provider/1830-introduce-power-shaping.md b/.changelog/v4.2.0/state-breaking/provider/1830-introduce-power-shaping.md deleted file mode 100644 index 87cd4590b4..0000000000 --- a/.changelog/v4.2.0/state-breaking/provider/1830-introduce-power-shaping.md +++ /dev/null @@ -1,2 +0,0 @@ -- Introduce power-shaping features for consumer chains. The features: (i) allow us to cap the total number of validators that can validate the consumer chain, (ii) set a cap on the maximum voting power (percentage-wise) a validator can have on a consumer chain, and (iii) introduce allowlist and denylists to restrict which validators are allowed or not to validate a consumer chain. - ([\#1830](https://github.com/cosmos/interchain-security/pull/1830)) \ No newline at end of file diff --git a/.changelog/v4.2.0/summary.md b/.changelog/v4.2.0/summary.md deleted file mode 100644 index d9bdda58b3..0000000000 --- a/.changelog/v4.2.0/summary.md +++ /dev/null @@ -1 +0,0 @@ -May 17, 2024 diff --git a/.changelog/v5.0.0/dependencies/1698-bump-comet.md b/.changelog/v5.0.0/dependencies/1698-bump-comet.md deleted file mode 100644 index 7e750b5120..0000000000 --- a/.changelog/v5.0.0/dependencies/1698-bump-comet.md +++ /dev/null @@ -1,3 +0,0 @@ -- Bump [CometBFT](https://github.com/cometbft/cometbft) to - [v0.38.4\5](https://github.com/cometbft/cometbft/releases/tag/v0.38.5). - ([\#1698](https://github.com/cosmos/interchain-security/pull/1698)) \ No newline at end of file diff --git a/.changelog/v5.0.0/dependencies/1698-bump-ibc.md b/.changelog/v5.0.0/dependencies/1698-bump-ibc.md deleted file mode 100644 index 40fe475f7b..0000000000 --- a/.changelog/v5.0.0/dependencies/1698-bump-ibc.md +++ /dev/null @@ -1,3 +0,0 @@ -- Bump [ibc-go](https://github.com/cosmos/ibc-go) to - [v8.1.x](https://github.com/cosmos/ibc-go/releases/tag/v8.1.0). - ([\#1698](https://github.com/cosmos/interchain-security/pull/1698)) \ No newline at end of file diff --git a/.changelog/v5.0.0/dependencies/1698-bump-sdk.md b/.changelog/v5.0.0/dependencies/1698-bump-sdk.md deleted file mode 100644 index ec22555002..0000000000 --- a/.changelog/v5.0.0/dependencies/1698-bump-sdk.md +++ /dev/null @@ -1,3 +0,0 @@ -- Bump [cosmos-sdk](https://github.com/cosmos/cosmos-sdk) to -[v0.50.x](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.4) -([\#1698](https://github.com/cosmos/interchain-security/pull/1698)) \ No newline at end of file diff --git a/.changelog/v5.0.0/features/consumer/1814-add-update-consumer-params-msg.md b/.changelog/v5.0.0/features/consumer/1814-add-update-consumer-params-msg.md deleted file mode 100644 index 811c56401b..0000000000 --- a/.changelog/v5.0.0/features/consumer/1814-add-update-consumer-params-msg.md +++ /dev/null @@ -1,2 +0,0 @@ -- Add consumer `MsgUpdateParams` from [cosmos-sdk](https://github.com/cosmos/cosmos-sdk). -([\#1814](https://github.com/cosmos/interchain-security/pull/1814)). \ No newline at end of file diff --git a/.changelog/v5.0.0/features/provider/1698-add-update-provider-params-msg.md b/.changelog/v5.0.0/features/provider/1698-add-update-provider-params-msg.md deleted file mode 100644 index ca2ce372e2..0000000000 --- a/.changelog/v5.0.0/features/provider/1698-add-update-provider-params-msg.md +++ /dev/null @@ -1,2 +0,0 @@ -- Add provider `MsgUpdateParams` from [cosmos-sdk](https://github.com/cosmos/cosmos-sdk). -([\#1698](https://github.com/cosmos/interchain-security/pull/1698)). \ No newline at end of file diff --git a/.changelog/v5.0.0/state-breaking/1698-bump-comet.md b/.changelog/v5.0.0/state-breaking/1698-bump-comet.md deleted file mode 100644 index 7e750b5120..0000000000 --- a/.changelog/v5.0.0/state-breaking/1698-bump-comet.md +++ /dev/null @@ -1,3 +0,0 @@ -- Bump [CometBFT](https://github.com/cometbft/cometbft) to - [v0.38.4\5](https://github.com/cometbft/cometbft/releases/tag/v0.38.5). - ([\#1698](https://github.com/cosmos/interchain-security/pull/1698)) \ No newline at end of file diff --git a/.changelog/v5.0.0/state-breaking/1698-bump-ibc.md b/.changelog/v5.0.0/state-breaking/1698-bump-ibc.md deleted file mode 100644 index 40fe475f7b..0000000000 --- a/.changelog/v5.0.0/state-breaking/1698-bump-ibc.md +++ /dev/null @@ -1,3 +0,0 @@ -- Bump [ibc-go](https://github.com/cosmos/ibc-go) to - [v8.1.x](https://github.com/cosmos/ibc-go/releases/tag/v8.1.0). - ([\#1698](https://github.com/cosmos/interchain-security/pull/1698)) \ No newline at end of file diff --git a/.changelog/v5.0.0/state-breaking/1698-bump-sdk.md b/.changelog/v5.0.0/state-breaking/1698-bump-sdk.md deleted file mode 100644 index ec22555002..0000000000 --- a/.changelog/v5.0.0/state-breaking/1698-bump-sdk.md +++ /dev/null @@ -1,3 +0,0 @@ -- Bump [cosmos-sdk](https://github.com/cosmos/cosmos-sdk) to -[v0.50.x](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.4) -([\#1698](https://github.com/cosmos/interchain-security/pull/1698)) \ No newline at end of file diff --git a/.changelog/v5.0.0/state-breaking/1819-revert-put-unbonding-on-hold.md b/.changelog/v5.0.0/state-breaking/1819-revert-put-unbonding-on-hold.md deleted file mode 100644 index 126b04f4f3..0000000000 --- a/.changelog/v5.0.0/state-breaking/1819-revert-put-unbonding-on-hold.md +++ /dev/null @@ -1,2 +0,0 @@ -- Revert `PutUnbondingOnHold` behavior to ICS@v1 -([\#1819](https://github.com/cosmos/interchain-security/pull/1819)) \ No newline at end of file diff --git a/.changelog/v5.0.0/summary.md b/.changelog/v5.0.0/summary.md deleted file mode 100644 index 98cfdacda8..0000000000 --- a/.changelog/v5.0.0/summary.md +++ /dev/null @@ -1,2 +0,0 @@ -*May 9, 2024* - diff --git a/.coderabbit.yml b/.coderabbit.yml index e89dfcdfcd..7dfe09c9ba 100644 --- a/.coderabbit.yml +++ b/.coderabbit.yml @@ -11,22 +11,22 @@ reviews: - "!docs/" path_instructions: - path: "**/*.go" - instructions: "Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations." + instructions: "Review the Golang code for conformity with the Uber Golang style guide, highlighting any deviations. Only report issues that you have a high degree of confidence in." - path: "tests/e2e/*" instructions: | - "Assess the e2e test code assessing sufficient code coverage for the changes associated in the pull request" + "Assess the e2e test code assessing sufficient code coverage for the changes associated in the pull request. Only report issues that you have a high degree of confidence in." - path: "tests/integration/*" instructions: | - "Assess the e2e test code assessing sufficient code coverage for the changes associated in the pull request" + "Assess the e2e test code assessing sufficient code coverage for the changes associated in the pull request. Only report issues that you have a high degree of confidence in." - path: "**/*_test.go" instructions: | - "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request" + "Assess the unit test code assessing sufficient code coverage for the changes associated in the pull request. Only report issues that you have a high degree of confidence in." - path: "**/*.md" instructions: | - "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness. Please DO NOT report any missing or superfluous newlines, in particular at the end or beginning of files." + "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness. Please DO NOT report any missing or superfluous newlines, in particular at the end or beginning of files. Only report issues that you have a high degree of confidence in." - path: ".changelog/*" instructions: | - "Assess the changes in the changelog for correctness and completeness, particularly flagging missing changes" + "Assess the changes in the changelog for correctness and completeness, particularly flagging missing changes. Only report issues that you have a high degree of confidence in." auto_review: enabled: true ignore_title_keywords: diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 0a55a2d111..61976cf2f3 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -22,7 +22,7 @@ updates: directory: "/" schedule: interval: daily - target-branch: "release/v4.1.x" + target-branch: "release/v4.2.x" # Only allow automated security-related dependency updates on release branches. open-pull-requests-limit: 0 labels: @@ -32,17 +32,17 @@ updates: directory: "/" schedule: interval: daily - target-branch: "release/v4.1.x-lsm" + target-branch: "release/v4.2.x-lsm" # Only allow automated security-related dependency updates on release branches. open-pull-requests-limit: 0 labels: - dependencies - - package-ecosystem: gomod + - package-ecosystem: gomod directory: "/" schedule: interval: daily - target-branch: "release/v4.2.x" + target-branch: "release/v4.3.x" # Only allow automated security-related dependency updates on release branches. open-pull-requests-limit: 0 labels: @@ -52,7 +52,7 @@ updates: directory: "/" schedule: interval: daily - target-branch: "release/v4.2.x-lsm" + target-branch: "release/v4.3.x-lsm" # Only allow automated security-related dependency updates on release branches. open-pull-requests-limit: 0 labels: @@ -68,3 +68,13 @@ updates: labels: - dependencies + - package-ecosystem: gomod + directory: "/" + schedule: + interval: daily + target-branch: "release/v5.1.x" + # Only allow automated security-related dependency updates on release branches. + open-pull-requests-limit: 0 + labels: + - dependencies + diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index db8ecca694..55673036d7 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -42,7 +42,7 @@ jobs: ./build_deploy.sh - name: Deploy πŸš€ - uses: JamesIves/github-pages-deploy-action@v4.6.1 + uses: JamesIves/github-pages-deploy-action@v4.6.3 with: branch: gh-pages folder: ~/output diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index bb9c86a3f9..03ac0947ce 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -50,7 +50,7 @@ jobs: # multi-platform images and export cache # https://github.com/docker/setup-buildx-action - name: Set up Docker Buildx - uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 + uses: docker/setup-buildx-action@4fd812986e6c8c2a69e18311145f9371337f27d4 # v3.4.0 # Login against a Docker registry except on PR @@ -80,7 +80,7 @@ jobs: # https://github.com/docker/build-push-action - name: Build and push Docker image id: build-and-push - uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 #v5.3.0 + uses: docker/build-push-action@a254f8ca60a858f3136a2f1f23a60969f2c402dd #v6.4.0 with: context: . file: ./Dockerfile diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 02db4be638..051c80c0f0 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -9,10 +9,11 @@ on: merge_group: permissions: contents: read + jobs: golangci: name: golangci-lint - runs-on: ubuntu-latest + runs-on: Gaia-Runner-medium steps: - uses: actions/setup-go@v5 with: diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 7c573d1647..6c5cd2fc2f 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -17,7 +17,7 @@ jobs: statuses: write # for amannn/action-semantic-pull-request to mark status of analyzed PR runs-on: ubuntu-latest steps: - - uses: amannn/action-semantic-pull-request@v5.5.2 + - uses: amannn/action-semantic-pull-request@v5.5.3 id: lint_pr_title env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/nightly-e2e.yml b/.github/workflows/nightly-e2e.yml index b279c59714..bc76406608 100644 --- a/.github/workflows/nightly-e2e.yml +++ b/.github/workflows/nightly-e2e.yml @@ -36,7 +36,7 @@ jobs: # Run compatibility tests for different consumer (-cv) and provider (-pv) versions. # Combination of all provider versions with consumer versions are tested. # For new versions to be tested add/modify -pc/-cv parameters. - run: go run ./tests/e2e/... --tc compatibility -pv latest -pv v5.0.0-rc0 -pv v4.1.1-lsm -pv v3.3.3-lsm -cv latest -cv v5.0.0-rc0 -cv v4.1.1 -cv v3.3.0 -cv v3.2.0 + run: go run ./tests/e2e/... --tc compatibility -pv latest -pv v5.0.0-rc0 -pv v3.3.3-lsm -cv latest -cv v5.0.0-rc0 -cv v3.3.0 happy-path-test: runs-on: ubuntu-latest timeout-minutes: 20 diff --git a/.github/workflows/proto-registry.yml b/.github/workflows/proto-registry.yml index 0dd39a112c..f1f52b55c7 100644 --- a/.github/workflows/proto-registry.yml +++ b/.github/workflows/proto-registry.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: bufbuild/buf-setup-action@v1.32.2 + - uses: bufbuild/buf-setup-action@v1.34.0 - uses: bufbuild/buf-push-action@v1 with: input: "proto" diff --git a/.github/workflows/proto.yml b/.github/workflows/proto.yml index 68f31f2b67..e9f040fc44 100644 --- a/.github/workflows/proto.yml +++ b/.github/workflows/proto.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: bufbuild/buf-setup-action@v1.32.2 + - uses: bufbuild/buf-setup-action@v1.34.0 - uses: bufbuild/buf-breaking-action@v1 with: input: "proto" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 147ab7f60e..fef4a7d880 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ concurrency: jobs: tests: - runs-on: ubuntu-latest + runs-on: Gaia-Runner-medium steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 @@ -60,7 +60,7 @@ jobs: path: ./profile.out test-integration: - runs-on: ubuntu-latest + runs-on: Gaia-Runner-medium steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 @@ -91,7 +91,7 @@ jobs: path: ./integration-profile.out test-mbt: - runs-on: ubuntu-latest + runs-on: Gaia-Runner-medium steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 @@ -168,7 +168,7 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} test-e2e: - runs-on: ubuntu-latest + runs-on: Gaia-Runner-medium steps: - uses: actions/checkout@v4 with: diff --git a/.mergify.yml b/.mergify.yml index d373fe3fb9..c5825b5bf8 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -10,38 +10,39 @@ queue_rules: - "#approved-reviews-by>1" pull_request_rules: - - name: Backport patches to the release/v4.1.x branch + - name: Backport patches to the release/v4.2.x branch conditions: - base=main - - label=A:backport/v4.1.x + - label=A:backport/v4.2.x actions: backport: branches: - - release/v4.1.x - - name: Backport patches to the release/v4.1.x-lsm branch + - release/v4.2.x + - name: Backport patches to the release/v4.2.x-lsm branch conditions: - base=main - - label=A:backport/v4.1.x-lsm + - label=A:backport/v4.2.x-lsm actions: backport: branches: - - release/v4.1.x-lsm - - name: Backport patches to the release/v4.2.x branch + - release/v4.2.x-lsm +pull_request_rules: + - name: Backport patches to the release/v4.3.x branch conditions: - base=main - - label=A:backport/v4.2.x + - label=A:backport/v4.3.x actions: backport: branches: - - release/v4.2.x - - name: Backport patches to the release/v4.2.x-lsm branch + - release/v4.3.x + - name: Backport patches to the release/v4.3.x-lsm branch conditions: - base=main - - label=A:backport/v4.2.x-lsm + - label=A:backport/v4.3.x-lsm actions: backport: branches: - - release/v4.2.x-lsm + - release/v4.3.x-lsm - name: Backport patches to the release/v5.x branch conditions: - base=main @@ -50,3 +51,11 @@ pull_request_rules: backport: branches: - release/v5.x + - name: Backport patches to the release/v5.1.x branch + conditions: + - base=main + - label=A:backport/v5.1.x + actions: + backport: + branches: + - release/v5.1.x diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e599621c1..20eb92c621 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,28 @@ - Revert `PutUnbondingOnHold` behavior to ICS@v1 ([\#1819](https://github.com/cosmos/interchain-security/pull/1819)) +## v4.4.0 + +*July 16, 2024* + +### API BREAKING + +- Remove soft opt-out feature. + ([\#1964](https://github.com/cosmos/interchain-security/pull/1964)) + +### FEATURES + + + +- Remove soft opt-out feature. + + ([\#1964](https://github.com/cosmos/interchain-security/pull/1964)) + +### STATE BREAKING + +- Remove soft opt-out feature. + ([\#1964](https://github.com/cosmos/interchain-security/pull/1964)) + ## v4.3.1 *July 4, 2024* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8b8389315e..b6aa96afba 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -109,7 +109,7 @@ If your architecture decision is a simple change, you may contribute directly wi In certain circumstances, the architecture decision may require changes to the ICS spec. Note that the spec is responsible for defining language-agnostic, implementation-agnostic behaviors for the ICS protocol. Whereas ADRs are responsible for communicating implementation decisions contained within this repo. -To create an ADR, follow the [template](docs/docs/adrs/adr-template.md) and [doc](docs/docs/adrs/intro.md). If you would like to see examples of how these are written, please refer to the current [ADRs](docs/docs/adrs). +To create an ADR, follow the [template](docs/docs/adrs/templates/adr-template.md) and [doc](docs/docs/adrs/intro.md). If you would like to see examples of how these are written, please refer to the current [ADRs](docs/docs/adrs). ### ADR Proposals @@ -179,7 +179,7 @@ Additionally, **each PR should only address a single issue**. ### Pull Request Templates -There are three PR templates. The [default template](./.github/PULL_REQUEST_TEMPLATE.md) contains links to the three templates. Please go the the `Preview` tab and select the appropriate sub-template: +There are three PR templates. The [default template](./.github/PULL_REQUEST_TEMPLATE.md) contains links to the three templates. Please go to the `Preview` tab and select the appropriate sub-template: - The [production template](./.github/PULL_REQUEST_TEMPLATE/production.md) is for types `fix`, `feat`, and `refactor`. - The [docs template](./.github/PULL_REQUEST_TEMPLATE/docs.md) is for documentation changes. diff --git a/FEATURES.md b/FEATURES.md index f9a54e0589..31d4066926 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -2,19 +2,20 @@ The following table indicates the major ICS features available in the [currently active releases](./RELEASES.md#version-matrix): -| Feature | `v3.2.0` | `v3.3.0` | `v3.3.3-lsm` | `v4.0.0` | `v4.1.1` | `v4.1.1-lsm` | -|---------|---------:|---------:|-------------:|---------:|---------:|-------------:| -| [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) | ❌ | ❌ | ❌ | βœ… | βœ… | βœ… | -| [ICS epochs](https://cosmos.github.io/interchain-security/adrs/adr-014-epochs) | ❌ | ❌ | ❌ | ❌ | βœ… | βœ… | +| Feature | `v3.2.0` | `v4.0.0` | `v4.2.0` | `v4.2.0-lsm` | `v5.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) | ❌ | βœ… | βœ… | βœ… | βœ… | +| [ICS epochs](https://cosmos.github.io/interchain-security/adrs/adr-014-epochs) | ❌ | ❌ | βœ… | βœ… | βœ… | +| [Partial Set Security](https://cosmos.github.io/interchain-security/adrs/adr-015-partial-set-security) | ❌ | ❌ | βœ… | βœ… | ❌ | diff --git a/RELEASES.md b/RELEASES.md index b1d3eefa22..983af29995 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -7,7 +7,6 @@ - [Stable Release Policy](#stable-release-policy) - [Version Matrix](#version-matrix) - [Backwards Compatibility](#backwards-compatibility) - - [Notes](#notes) ## Semantic Versioning @@ -31,7 +30,7 @@ This includes events, queries, CLI interfaces. ## Release Cycle 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. +The stable release guarantees do not go into effect until a final release is performed. ❗***It is never advisable to use a non-final release in production.*** @@ -60,13 +59,12 @@ All missing minor release versions have been discontinued. | Release | End of Life Date | |---------|------------------| | `v3.2.x` | July 10, 2024 | -| `v3.3.x` | July 10, 2024 | -| `v3.3.x-lsm` | July 10, 2024 | | `v4.0.x` | January 24, 2025 | -| `v4.1.x` | January 24, 2025 | +| `v4.2.x` | January 24, 2025 | +| `v5.0.x` | May 9, 2025 | -**Note**: As of [Gaia v15.1.0](https://github.com/cosmos/gaia/releases/tag/v15.1.0), -the Cosmos Hub uses a fork of Cosmos SDK ([v0.47.10-ics-lsm](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.47.10-ics-lsm)) +**Note**: As of [Gaia v17.2.0](https://github.com/cosmos/gaia/releases/tag/v17.2.0), +the Cosmos Hub uses a fork of Cosmos SDK ([v0.47.15-ics-lsm](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.47.15-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. @@ -79,11 +77,10 @@ Versions of Golang, IBC, Cosmos SDK and CometBFT used by ICS in the currently ac | ICS | Golang | IBC | Cosmos SDK | CometBFT | Note | |-----|--------|-----|------------|----------|------| | [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](https://github.com/cosmos/interchain-security/releases/tag/v3.3.0) | 1.20 | v7.3.0 | v0.47.5 | v0.37.2 | -| [v3.3.3-lsm](https://github.com/cosmos/interchain-security/releases/tag/v3.3.3-lsm) | 1.20 | v7.3.1 | v0.47.10-ics-lsm | v0.37.4 | Provider only (Cosmos Hub specific) | | [v4.0.0](https://github.com/cosmos/interchain-security/releases/tag/v4.0.0) | 1.21 | v7.3.1 | v0.47.7 | v0.37.4 | Provider on >= v4.0.0 backwards compatible with consumers >= v3.2.0 | -| [v4.1.1](https://github.com/cosmos/interchain-security/releases/tag/v4.1.1) | 1.21 | v7.4.0 | v0.47.10 | v0.37.4 | -| [v4.1.1-lsm](https://github.com/cosmos/interchain-security/releases/tag/v4.1.1-lsm) | 1.21 | v7.4.0 | v0.47.12-ics-lsm | v0.37.4 | Provider only (Cosmos Hub specific) | +| [v4.2.0](https://github.com/cosmos/interchain-security/releases/tag/v4.2.0) | 1.21 | v7.4.0 | v0.47.11 | v0.37.6 | +| [v4.2.0-lsm](https://github.com/cosmos/interchain-security/releases/tag/v4.2.0-lsm) | 1.21 | v7.4.0 | v0.47.13-ics-lsm | v0.37.6 | Provider only (Cosmos Hub specific) | +| [v5.0.0](https://github.com/cosmos/interchain-security/releases/tag/v5.0.0) | 1.21 | v8.1.0 | v0.50.4 | v0.38.5 | **Note:** For a list of major ICS features available in the currently active releases, see [FEATURES.md](./FEATURES.md). @@ -93,15 +90,9 @@ A MAJOR version of ICS will always be backwards compatible with the previous MAJ The following table indicates the compatibility of currently active releases: -| Consumer | Provider | `v3.2.0` | `v3.3.0` | `v3.3.3-lsm` | `v4.0.0` | `v4.1.1-lsm` | -|----------|----------|----------|----------|--------------|----------|--------------| -| `v3.2.0` || βœ… | βœ… (1) | βœ… | βœ… | βœ… | -| `v3.3.0` || βœ… (1) | βœ… | βœ… | βœ… | βœ… | -| `v4.0.0` || βœ… (1)| βœ… (1)| βœ… (1) | βœ… | βœ… | -| `v4.1.1` || βœ… (1)| βœ… (1)| βœ… (1) | βœ… | βœ… | - -#### 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. - -- (1) Use `interchain-security-cd genesis transform` to transform the consumer genesis file obtained from the provider. \ No newline at end of file +| Consumer | Provider | `v4.2.0-lsm` | +|----------|----------|--------------| +| `v3.2.0` || βœ… | +| `v4.0.0` || βœ… | +| `v4.2.0` || βœ… | +| `v5.0.0` || βœ… | diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 3a172a79c4..d4350c895f 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -6,7 +6,7 @@ - the last release branch: --> -# Replicated Security Release Notes +# Interchain Security Release Notes -Check out the [changelog](https://github.com/cosmos/interchain-security/blob//CHANGELOG.md) for a list of relevant changes or [compare all changes](https://github.com/cosmos/interchain-security/compare/release/...) from last release. +Check out the [changelog](https://github.com/cosmos/interchain-security/blob//CHANGELOG.md) for a list of relevant changes or [compare all changes](https://github.com/cosmos/interchain-security/compare/...) from last release. Refer to the [upgrading guide](https://github.com/cosmos/interchain-security/blob/release//UPGRADING.md) when migrating from `` to ``. diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md index 04d7731a72..1c26c8c5ff 100644 --- a/RELEASE_PROCESS.md +++ b/RELEASE_PROCESS.md @@ -12,7 +12,7 @@ This document outlines the release process for Interchain Security (ICS). For details on ICS releases, see [RELEASES.md](./RELEASES.md). -The procedure of cutting a major or minor release consist of the following steps: +The procedure of cutting a major or minor release consists of the following steps: - Create a new version section in the `CHANGELOG.md` (follow the procedure described [below](#changelog)) - Create release notes, in `RELEASE_NOTES.md`, highlighting the new features and changes in the version. @@ -71,7 +71,7 @@ Before cutting a _**release candidate**_ (e.g., `v3.3.0-rc0`), the following ste unclog release v3.3.0 ``` - `unclog release` requires an editor. This can be set either by configuring - an `$EDITOR` environment variable or by manually specify an editor binary path + an `$EDITOR` environment variable or by manually specifying an editor binary path via the `--editor` flag. - add the date as the summary of the release (`unclog release` requires adding a summary), e.g., ```md @@ -107,6 +107,78 @@ Once the **final release** is cut, the new changelog section must be added to ma ``` - open a PR (from this new created branch) against `main` +## Updating published docs + +### Before tagging a new release + +On your release branch, clear the `docs/versions.json` file so it looks like this: +```json +[] +``` + +If this file is populated on a release branch it will cause the tag to have extra files that the docs deploy process does not expect. This could cause the deploy process to fail in some situations. + +### After tagging a new release + +Go to `main` branch and update the `docs/versions.json` to include all the versions you want to publish on the docs page: +```json +[ + "v4.3.0", + "v5.0.0" +] +``` + +This will cause the docs to be built with `main`, `v4.3.0` and `v5.0.0`. + +In `docs/docusaurus.config.js` change the `preset` section to display the versions you chose in `docs/versions.json`. + +For example, here we remove v4.2.0 and replace it with v4.3.0. + +```diff + presets: [ + [ + "classic", + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + sidebarPath: require.resolve("./sidebars.js"), + routeBasePath: "/", + versions: { + current: { + path: "/", + label: "main", + banner: "unreleased", + }, + // v4.2.0-docs was a special tags for docs + // this is not usually necessary +- "v4.2.0-docs": { +- path: "/v4.2.0/", +- label: "v4.2.0", +- banner: "none", +- }, ++ "v4.3.0": { ++ banner: "none", ++ }, + "v5.0.0": { + banner: "unreleased", + }, + }, + remarkPlugins: [remarkMath], + rehypePlugins: [rehypeKatex], + }, + + theme: { + customCss: require.resolve("./src/css/custom.css"), + }, + }), + ], + ], +``` + +The documentation is updated automatically whenever `main` is changed. + +To learn how to work with docs locally check the docs [README.md on main branch](https://github.com/cosmos/interchain-security/blob/main/docs/README.md) + ## Tagging Procedure **Important**: _**Always create tags from your local machine**_ since all release @@ -136,4 +208,4 @@ git push origin v3.2.0 ``` For final releases, once the tag is created, use the GitHub interface to create a release. -Note that this is not necessary for release candidates. \ No newline at end of file +Note that this is not necessary for release candidates. diff --git a/UPGRADING.md b/UPGRADING.md index 425fd511a3..f6e856bba5 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -1,7 +1,38 @@ # Upgrading Replicated Security +## [v4.4.x](https://github.com/cosmos/interchain-security/releases/tag/v4.4.0) + +### Provider + +***Note that provider chains should not use this version of ICS*** + +### Consumer + +Upgrading the consumer from `v4.0.0` to `v4.4.0` will not require state migration. + This guide provides instructions for upgrading to specific versions of Replicated Security. +## [v4.3.x](https://github.com/cosmos/interchain-security/releases/tag/v4.3.0) + +### Provider + +Upgrading a provider from `v4.2.0` to `v4.3.0` requires state migrations that will be done automatically via the upgrade module. + +### Consumer + +***Note that consumer chains should not use this version of ICS*** + +## [v4.2.x](https://github.com/cosmos/interchain-security/releases/tag/v4.2.0) + +### Provider + +Upgrading a provider from `v4.1.0` or `v4.1.0-lsm` to `v4.2.0` or `v4.2.0-lsm` requires state migrations, see relevant pull request [here](https://github.com/cosmos/interchain-security/pull/1809) +for the corresponding migrators. + +### Consumer + +***Note that consumer chains should not use this version of ICS*** + ## [v4.1.x](https://github.com/cosmos/interchain-security/releases/tag/v4.1.0-rc2) and [v4.1.x-lsm](https://github.com/cosmos/interchain-security/releases/tag/v4.1.0-lsm-rc2) ### Provider diff --git a/app/consumer-democracy/app.go b/app/consumer-democracy/app.go index b7506eb0c7..6ceb8952e4 100644 --- a/app/consumer-democracy/app.go +++ b/app/consumer-democracy/app.go @@ -151,7 +151,6 @@ var ( mint.AppModuleBasic{}, ccvdistr.AppModuleBasic{}, gov.NewAppModuleBasic( - // TODO: eventually remove upgrade proposal handler and cancel proposal handler []govclient.ProposalHandler{ paramsclient.ProposalHandler, }, @@ -582,7 +581,6 @@ func New( // CanWithdrawInvariant invariant. // NOTE: staking module is required if HistoricalEntries param > 0 // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC) - // NOTE: the soft opt-out requires that the consumer module's beginblocker comes after the slashing module's beginblocker app.MM.SetOrderBeginBlockers( capabilitytypes.ModuleName, minttypes.ModuleName, @@ -755,7 +753,7 @@ func New( }, ) if err != nil { - panic(fmt.Errorf("failed to create AnteHandler: %s", err)) + panic(fmt.Errorf("failed to create AnteHandler: %w", err)) } app.SetAnteHandler(anteHandler) diff --git a/app/consumer-democracy/proposals_whitelisting.go b/app/consumer-democracy/proposals_whitelisting.go index fb333dc014..975c9dbbad 100644 --- a/app/consumer-democracy/proposals_whitelisting.go +++ b/app/consumer-democracy/proposals_whitelisting.go @@ -29,10 +29,10 @@ type legacyParamChangeKey struct { Subspace, Key string } -// these parameters don't exist in the consumer app -- keeping them as an +// these parameters don't exist in the consumer app -- keeping them as an example var LegacyWhitelistedParams = map[legacyParamChangeKey]struct{}{ - // add whitlisted legacy parameters here [cosmos-sdk <= 0.47] - // commented parameters are just an example - most params have been moved to their respecitve modules + // add whitelisted legacy parameters here [cosmos-sdk <= 0.47] + // commented parameters are just an example - most params have been moved to their respective modules // and they cannot be changed through legacy governance proposals {Subspace: banktypes.ModuleName, Key: "SendEnabled"}: {}, } diff --git a/app/consumer/app.go b/app/consumer/app.go index 3bf468b22f..8eb64bf5c6 100644 --- a/app/consumer/app.go +++ b/app/consumer/app.go @@ -516,7 +516,6 @@ func New( // NOTE: Capability module must occur first so that it can initialize any capabilities // so that other modules that want to create or claim capabilities afterwards in InitChain // can do so safely. - // NOTE: the soft opt-out requires that the consumer module's beginblocker comes after the slashing module's beginblocker app.MM.SetOrderInitGenesis( capabilitytypes.ModuleName, authtypes.ModuleName, @@ -577,7 +576,7 @@ func New( }, ) if err != nil { - panic(fmt.Errorf("failed to create AnteHandler: %s", err)) + panic(fmt.Errorf("failed to create AnteHandler: %w", err)) } app.SetAnteHandler(anteHandler) diff --git a/app/consumer/genesis.go b/app/consumer/genesis.go index 466c9df753..ed7e1e7831 100644 --- a/app/consumer/genesis.go +++ b/app/consumer/genesis.go @@ -80,6 +80,9 @@ func transformToNew(jsonRaw []byte, ctx client.Context) (json.RawMessage, error) oldConsumerGenesis.Params.RetryDelayPeriod = types.DefaultRetryDelayPeriod } + // `SoftOptOutThreshold` is deprecated in the current consumer implementation, so set to zero + oldConsumerGenesis.Params.SoftOptOutThreshold = "0" + // Versions before v3.3.x of provider genesis data fills up deprecated fields // ProviderClientState, ConsensusState and InitialValSet in type GenesisState newGenesis := types.ConsumerGenesisState{ diff --git a/app/consumer/genesis_test.go b/app/consumer/genesis_test.go index 2dd29e1b71..e91c8a66d5 100644 --- a/app/consumer/genesis_test.go +++ b/app/consumer/genesis_test.go @@ -494,7 +494,9 @@ func TestConsumerGenesisTransformationFromV2ToCurrent(t *testing.T) { require.EqualValues(t, srcGenesis.Params.ConsumerRedistributionFraction, resultGenesis.Params.ConsumerRedistributionFraction) require.EqualValues(t, srcGenesis.Params.HistoricalEntries, resultGenesis.Params.HistoricalEntries) require.EqualValues(t, srcGenesis.Params.UnbondingPeriod, resultGenesis.Params.UnbondingPeriod) - require.EqualValues(t, srcGenesis.Params.SoftOptOutThreshold, resultGenesis.Params.SoftOptOutThreshold) + + // `SoftOptOutThreshold` is deprecated, so it should be set to zero the current version + require.EqualValues(t, "0", resultGenesis.Params.SoftOptOutThreshold) require.EqualValues(t, srcGenesis.Params.RewardDenoms, resultGenesis.Params.RewardDenoms) require.EqualValues(t, srcGenesis.Params.ProviderRewardDenoms, resultGenesis.Params.ProviderRewardDenoms) @@ -565,7 +567,10 @@ func TestConsumerGenesisTransformationV330ToCurrent(t *testing.T) { require.Equal(t, srcGenesis.Params.ConsumerRedistributionFraction, resultGenesis.Params.ConsumerRedistributionFraction) require.Equal(t, srcGenesis.Params.HistoricalEntries, resultGenesis.Params.HistoricalEntries) require.Equal(t, srcGenesis.Params.UnbondingPeriod, resultGenesis.Params.UnbondingPeriod) - require.Equal(t, srcGenesis.Params.SoftOptOutThreshold, resultGenesis.Params.SoftOptOutThreshold) + + // `SoftOptOutThreshold` is deprecated, so it should be set to zero the current version + require.Equal(t, "0", resultGenesis.Params.SoftOptOutThreshold) + require.Equal(t, srcGenesis.Params.RewardDenoms, resultGenesis.Params.RewardDenoms) require.Equal(t, srcGenesis.Params.ProviderRewardDenoms, resultGenesis.Params.ProviderRewardDenoms) diff --git a/app/provider/app.go b/app/provider/app.go index 4c998bdc13..23262161b4 100644 --- a/app/provider/app.go +++ b/app/provider/app.go @@ -678,8 +678,6 @@ func New( panic(err) } - // create the simulation manager and define the order of the modules for deterministic simulations - // Note this upgrade handler is just an example and may not be exactly what you need to implement. // See https://docs.cosmos.network/v0.45/building-modules/upgrade.html app.UpgradeKeeper.SetUpgradeHandler( @@ -743,7 +741,7 @@ func New( }, ) if err != nil { - panic(fmt.Errorf("failed to create AnteHandler: %s", err)) + panic(fmt.Errorf("failed to create AnteHandler: %w", err)) } app.SetInitChainer(app.InitChainer) @@ -1060,7 +1058,5 @@ func MakeTestEncodingConfig() appencoding.EncodingConfig { func makeEncodingConfig() appencoding.EncodingConfig { encodingConfig := appencoding.MakeTestEncodingConfig() - // std.RegisterLegacyAminoCodec(encodingConfig.Amino) - // std.RegisterInterfaces(encodingConfig.InterfaceRegistry) return encodingConfig } diff --git a/app/sovereign/app.go b/app/sovereign/app.go index 67386cc70a..328fb5e4b9 100644 --- a/app/sovereign/app.go +++ b/app/sovereign/app.go @@ -597,7 +597,7 @@ func New( }, ) if err != nil { - panic(fmt.Errorf("failed to create AnteHandler: %s", err)) + panic(fmt.Errorf("failed to create AnteHandler: %w", err)) } app.SetAnteHandler(anteHandler) diff --git a/docs/build_deploy.sh b/docs/build_deploy.sh index 2e948cb55d..ba262e43b2 100755 --- a/docs/build_deploy.sh +++ b/docs/build_deploy.sh @@ -1,12 +1,13 @@ #!/bin/sh -echo "######### BUILD DOCS #########" - -# pull in the versions from versions.json -source ./sync_versions.sh - +# build versioned docs prepared by sync_versions.sh echo "building docusaurus main docs" npm ci && npm run build + +# copy "legacy" docs directory into the final build directory +# the directory is in "docs/legacy" of the source branch (legacy-docs-page) +# the build environment must be in "./docs" for this to work as expected +git checkout origin/legacy-docs-page -- legacy cp -r ./legacy ./build/ mv build ~/output echo "done building docusaurus main docs" diff --git a/docs/docs/adrs/adr-004-denom-dos-fixes.md b/docs/docs/adrs/adr-004-denom-dos-fixes.md index 7ca260f4f6..354eac337f 100644 --- a/docs/docs/adrs/adr-004-denom-dos-fixes.md +++ b/docs/docs/adrs/adr-004-denom-dos-fixes.md @@ -1,6 +1,6 @@ --- sidebar_position: 2 -title: ADR Template +title: Denom DOS fixes --- # ADR 004: Denom DOS fixes diff --git a/docs/docs/adrs/adr-005-cryptographic-equivocation-verification.md b/docs/docs/adrs/adr-005-cryptographic-equivocation-verification.md index 1e1a3f08cf..f47a658f4c 100644 --- a/docs/docs/adrs/adr-005-cryptographic-equivocation-verification.md +++ b/docs/docs/adrs/adr-005-cryptographic-equivocation-verification.md @@ -87,7 +87,7 @@ The application will, in turn, punish the malicious validator through jailing, t In the first part of the feature, we introduce a new endpoint: `HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour)`. The main idea is to leverage the current IBC misbehaviour handling and update it to solely jail and slash the validators that performed a light client attack. Note that in this context, we assume that chains connected via a light client -share the same validator set, as is the case with Replicated Security. +share a subset of the validator set of the provider. This endpoint reuses the IBC client libraries to verify that the misbehaviour headers would have fooled the light client. Additionally, it’s crucial that the endpoint logic results in the slashing and jailing of validators under the same conditions diff --git a/docs/docs/adrs/adr-007-pause-unbonding-on-eqv-prop.md b/docs/docs/adrs/adr-007-pause-unbonding-on-eqv-prop.md index ce23051582..2e8e95d67f 100644 --- a/docs/docs/adrs/adr-007-pause-unbonding-on-eqv-prop.md +++ b/docs/docs/adrs/adr-007-pause-unbonding-on-eqv-prop.md @@ -1,6 +1,6 @@ --- sidebar_position: 2 -title: ADR Template +title: Pause validator unbonding during equivocation proposal --- # ADR 007: Pause validator unbonding during equivocation proposal diff --git a/docs/docs/adrs/adr-008-throttle-retries.md b/docs/docs/adrs/adr-008-throttle-retries.md index 710443bb65..8aad6153d4 100644 --- a/docs/docs/adrs/adr-008-throttle-retries.md +++ b/docs/docs/adrs/adr-008-throttle-retries.md @@ -19,7 +19,7 @@ Accepted For context on why the throttling mechanism exists, see [ADR 002](./adr-002-throttle.md). -Note the terms slash throttling and jail throttling are synonymous, since in replicated security a `SlashPacket` simply jails a validator for downtime infractions. +Note the terms slash throttling and jail throttling are synonymous, since in Interchain Security a `SlashPacket` simply jails a validator for downtime infractions. Currently the throttling mechanism is designed so that provider logic (slash meter, etc.) dictates how many `SlashPackets` can be handled over time. Throttled `SlashPackets` are persisted on the provider, leading to multiple possible issues. Namely: diff --git a/docs/docs/adrs/adr-009-soft-opt-out.md b/docs/docs/adrs/adr-009-soft-opt-out.md index b8dbc27124..defe885a96 100644 --- a/docs/docs/adrs/adr-009-soft-opt-out.md +++ b/docs/docs/adrs/adr-009-soft-opt-out.md @@ -7,11 +7,12 @@ title: Soft Opt-Out ## Changelog * 6/13/23: Initial draft of ADR. Feature already implemented and in production. +* 6/19/24: Change status to deprecated ## Status -Accepted - +Deprecated +Deprecated by [Partial Set Security](adr-015-partial-set-security.md) ## Context Some small validators may not have the resources needed to validate all consumer chains. Therefore a need exists to allow the bottom `x%` of validators to opt-out of validating a consumer chain. Meaning downtime infractions for these validators are dropped without ever reaching the provider. diff --git a/docs/docs/adrs/adr-010-standalone-changeover.md b/docs/docs/adrs/adr-010-standalone-changeover.md index e181b4c1f1..ed320738f5 100644 --- a/docs/docs/adrs/adr-010-standalone-changeover.md +++ b/docs/docs/adrs/adr-010-standalone-changeover.md @@ -14,7 +14,7 @@ Implemented ## Context -[Stride](https://github.com/Stride-Labs/stride) will be the first consumer to "changeover" from a standalone cosmos blockchain, to a consumer chain secured by the Cosmos Hub. This document will outline the changes made to the replicated security protocol to support this changeover process. +[Stride](https://github.com/Stride-Labs/stride) will be the first consumer to "changeover" from a standalone cosmos blockchain, to a consumer chain secured by the Cosmos Hub. This document outlines the changes made to support this changeover process. ## Decision @@ -26,7 +26,7 @@ The first step in the changeover process is to submit a ConsumerAdditionProposal Next, the standalone consumer chain runs an upgrade which adds the CCV module, and is properly setup to execute changeover logic. -The consumer upgrade height must be reached after the provider has created the new IBC client. Any replicated security validators who will run the consumer, but are not a part of the sovereign validator set, must sync up a full node before the consumer upgrade height is reached. The disk state of said full node will be used to run the consumer chain after the changeover has completed. +The consumer upgrade height must be reached after the provider has created the new IBC client. Any Interchain Security validators who will run the consumer, but are not a part of the sovereign validator set, must sync up a full node before the consumer upgrade height is reached. The disk state of said full node will be used to run the consumer chain after the changeover has completed. The meat of the changeover logic is that the consumer chain validator set is updated to that which was specified by the provider via the queried consumer genesis. Validators which were a part of the old set, but not the new set, are given zero voting power. Once these validator updates are given to Comet, the set is committed, and in effect 2 blocks later (see [FirstConsumerHeight](https://github.com/cosmos/interchain-security/blob/f10e780df182158d95a30f7cf94588b2d0479309/x/ccv/consumer/keeper/changeover.go#L19)). diff --git a/docs/docs/adrs/adr-017-allowing-inactive-validators.md b/docs/docs/adrs/adr-017-allowing-inactive-validators.md index 9a3715f135..f76f5f7069 100644 --- a/docs/docs/adrs/adr-017-allowing-inactive-validators.md +++ b/docs/docs/adrs/adr-017-allowing-inactive-validators.md @@ -67,7 +67,7 @@ set of consumer chains. To mitigate risks from validators with little stake, we introduce a minimum stake requirement for validators to be able to validate on consumer chains, which can be set by each consumer chain independently, with a default value set by the provider chain. -Additionally, we indepdently allow individual consumer chains to disable this feature, which will disallow validators from outside the provider active set from validating on the consumer chain and revert them to the previous behaviour of only considering validators of the provider that are part of the active consensus validator set. +Additionally, we independently allow individual consumer chains to disable this feature, which will disallow validators from outside the provider active set from validating on the consumer chain and revert them to the previous behaviour of only considering validators of the provider that are part of the active consensus validator set. Additional risk mitigations are to increase the active set size slowly, and to monitor the effects on the network closely. For the first iteration, we propose to increase the active set size to 200 validators (while keeping the consensus validators to 180), thus letting the 20 validators with the most stake outside of the active set validate on consumer chains. diff --git a/docs/docs/adrs/intro.md b/docs/docs/adrs/intro.md index fc7d06a152..110698c518 100644 --- a/docs/docs/adrs/intro.md +++ b/docs/docs/adrs/intro.md @@ -1,13 +1,13 @@ --- sidebar_position: 1 -title: ADRs +title: Overview --- -# Architecture Decision Records (ADR) +# Overview This is a location to record all high-level architecture decisions in the Interchain Security project. -You can read more about the ADR concept in this [blog post](https://product.reverb.com/documenting-architecture-decisions-the-reverb-way-a3563bb24bd0#.78xhdix6t). +You can read more about the Architecture Decision Record (ADR) concept in this [blog post](https://product.reverb.com/documenting-architecture-decisions-the-reverb-way-a3563bb24bd0#.78xhdix6t). An ADR should provide: @@ -26,7 +26,7 @@ If recorded decisions turned out to be lacking, convene a discussion, record the Note the context/background should be written in the present tense. -To suggest an ADR, please make use of the [ADR template](./adr-template.md) provided. +To suggest an ADR, please make use of the [ADR template](./templates/adr-template.md) provided. ## Table of Contents @@ -37,7 +37,6 @@ To suggest an ADR, please make use of the [ADR template](./adr-template.md) prov - [ADR 004: Denom DOS fixes](./adr-004-denom-dos-fixes.md) - [ADR 005: Cryptographic verification of equivocation evidence](./adr-005-cryptographic-equivocation-verification.md) - [ADR 008: Throttle with retries](./adr-008-throttle-retries.md) -- [ADR 009: Soft Opt-Out](./adr-009-soft-opt-out.md) - [ADR 010: Standalone to Consumer Changeover](./adr-010-standalone-changeover.md) - [ADR 013: Slashing on the provider for consumer equivocation](./adr-013-equivocation-slashing.md) - [ADR 014: Epochs](./adr-014-epochs.md) @@ -57,3 +56,4 @@ To suggest an ADR, please make use of the [ADR template](./adr-template.md) prov ### Deprecated - [ADR 003: Equivocation governance proposal](./adr-003-equivocation-gov-proposal.md) +- [ADR 009: Soft Opt-Out](./adr-009-soft-opt-out.md) diff --git a/docs/docs/adrs/adr-template.md b/docs/docs/adrs/templates/adr-template.md similarity index 100% rename from docs/docs/adrs/adr-template.md rename to docs/docs/adrs/templates/adr-template.md diff --git a/docs/docs/consumer-development/app-integration.md b/docs/docs/consumer-development/app-integration.md index 73c034d073..0671db05a7 100644 --- a/docs/docs/consumer-development/app-integration.md +++ b/docs/docs/consumer-development/app-integration.md @@ -10,8 +10,9 @@ To help you on your journey, the ICS team has provided multiple examples of a mi The source code for the example app can be found [here](https://github.com/cosmos/interchain-security/tree/main/app/consumer). -Please note that consumer chains do not implement the staking module - the validator set is replicated from the provider, meaning that the provider and the consumer use the same validator set and their stake on the provider directly determines their stake on the consumer. -At present there is no opt-in mechanism available, so all validators of the provider must also validate on the provider chain. +Please note that consumer chains do not implement the staking module - part of the validator set of the provider is replicated over to the consumer, +meaning that the consumer uses a subset of provider validator set and the stake of the validators on the provider determines their stake on the consumer. +Note that after the introduction of [Partial Set Security](../adrs/adr-015-partial-set-security.md), not all the provider validators have to validate a consumer chain (e.g., if `top_N != 100`). Your chain should import the consumer module from `x/consumer` and register it in the correct places in your `app.go`. The `x/consumer` module will allow your chain to communicate with the provider using the ICS protocol. The module handles all IBC communication with the provider, and it is a simple drop-in. diff --git a/docs/docs/consumer-development/changeover-procedure.md b/docs/docs/consumer-development/changeover-procedure.md index 332bade599..72da738d49 100644 --- a/docs/docs/consumer-development/changeover-procedure.md +++ b/docs/docs/consumer-development/changeover-procedure.md @@ -4,7 +4,7 @@ sidebar_position: 5 # Changeover Procedure -Chains that were not initially launched as consumers of replicated security can still participate in the protocol and leverage the economic security of the provider chain. The process where a standalone chain transitions to being a replicated consumer chain is called the **changeover procedure** and is part of the interchain security protocol. After the changeover, the new consumer chain will retain all existing state, including the IBC clients, connections and channels already established by the chain. +Chains that were **not** initially launched as consumers of Interchain Security can still participate in the protocol and leverage the economic security of the provider chain. The process where a standalone chain transitions to being a replicated consumer chain is called the **changeover procedure** and is part of the interchain security protocol. After the changeover, the new consumer chain will retain all existing state, including the IBC clients, connections and channels already established by the chain. The relevant protocol specifications are available below: * [ICS-28 with 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). @@ -90,7 +90,7 @@ This `ConsumerGenesis` must be available on the standalone chain during the on-c ### 4. standalone chain upgrade -Performing the on-chain upgrade on the standalone chain will add the `ccv/consumer` module and allow the chain to become a `consumer` of replicated security. +Performing the on-chain upgrade on the standalone chain will add the `ccv/consumer` module and allow the chain to become a `consumer` of Interchain Security. :::caution The `ConsumerGenesis` must be exported to a file and placed in the correct folder on the standalone chain before the upgrade. @@ -154,9 +154,9 @@ Example of a consumer chain addition proposal (compare with the [ConsumerAdditio ```js // ConsumerAdditionProposal is a governance proposal on the provider chain to spawn a new consumer chain or add a standalone chain. -// If it passes, then all validators on the provider chain are expected to validate the consumer chain at spawn time. -// It is recommended that spawn time occurs after the proposal end time and that it is scheduled to happen before the standalone chain upgrade -// that sill introduce the ccv module. +// If it passes, then a subset (i.e., depends on `top_N` and on the power shaping parameters) of validators on the provider chain are expected +// to validate the consumer chain at spawn time. It is recommended that spawn time occurs after the proposal end time and that it is +// scheduled to happen before the standalone chain upgrade that sill introduce the ccv module. { // Title of the proposal "title": "Changeover Standalone chain", @@ -212,9 +212,34 @@ Example of a consumer chain addition proposal (compare with the [ConsumerAdditio // it is most relevant for chains performing a standalone to consumer changeover // in order to maintain the existing ibc transfer channel "distribution_transmission_channel": "channel-123" // NOTE: use existing transfer channel if available + // Corresponds to the percentage of validators that have to validate the chain under the Top N case. + // For example, 53 corresponds to a Top 53% chain, meaning that the top 53% provider validators by voting power + // have to validate the proposed consumer chain. top_N can either be 0 or any value in [50, 100]. + // A chain can join with top_N == 0 as an Opt In chain, or with top_N ∈ [50, 100] as a Top N chain. + "top_N": 95, + // Corresponds to the maximum power (percentage-wise) a validator can have on the consumer chain. For instance, if + // `validators_power_cap` is set to 32, it means that no validator can have more than 32% of the voting power on the + // consumer chain. Note that this might not be feasible. For example, think of a consumer chain with only + // 5 validators and with `validators_power_cap` set to 10%. In such a scenario, at least one validator would need + // to have more than 20% of the total voting power. Therefore, `validators_power_cap` operates on a best-effort basis. + "validators_power_cap": 0, + // Corresponds to the maximum number of validators that can validate a consumer chain. + // Only applicable to Opt In chains. Setting `validator_set_cap` on a Top N chain is a no-op. + "validator_set_cap": 0, + // Corresponds to a list of provider consensus addresses of validators that are the ONLY ones that can validate + // the consumer chain. + "allowlist": [], + // Corresponds to a list of provider consensus addresses of validators that CANNOT validate the consumer chain. + "denylist": [] } ``` +:::info +As seen in the `ConsumerAdditionProposal` example above, the changeover procedure can be used together with [Partial Set Security](../adrs/adr-015-partial-set-security.md). +This means, that a standalone chain can choose to only be validated by some of the validators of the provider chain by setting `top_N` appropriately, or by +additionally setting a validators-power cap, validator-set cap, etc. by using the [power-shaping parameters](../features/power-shaping.md). +::: + ## 3. Submit an Upgrade Proposal & Prepare for Changeover This proposal should add the ccv `consumer` module to your chain. diff --git a/docs/docs/features/democracy-modules.md b/docs/docs/features/democracy-modules.md index 5add40c67e..a89466d863 100644 --- a/docs/docs/features/democracy-modules.md +++ b/docs/docs/features/democracy-modules.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 5 +--- + # Democracy modules This section is relevant for chains transitioning from a standalone chain and new consumer chains that require some functionality from the `x/staking` module. diff --git a/docs/docs/features/partial-set-security.md b/docs/docs/features/partial-set-security.md index 6405fe092b..4e221583b5 100644 --- a/docs/docs/features/partial-set-security.md +++ b/docs/docs/features/partial-set-security.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 6 --- # Partial Set Security diff --git a/docs/docs/features/power-shaping.md b/docs/docs/features/power-shaping.md index 2f51aef8f0..0b065c3ac0 100644 --- a/docs/docs/features/power-shaping.md +++ b/docs/docs/features/power-shaping.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 7 +--- + # Power Shaping To give consumer chains more flexibility in choosing their validator set, Interchain Security offers diff --git a/docs/docs/features/reward-distribution.md b/docs/docs/features/reward-distribution.md index cc055107c9..e042605cdd 100644 --- a/docs/docs/features/reward-distribution.md +++ b/docs/docs/features/reward-distribution.md @@ -8,7 +8,7 @@ sidebar_position: 2 Sending and distributing rewards from consumer chains to the provider chain is handled by the [Reward Distribution sub-protocol](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#reward-distribution). Consumer chains have the option of sharing (a portion of) their block rewards (inflation tokens and fees) with the provider chain validators and delegators. -In replicated security, block rewards are periodically sent from the consumer to the provider according to consumer chain parameters using an IBC transfer channel. +In Interchain Security, block rewards are periodically sent from the consumer to the provider according to consumer chain parameters using an IBC transfer channel. This channel is created during consumer chain initialization, unless it is provided via the `ConsumerAdditionProposal` when adding a new consumer chain. For more details, see the [reward distribution parameters](../introduction/params.md#reward-distribution-parameters). diff --git a/docs/docs/frequently-asked-questions.md b/docs/docs/frequently-asked-questions.md index c78dc89f0f..27623d22f6 100644 --- a/docs/docs/frequently-asked-questions.md +++ b/docs/docs/frequently-asked-questions.md @@ -80,7 +80,7 @@ Consumer chain upgrades are unlikely to impact the provider chain, as long as th ## How can I connect to the testnets? -Check out the [Joining Replicated Security testnet](./validators/joining-testnet.md) section. +Check out the [Joining Interchain Security testnet](./validators/joining-testnet.md) section. ## How do I start using ICS? diff --git a/docs/docs/index.mdx b/docs/docs/index.mdx index 9ad9a3e2da..2086a4f384 100644 --- a/docs/docs/index.mdx +++ b/docs/docs/index.mdx @@ -10,6 +10,6 @@ import homeCards from '/src/components/Cards/card-data/home-cards'; Welcome to the official Interchain Security module documentation for Cosmos-SDK based chains. -Here you can find information about replicated security, consumer chain development and instructions for validator onboarding. +Here you can find information about Interchain Security, consumer chain development and instructions for validator onboarding. diff --git a/docs/docs/introduction/terminology.md b/docs/docs/introduction/terminology.md index dd9cd57602..63668c9b43 100644 --- a/docs/docs/introduction/terminology.md +++ b/docs/docs/introduction/terminology.md @@ -29,14 +29,14 @@ A protocol built on IBC that allows delegators on a cosmos chain to re-delegate ## Consumer Chain Chain that is secured by the validator set of the provider, instead of its own. -Replicated security allows the provider chain validator set to validate blocks on the consumer chain. +Interchain Security allows a subset of the provider chain's validator set to validate blocks on the consumer chain. ## Standalone Chain -Chain that is secured by its own validator set. This chain does not participate in replicated security. +Chain that is secured by its own validator set. This chain does not participate in Interchain Security. Standalone chains may sometimes be called "sovereign" - the terms are synonymous. ## Changeover Procedure -Chains that were not initially launched as consumers of replicated security can still participate in the protocol and leverage the economic security of the provider chain. The process where a standalone chain transitions to being a replicated consumer chain is called the **changeover procedure** and is part of the interchain security protocol. After the changeover, the new consumer chain will retain all existing state, including the IBC clients, connections and channels already established by the chain. +Chains that were not initially launched as consumers of Interchain Security can still participate in the protocol and leverage the economic security of the provider chain. The process where a standalone chain transitions to being a replicated consumer chain is called the **changeover procedure** and is part of the interchain security protocol. After the changeover, the new consumer chain will retain all existing state, including the IBC clients, connections and channels already established by the chain. diff --git a/docs/docs/validators/changeover-procedure.md b/docs/docs/validators/changeover-procedure.md index edb738bed4..4ce6cb4714 100644 --- a/docs/docs/validators/changeover-procedure.md +++ b/docs/docs/validators/changeover-procedure.md @@ -73,16 +73,16 @@ Yes. Please assign your consensus key as stated above. -### Can I set up a new node to validate the `standalone/consumer` chain after it transitions to replicated security? +### Can I set up a new node to validate the `standalone/consumer` chain after it transitions to Interchain Security? Yes. If you are planning to do this please make sure that the node is synced with `standalone` network and to submit `AssignConsumerKey` tx before `spawn_time`. -### What happens to the `standalone` validator set after it transitions to replicated security? +### What happens to the `standalone` validator set after it transitions to Interchain Security? -The `standalone` chain validators will stop being validators after the first 3 blocks are created while using replicated security. The `standalone` validators will become **governors** and still can receive delegations if the `consumer` chain is using the `consumer-democracy` module. +The `standalone` chain validators will stop being validators after the first 3 blocks are created while using Interchain Security. The `standalone` validators will become **governors** and still can receive delegations if the `consumer` chain is using the `consumer-democracy` module. **Governors DO NOT VALIDATE BLOCKS**. diff --git a/docs/docs/validators/joining-testnet.md b/docs/docs/validators/joining-testnet.md index e07a28e7c3..d61be07e12 100644 --- a/docs/docs/validators/joining-testnet.md +++ b/docs/docs/validators/joining-testnet.md @@ -12,7 +12,7 @@ The experience gained in the testnet will prepare you for validating interchain :::tip Provider and consumer chain represent distinct networks and infrastructures operated by the same validator set. -For general information about running cosmos-sdk based chains check out the [validator basics](https://hub.cosmos.network/main/validators/validator-setup) and [Running a Node section](https://docs.cosmos.network/main/run-node/run-node) of Cosmos SDK docs. +For general information about running cosmos-sdk based chains check out the [validator basics](https://hub.cosmos.network/main/validators/validator-setup) and [Running a Node section](https://docs.cosmos.network/main/run-node/run-node) of Cosmos SDK docs ::: ## Joining the provider chain diff --git a/docs/docs/validators/overview.md b/docs/docs/validators/overview.md index ff22edb560..c1dbaea0e2 100644 --- a/docs/docs/validators/overview.md +++ b/docs/docs/validators/overview.md @@ -4,17 +4,22 @@ sidebar_position: 1 # Overview :::tip -We advise that you join the [Replicated Security testnet](https://github.com/cosmos/testnets/tree/master/interchain-security) to gain hands-on experience with running consumer chains. +We advise that you join the [Interchain Security testnet](https://github.com/cosmos/testnets/tree/master/interchain-security) to gain hands-on experience with running consumer chains. ::: -At present, replicated security requires all validators of the provider chain (ie. Cosmos Hub) to run validator nodes for all governance-approved consumer chains. +At present, Interchain Security requires some or all the validators of the provider chain (ie. Cosmos Hub) to run validator nodes for a consumer chain. +Whether a validator has to run a validator node for a consumer chain depends on whether the consumer chain is a Top N or an +Opt-In chain and also on the [power-shaping features](../features/power-shaping.md). A validator can use the +[`has-to-validate` query](./partial-set-security-for-validators.md#which-chains-does-a-validator-have-to-validate) +to keep track of all the chains it has to validate. -Once a `ConsumerAdditionProposal` passes, validators need to prepare to run the consumer chain binaries (these will be linked in their proposals) and set up validator nodes on governance-approved consumer chains. -Provider chain and consumer chains represent standalone chains that only share the validator set ie. the same validator operators are tasked with running all chains. +Once a `ConsumerAdditionProposal` passes, relevant validators need to prepare to run the consumer chain binaries (these will be linked in their proposals) and set up validator nodes on governance-approved consumer chains. + +Provider chain and consumer chains represent standalone chains that only share part of the validator set. :::info -To validate a consumer chain and be eligible for rewards validators are required to be in the active set of the provider chain (first 180 validators for Cosmos Hub). +To validate a consumer chain and be eligible for rewards, validators are required to be in the active set of the provider chain (first 180 validators for Cosmos Hub). ::: ## Startup sequence overview diff --git a/docs/docs/validators/withdraw_rewards.md b/docs/docs/validators/withdraw_rewards.md index 15d27b3006..caf37f22c7 100644 --- a/docs/docs/validators/withdraw_rewards.md +++ b/docs/docs/validators/withdraw_rewards.md @@ -16,7 +16,7 @@ the actual values of the `NumberOfEpochsToStartReceivingRewards` and `BlocksPerE Here are example steps for withdrawing rewards from consumer chains in the provider chain :::info -The examples used are from `rs-testnet`, the replicated security persistent testnet. +The examples used are from `rs-testnet`, the Interchain Security persistent testnet. Validator operator address: `cosmosvaloper1e5yfpc8l6g4808fclmlyd38tjgxuwshnmjkrq6` Self-delegation address: `cosmos1e5yfpc8l6g4808fclmlyd38tjgxuwshn7xzkvf` diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index e73d5e2a21..17ff9aeb7b 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -56,6 +56,7 @@ const config = { }, remarkPlugins: [remarkMath], rehypePlugins: [rehypeKatex], + exclude: ["**/templates/*"], }, theme: { diff --git a/go.mod b/go.mod index 35be2495a4..2e102870af 100644 --- a/go.mod +++ b/go.mod @@ -5,10 +5,10 @@ go 1.22.2 require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 - github.com/cometbft/cometbft v0.38.7 + github.com/cometbft/cometbft v0.38.9 github.com/cometbft/cometbft-db v0.12.0 // indirect - github.com/cosmos/cosmos-sdk v0.50.5 - github.com/cosmos/gogoproto v1.4.11 + github.com/cosmos/cosmos-sdk v0.50.7 + github.com/cosmos/gogoproto v1.4.12 github.com/cosmos/ics23/go v0.10.0 github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.4 @@ -20,12 +20,12 @@ require ( github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.17.1 - golang.org/x/crypto v0.21.0 // indirect - golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 - golang.org/x/net v0.23.0 // indirect - golang.org/x/sys v0.18.0 // indirect - google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect - google.golang.org/grpc v1.62.1 + golang.org/x/crypto v0.22.0 // indirect + golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 + golang.org/x/net v0.24.0 // indirect + golang.org/x/sys v0.19.0 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/grpc v1.63.2 google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -36,7 +36,7 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.36.0 // indirect - cosmossdk.io/api v0.7.3 + cosmossdk.io/api v0.7.5 cosmossdk.io/core v0.11.0 cosmossdk.io/depinject v1.0.0-alpha.4 // indirect filippo.io/edwards25519 v1.0.0 // indirect @@ -48,14 +48,14 @@ require ( github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.4 + github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v1.0.1 // indirect + github.com/cosmos/iavl v1.1.2 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc @@ -72,7 +72,7 @@ require ( github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.2.0 // indirect + github.com/golang/glog v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.2 // indirect @@ -111,13 +111,13 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect - github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect + github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect - github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.52.2 // indirect + github.com/prometheus/procfs v0.13.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rs/cors v1.8.3 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect @@ -135,10 +135,9 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect golang.org/x/oauth2 v0.18.0 // indirect - golang.org/x/term v0.18.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/api v0.171.0 // indirect - google.golang.org/appengine v1.6.8 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect nhooyr.io/websocket v1.8.6 // indirect @@ -150,18 +149,18 @@ require ( cosmossdk.io/client/v2 v2.0.0-beta.1 cosmossdk.io/collections v0.4.0 cosmossdk.io/log v1.3.1 - cosmossdk.io/store v1.0.2 + cosmossdk.io/store v1.1.0 cosmossdk.io/tools/confix v0.1.1 cosmossdk.io/x/evidence v0.1.0 cosmossdk.io/x/feegrant v0.1.0 - cosmossdk.io/x/tx v0.13.1 + cosmossdk.io/x/tx v0.13.3 cosmossdk.io/x/upgrade v0.1.1 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/ibc-go/modules/capability v1.0.0 github.com/cosmos/ibc-go/v8 v8.2.1 github.com/informalsystems/itf-go v0.0.1 github.com/spf13/viper v1.18.2 - golang.org/x/mod v0.15.0 + golang.org/x/mod v0.17.0 google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 ) @@ -186,8 +185,9 @@ require ( github.com/google/flatbuffers v1.12.1 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect - github.com/hashicorp/go-metrics v0.5.2 // indirect + github.com/hashicorp/go-metrics v0.5.3 // indirect github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/kr/pretty v0.3.1 // indirect @@ -207,9 +207,10 @@ require ( go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/mock v0.2.0 // indirect go.uber.org/multierr v1.10.0 // indirect - golang.org/x/sync v0.6.0 // indirect + golang.org/x/sync v0.7.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect gotest.tools/v3 v3.5.1 // indirect ) diff --git a/go.sum b/go.sum index 6de4eeaa49..4f3e6b9d86 100644 --- a/go.sum +++ b/go.sum @@ -184,8 +184,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.7.3 h1:V815i8YOwOAQa1rLCsSMjVG5Gnzs02JLq+l7ks8s1jk= -cosmossdk.io/api v0.7.3/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= +cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= cosmossdk.io/client/v2 v2.0.0-beta.1 h1:XkHh1lhrLYIT9zKl7cIOXUXg2hdhtjTPBUfqERNA1/Q= cosmossdk.io/client/v2 v2.0.0-beta.1/go.mod h1:JEUSu9moNZQ4kU3ir1DKD5eU4bllmAexrGWjmb9k8qU= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= @@ -200,8 +200,8 @@ cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= -cosmossdk.io/store v1.0.2 h1:lSg5BTvJBHUDwswNNyeh4K/CbqiHER73VU4nDNb8uk0= -cosmossdk.io/store v1.0.2/go.mod h1:EFtENTqVTuWwitGW1VwaBct+yDagk7oG/axBMPH+FXs= +cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= +cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= cosmossdk.io/tools/confix v0.1.1 h1:aexyRv9+y15veH3Qw16lxQwo+ki7r2I+g0yNTEFEQM8= cosmossdk.io/tools/confix v0.1.1/go.mod h1:nQVvP1tHsGXS83PonPVWJtSbddIqyjEw99L4M3rPJyQ= cosmossdk.io/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= @@ -210,8 +210,8 @@ cosmossdk.io/x/evidence v0.1.0 h1:J6OEyDl1rbykksdGynzPKG5R/zm6TacwW2fbLTW4nCk= cosmossdk.io/x/evidence v0.1.0/go.mod h1:hTaiiXsoiJ3InMz1uptgF0BnGqROllAN8mwisOMMsfw= cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= -cosmossdk.io/x/tx v0.13.1 h1:Mg+EMp67Pz+NukbJqYxuo8uRp7N/a9uR+oVS9pONtj8= -cosmossdk.io/x/tx v0.13.1/go.mod h1:CBCU6fsRVz23QGFIQBb1DNX2DztJCf3jWyEkHY2nJQ0= +cosmossdk.io/x/tx v0.13.3 h1:Ha4mNaHmxBc6RMun9aKuqul8yHiL78EKJQ8g23Zf73g= +cosmossdk.io/x/tx v0.13.3/go.mod h1:I8xaHv0rhUdIvIdptKIqzYy27+n2+zBVaxO6fscFhys= cosmossdk.io/x/upgrade v0.1.1 h1:aoPe2gNvH+Gwt/Pgq3dOxxQVU3j5P6Xf+DaUJTDZATc= cosmossdk.io/x/upgrade v0.1.1/go.mod h1:MNLptLPcIFK9CWt7Ra//8WUZAxweyRDNcbs5nkOcQy0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -289,8 +289,8 @@ github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= @@ -330,8 +330,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.9 h1:cJBJBG0mPKz+sqelCi/hlfZjadZQGdDNnu6YQ1ZsUHQ= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -344,19 +344,19 @@ github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= -github.com/cosmos/cosmos-proto v1.0.0-beta.4 h1:aEL7tU/rLOmxZQ9z4i7mzxcLbSCY48OdY7lIWTLG7oU= -github.com/cosmos/cosmos-proto v1.0.0-beta.4/go.mod h1:oeB+FyVzG3XrQJbJng0EnV8Vljfk9XvTIpGILNU/9Co= -github.com/cosmos/cosmos-sdk v0.50.5 h1:MOEi+DKYgW67YaPgB+Pf+nHbD3V9S/ayitRKJYLfGIA= -github.com/cosmos/cosmos-sdk v0.50.5/go.mod h1:oV/k6GJgXV9QPoM2fsYDPPsyPBgQbdotv532O6Mz1OQ= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/cosmos-sdk v0.50.7 h1:LsBGKxifENR/DN4E1RZaitsyL93HU44x0p8EnMHp4V4= +github.com/cosmos/cosmos-sdk v0.50.7/go.mod h1:84xDDJEHttRT7NDGwBaUOLVOMN0JNE9x7NbsYIxXs1s= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.11 h1:LZcMHrx4FjUgrqQSWeaGC1v/TeuVFqSLa43CC6aWR2g= -github.com/cosmos/gogoproto v1.4.11/go.mod h1:/g39Mh8m17X8Q/GDEs5zYTSNaNnInBSohtaxzQnYq1Y= -github.com/cosmos/iavl v1.0.1 h1:D+mYbcRO2wptYzOM1Hxl9cpmmHU1ZEt9T2Wv5nZTeUw= -github.com/cosmos/iavl v1.0.1/go.mod h1:8xIUkgVvwvVrBu81scdPty+/Dx9GqwHnAvXz4cwF7RY= +github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= +github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= +github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ibc-go/modules/capability v1.0.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= github.com/cosmos/ibc-go/v8 v8.2.1 h1:MTsnZZjxvGD4Fv5pYyx5UkELafSX0rlPt6IfsE2BpTQ= @@ -501,8 +501,8 @@ github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -654,8 +654,8 @@ github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-metrics v0.5.2 h1:ErEYO2f//CjKsUDw4SmLzelsK6L3ZmOAR/4P9iS7ruY= -github.com/hashicorp/go-metrics v0.5.2/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= +github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= +github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= @@ -678,6 +678,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -868,8 +870,8 @@ github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6 github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc h1:8bQZVK1X6BJR/6nYUPxQEP+ReTsceJTKizeuwjWOPUA= -github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= +github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= @@ -890,32 +892,32 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.52.2 h1:LW8Vk7BccEdONfrJBDffQGRtpSzi5CQaRZGtboOO2ck= +github.com/prometheus/common v0.52.2/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= +github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -1082,8 +1084,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1095,8 +1097,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= -golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= +golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1124,8 +1126,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1186,8 +1188,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1229,8 +1231,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1327,13 +1329,13 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1416,8 +1418,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1594,12 +1596,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= -google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c h1:lfpJ/2rWPa/kJgxyyXM8PrNnfCzcmxJ265mADgwmvLI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1641,8 +1643,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= -google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= diff --git a/proto/interchain_security/ccv/consumer/v1/consumer.proto b/proto/interchain_security/ccv/consumer/v1/consumer.proto index 959d06c087..e77b5c9a13 100644 --- a/proto/interchain_security/ccv/consumer/v1/consumer.proto +++ b/proto/interchain_security/ccv/consumer/v1/consumer.proto @@ -27,7 +27,10 @@ message CrossChainValidator { (cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey", (gogoproto.moretags) = "yaml:\"consensus_pubkey\"" ]; - bool opted_out = 4; + + // !!! DEPRECATED !!! opted_out is deprecated because after the introduction of Partial Set Security (PSS) + // we removed the soft opt-out feature. + bool opted_out = 4 [deprecated = true]; } // A record storing the state of a slash packet sent to the provider chain diff --git a/proto/interchain_security/ccv/provider/v1/query.proto b/proto/interchain_security/ccv/provider/v1/query.proto index 9e922a6096..9ea3aa6bec 100644 --- a/proto/interchain_security/ccv/provider/v1/query.proto +++ b/proto/interchain_security/ccv/provider/v1/query.proto @@ -11,7 +11,6 @@ import "interchain_security/ccv/v1/shared_consumer.proto"; import "interchain_security/ccv/v1/wire.proto"; import "tendermint/crypto/keys.proto"; import "cosmos_proto/cosmos.proto"; -import "amino/amino.proto"; service Query { // ConsumerGenesis queries the genesis state needed to start a consumer chain @@ -316,10 +315,8 @@ message QueryValidatorConsumerCommissionRateRequest { message QueryValidatorConsumerCommissionRateResponse { // The rate to charge delegators on the consumer chain, as a fraction string rate = 1 [ - (cosmos_proto.scalar) = "cosmos.Dec", (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", - (gogoproto.nullable) = false, - (amino.dont_omitempty) = true + (gogoproto.nullable) = false ]; } diff --git a/proto/interchain_security/ccv/provider/v1/tx.proto b/proto/interchain_security/ccv/provider/v1/tx.proto index 63defef60f..a417aab3c0 100644 --- a/proto/interchain_security/ccv/provider/v1/tx.proto +++ b/proto/interchain_security/ccv/provider/v1/tx.proto @@ -279,8 +279,7 @@ message MsgSetConsumerCommissionRate { string rate = 3 [ (cosmos_proto.scalar) = "cosmos.Dec", (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", - (gogoproto.nullable) = false, - (amino.dont_omitempty) = true + (gogoproto.nullable) = false ]; } diff --git a/proto/interchain_security/ccv/v1/shared_consumer.proto b/proto/interchain_security/ccv/v1/shared_consumer.proto index ce65df04a6..f1535df010 100644 --- a/proto/interchain_security/ccv/v1/shared_consumer.proto +++ b/proto/interchain_security/ccv/v1/shared_consumer.proto @@ -62,11 +62,8 @@ message ConsumerParams { google.protobuf.Duration unbonding_period = 9 [ (gogoproto.nullable) = false, (gogoproto.stdduration) = true ]; - // The threshold for the percentage of validators at the bottom of the set who - // can opt out of running the consumer chain without being punished. For - // example, a value of 0.05 means that the validators in the bottom 5% of the - // set can opt out - string soft_opt_out_threshold = 10; + // !!! DEPRECATED !!! soft_opt_out_threshold is deprecated. see docs/docs/adrs/adr-015-partial-set-security.md + string soft_opt_out_threshold = 10 [deprecated = true]; // Reward denoms. These are the denominations which are allowed to be sent to // the provider as rewards. diff --git a/tests/e2e/actions.go b/tests/e2e/actions.go index f50f23b41a..4a3e59876d 100644 --- a/tests/e2e/actions.go +++ b/tests/e2e/actions.go @@ -602,7 +602,10 @@ func (tr *Chain) startConsumerChain( consumerGenesis := ".app_state.ccvconsumer = " + tr.getConsumerGenesis(action.ProviderChain, action.ConsumerChain) consumerGenesisChanges := tr.testConfig.chainConfigs[action.ConsumerChain].GenesisChanges if consumerGenesisChanges != "" { - consumerGenesis = consumerGenesis + " | " + consumerGenesisChanges + " | " + action.GenesisChanges + consumerGenesis = consumerGenesis + " | " + consumerGenesisChanges + } + if action.GenesisChanges != "" { + consumerGenesis = consumerGenesis + " | " + action.GenesisChanges } tr.startChain(StartChainAction{ @@ -832,7 +835,10 @@ func (tr Chain) changeoverChain( consumerGenesis := ".app_state.ccvconsumer = " + string(bz) consumerGenesisChanges := tr.testConfig.chainConfigs[action.SovereignChain].GenesisChanges if consumerGenesisChanges != "" { - consumerGenesis = consumerGenesis + " | " + consumerGenesisChanges + " | " + action.GenesisChanges + consumerGenesis = consumerGenesis + " | " + consumerGenesisChanges + } + if action.GenesisChanges != "" { + consumerGenesis = consumerGenesis + " | " + action.GenesisChanges } tr.startChangeover(ChangeoverChainAction{ @@ -2040,7 +2046,7 @@ func (tr Chain) invokeDoublesignSlash( if err != nil { log.Fatal(err, "\n", string(bz)) } - tr.waitBlocks("provi", 10, 2*time.Minute) + tr.waitBlocks("provi", 20, 4*time.Minute) } else { // tr.useCometMock validatorPrivateKeyAddress := tr.GetValidatorPrivateKeyAddress(action.Chain, action.Validator) diff --git a/tests/e2e/config.go b/tests/e2e/config.go index bbfe7a4d0b..4bb8d1c494 100644 --- a/tests/e2e/config.go +++ b/tests/e2e/config.go @@ -5,6 +5,7 @@ import ( "log" "os/exec" "strconv" + "strings" "time" e2e "github.com/cosmos/interchain-security/v5/tests/e2e/testlib" @@ -417,15 +418,17 @@ func CompatibilityTestConfig(providerVersion, consumerVersion string) TestConfig ".app_state.provider.params.slash_meter_replenish_fraction = \"1.0\" | " + // This disables slash packet throttling ".app_state.provider.params.slash_meter_replenish_period = \"3s\"", } - } else if semver.Compare(providerVersion, "v5.0.0-alpha1") < 0 { //TODO: MOV THIS BACK TO "v5.0.0" - fmt.Println("Using provider chain config for v4.1.x") + } else if semver.Compare(semver.MajorMinor(providerVersion), "v4.3.0") >= 0 && strings.HasSuffix(providerVersion, "-lsm") { + // v4.3.0-lsm introduced 'expedited governance proposal' which needs `expedited_voting_period` parameter to be set in genesis + fmt.Println("Using provider chain config for versions >= v4.3.0-lsm") providerConfig = ChainConfig{ ChainId: ChainID("provi"), - AccountPrefix: ProviderAccountPrefix, + AccountPrefix: "cosmos", BinaryName: "interchain-security-pd", IpPrefix: "7.7.7", VotingWaitTime: 20, GenesisChanges: ".app_state.gov.params.voting_period = \"20s\" | " + + ".app_state.gov.params.expedited_voting_period = \"10s\" | " + // Custom slashing parameters for testing validator downtime functionality // See https://docs.cosmos.network/main/modules/slashing/04_begin_block.html#uptime-tracking ".app_state.slashing.params.signed_blocks_window = \"10\" | " + diff --git a/tests/e2e/main.go b/tests/e2e/main.go index cf8fe70d89..d0b13ddd94 100644 --- a/tests/e2e/main.go +++ b/tests/e2e/main.go @@ -277,7 +277,7 @@ func parseArguments() (err error) { type testStepsWithConfig struct { config TestConfigType - steps []Step + steps StepChoice } func getTestCases(selectedPredefinedTests, selectedTestFiles TestSet, providerVersions, @@ -316,13 +316,12 @@ func getTestCases(selectedPredefinedTests, selectedTestFiles TestSet, providerVe log.Fatalf("Step choice '%s' not found.\nsee usage info:\n%s", tc, getTestCaseUsageString()) } - testSteps := stepChoices[tc].steps if testConfig == "" { testConfig = stepChoices[tc].testConfig } tests = append(tests, testStepsWithConfig{ config: testConfig, - steps: testSteps, + steps: stepChoices[tc], }, ) } @@ -351,7 +350,11 @@ func getTestCases(selectedPredefinedTests, selectedTestFiles TestSet, providerVe tests = append(tests, testStepsWithConfig{ config: testConfig, - steps: testCase, + steps: StepChoice{ + name: testFileName, + steps: testCase, + description: fmt.Sprintf("Steps from file %s", testFileName), + }, }) } diff --git a/tests/e2e/state.go b/tests/e2e/state.go index 1c1be7e95a..c7d5baf99f 100644 --- a/tests/e2e/state.go +++ b/tests/e2e/state.go @@ -888,7 +888,7 @@ func (tr Commands) GetTrustedHeight( var trustedHeight gjson.Result // iterate on the relayer's response - // and parse the the command "result" + // and parse the command "result" for scanner.Scan() { out := scanner.Text() if len(gjson.Get(out, "result").Array()) > 0 { diff --git a/tests/e2e/step_delegation.go b/tests/e2e/step_delegation.go index 102ee76fa2..531f0cbceb 100644 --- a/tests/e2e/step_delegation.go +++ b/tests/e2e/step_delegation.go @@ -220,58 +220,6 @@ func stepsCancelUnbond(consumerName string) []Step { } } -// stepsRedelegateForOptOut tests redelegation, and sets up voting powers s.t -// alice will have less than 5% of the total voting power. This is needed to -// test opt-out functionality. -func stepsRedelegateForOptOut(consumerName string) []Step { - return []Step{ - { - Action: RedelegateTokensAction{ - Chain: ChainID("provi"), - Src: ValidatorID("alice"), - Dst: ValidatorID("carol"), - TxSender: ValidatorID("alice"), - Amount: 450000000, - }, - State: State{ - ChainID("provi"): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 60, - ValidatorID("bob"): 500, - ValidatorID("carol"): 950, - }, - }, - ChainID(consumerName): ChainState{ - ValPowers: &map[ValidatorID]uint{ - // Voting power changes not seen by consumer yet - ValidatorID("alice"): 510, - ValidatorID("bob"): 500, - ValidatorID("carol"): 500, - }, - }, - }, - }, - { - Action: RelayPacketsAction{ - ChainA: ChainID("provi"), - ChainB: ChainID(consumerName), - Port: "provider", - Channel: 0, - }, - State: State{ - ChainID(consumerName): ChainState{ - ValPowers: &map[ValidatorID]uint{ - // Now power changes are seen by consumer - ValidatorID("alice"): 60, - ValidatorID("bob"): 500, - ValidatorID("carol"): 950, - }, - }, - }, - }, - } -} - // stepsRedelegate tests redelegation and resulting validator power changes. func stepsRedelegate(consumerName string) []Step { return []Step{ @@ -283,68 +231,15 @@ func stepsRedelegate(consumerName string) []Step { TxSender: ValidatorID("carol"), // redelegate s.t. alice has majority stake so non-faulty validators maintain more than // 2/3 voting power during downtime tests below, avoiding chain halt - Amount: 449000000, + Amount: 400000000, }, State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, // carol always uses a consumer assigned key - ValidatorID("carol"): 501, - }, - }, - ChainID(consumerName): ChainState{ - ValPowers: &map[ValidatorID]uint{ - // Voting power changes not seen by consumer yet - ValidatorID("alice"): 60, - ValidatorID("bob"): 500, - ValidatorID("carol"): 950, - }, - }, - }, - }, - { - Action: RelayPacketsAction{ - ChainA: ChainID("provi"), - ChainB: ChainID(consumerName), - Port: "provider", - Channel: 0, - }, - State: State{ - ChainID(consumerName): ChainState{ - ValPowers: &map[ValidatorID]uint{ - // Now power changes are seen by consumer - ValidatorID("alice"): 509, - ValidatorID("bob"): 500, - ValidatorID("carol"): 501, - }, - }, - }, - }, - } -} - -// stepsRedelegate tests redelegation and resulting validator power changes. -func stepsRedelegateShort(consumerName string) []Step { - return []Step{ - { - Action: RedelegateTokensAction{ - Chain: ChainID("provi"), - Src: ValidatorID("alice"), - Dst: ValidatorID("carol"), - TxSender: ValidatorID("alice"), - // Leave alice with majority stake so non-faulty validators maintain more than - // 2/3 voting power during downtime tests below, avoiding chain halt - Amount: 1000000, - }, - State: State{ - ChainID("provi"): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, - ValidatorID("bob"): 500, - // carol always uses a consumer assigned key - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, ChainID(consumerName): ChainState{ @@ -368,9 +263,9 @@ func stepsRedelegateShort(consumerName string) []Step { ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ // Now power changes are seen by consumer - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, diff --git a/tests/e2e/steps.go b/tests/e2e/steps.go index 4a6f40333e..5e16a61776 100644 --- a/tests/e2e/steps.go +++ b/tests/e2e/steps.go @@ -18,7 +18,7 @@ var compatibilitySteps = concatSteps( compstepsStartChains([]string{"consu"}, false), stepsDelegate("consu"), stepsUnbond("consu"), - stepsRedelegateShort("consu"), + stepsRedelegate("consu"), stepsDowntime("consu"), stepsDoubleSignOnProvider("consu"), // carol double signs on provider stepsStartRelayer(), @@ -32,8 +32,6 @@ var happyPathSteps = concatSteps( stepsAssignConsumerKeyOnStartedChain("consu", "bob"), stepsUnbond("consu"), stepsCancelUnbond("consu"), - stepsRedelegateForOptOut("consu"), - stepsDowntimeWithOptOut("consu"), stepsRedelegate("consu"), stepsDowntime("consu"), stepsDoubleSignOnProvider("consu"), // carol double signs on provider @@ -46,7 +44,7 @@ var shortHappyPathSteps = concatSteps( stepsStartChains([]string{"consu"}, false), stepsDelegate("consu"), stepsUnbond("consu"), - stepsRedelegateShort("consu"), + stepsRedelegate("consu"), stepsDowntime("consu"), stepsDoubleSignOnProvider("consu"), // carol double signs on provider stepsStartRelayer(), @@ -58,12 +56,12 @@ var lightClientAttackSteps = concatSteps( stepsStartChains([]string{"consu"}, false), stepsDelegate("consu"), stepsUnbond("consu"), - stepsRedelegateShort("consu"), + stepsRedelegate("consu"), stepsDowntime("consu"), stepsLightClientAttackOnProviderAndConsumer("consu"), // carol double signs on provider, bob double signs on consumer stepsStartRelayer(), - stepsConsumerRemovalPropNotPassing("consu", 3), // submit removal prop but vote no on it - chain should stay - stepsStopChain("consu", 4), // stop chain + stepsConsumerRemovalPropNotPassing("consu", 2), // submit removal prop but vote no on it - chain should stay + stepsStopChain("consu", 3), // stop chain ) var slashThrottleSteps = concatSteps( @@ -121,7 +119,7 @@ var changeoverSteps = concatSteps( var consumerMisbehaviourSteps = concatSteps( // start provider and consumer chain - stepsStartChainsWithSoftOptOut("consu"), + stepsStartChainsForConsumerMisbehaviour("consu"), // make a consumer validator to misbehave and get jailed stepsCauseConsumerMisbehaviour("consu"), ) @@ -137,6 +135,6 @@ var consumerDoubleDowntimeSteps = concatSteps( stepsStartChains([]string{"consu"}, false), stepsDelegate("consu"), stepsUnbond("consu"), - stepsRedelegateShort("consu"), + stepsRedelegate("consu"), stepsDoubleDowntime("consu"), ) diff --git a/tests/e2e/steps_compatibility.go b/tests/e2e/steps_compatibility.go index a51a34fed3..dfcf14cd58 100644 --- a/tests/e2e/steps_compatibility.go +++ b/tests/e2e/steps_compatibility.go @@ -146,12 +146,6 @@ func compstepsStartConsumerChain(consumerName string, proposalIndex, chainIndex {Id: ValidatorID("alice"), Stake: 500000000, Allocation: 10000000000}, {Id: ValidatorID("carol"), Stake: 500000000, Allocation: 10000000000}, }, - // For consumers that're launching with the provider being on an earlier version - // of ICS before the soft opt-out threshold was introduced, we need to set the - // soft opt-out threshold to 0.05 in the consumer genesis to ensure that the - // consumer binary doesn't panic. Sdk requires that all params are set to valid - // values from the genesis file. - GenesisChanges: ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"", }, State: State{ ChainID("provi"): ChainState{ diff --git a/tests/e2e/steps_consumer_misbehaviour.go b/tests/e2e/steps_consumer_misbehaviour.go index 56e093e668..1071da368a 100644 --- a/tests/e2e/steps_consumer_misbehaviour.go +++ b/tests/e2e/steps_consumer_misbehaviour.go @@ -7,10 +7,8 @@ import ( clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" ) -// starts a provider chain and a consumer chain with two validators, -// where the voting power is distributed in order that the smallest validator -// can soft opt-out of validating the consumer chain. -func stepsStartChainsWithSoftOptOut(consumerName string) []Step { +// starts a provider chain and an Opt-In consumer chain with one validator +func stepsStartChainsForConsumerMisbehaviour(consumerName string) []Step { s := []Step{ { // Create a provider chain with two validators, where one validator holds 96% of the voting power @@ -82,6 +80,13 @@ func stepsStartChainsWithSoftOptOut(consumerName string) []Step { }, }, }, + { + Action: OptInAction{ + Chain: ChainID(consumerName), + Validator: ValidatorID("alice"), + }, + State: State{}, + }, { Action: VoteGovProposalAction{ Chain: ChainID("provi"), @@ -109,19 +114,12 @@ func stepsStartChainsWithSoftOptOut(consumerName string) []Step { }, { // start a consumer chain using a single big validator knowing that it holds more than 2/3 of the voting power - // and that the other validators hold less than 5% so they won't get jailed thanks to the sof opt-out mechanism. Action: StartConsumerChainAction{ ConsumerChain: ChainID(consumerName), ProviderChain: ChainID("provi"), Validators: []StartChainValidator{ {Id: ValidatorID("alice"), Stake: 500000000, Allocation: 10000000000}, }, - // For consumers that're launching with the provider being on an earlier version - // of ICS before the soft opt-out threshold was introduced, we need to set the - // soft opt-out threshold to 0.05 in the consumer genesis to ensure that the - // consumer binary doesn't panic. Sdk requires that all params are set to valid - // values from the genesis file. - GenesisChanges: ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"", }, State: State{ ChainID("provi"): ChainState{ @@ -176,7 +174,6 @@ func stepsStartChainsWithSoftOptOut(consumerName string) []Step { ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ ValidatorID("alice"): 500, - ValidatorID("bob"): 20, }, }, }, @@ -192,7 +189,6 @@ func stepsStartChainsWithSoftOptOut(consumerName string) []Step { ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ ValidatorID("alice"): 511, - ValidatorID("bob"): 20, }, }, }, @@ -242,7 +238,7 @@ func stepsCauseConsumerMisbehaviour(consumerName string) []Step { ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ ValidatorID("alice"): 511, - ValidatorID("bob"): 20, + ValidatorID("bob"): 0, }, }, }, @@ -282,7 +278,7 @@ func stepsCauseConsumerMisbehaviour(consumerName string) []Step { // since its light client is frozen on the provider ValPowers: &map[ValidatorID]uint{ ValidatorID("alice"): 511, - ValidatorID("bob"): 20, + ValidatorID("bob"): 0, }, }, }, diff --git a/tests/e2e/steps_double_sign.go b/tests/e2e/steps_double_sign.go index 353de13761..bdc4a68cb4 100644 --- a/tests/e2e/steps_double_sign.go +++ b/tests/e2e/steps_double_sign.go @@ -13,16 +13,16 @@ func stepsDoubleSignOnProvider(consumerName string) []Step { // slash on provider ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 0, // from 500 to 0 + ValidatorID("carol"): 0, // from 99 to 0 }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 495, // not tombstoned on consumerName yet + ValidatorID("carol"): 99, // not tombstoned on consumerName yet }, }, }, @@ -38,14 +38,14 @@ func stepsDoubleSignOnProvider(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, ValidatorID("carol"): 0, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, ValidatorID("carol"): 0, // tombstoning visible on consumerName }, diff --git a/tests/e2e/steps_downtime.go b/tests/e2e/steps_downtime.go index a8506bf518..70fd81c130 100644 --- a/tests/e2e/steps_downtime.go +++ b/tests/e2e/steps_downtime.go @@ -23,16 +23,16 @@ func stepsDowntime(consumerName string) []Step { // validator should be slashed on consumer, powers not affected on either chain yet ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -47,18 +47,18 @@ func stepsDowntime(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // Downtime jailing and corresponding voting power change are processed by provider ValidatorID("bob"): 0, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // Bob's stake may or may not be slashed at this point depending on comet vs cometmock // See https://github.com/cosmos/interchain-security/issues/1304 - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -75,10 +75,10 @@ func stepsDowntime(consumerName string) []Step { State: State{ ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // VSC now seen on consumer ValidatorID("bob"): 0, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -91,18 +91,18 @@ func stepsDowntime(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // bob's stake should not be slashed // since the slash was initiated from consumer ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 0, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -117,11 +117,11 @@ func stepsDowntime(consumerName string) []Step { State: State{ ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // bob's stake should not be slashed // since the slash was initiated from consumer ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -136,7 +136,7 @@ func stepsDowntime(consumerName string) []Step { ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ // Non faulty validators still maintain just above 2/3 power here - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, // Carol's stake should be slashed and jailed // downtime slash was initiated from provider @@ -145,9 +145,9 @@ func stepsDowntime(consumerName string) []Step { }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -162,7 +162,7 @@ func stepsDowntime(consumerName string) []Step { State: State{ ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, ValidatorID("carol"): 0, }, @@ -177,14 +177,14 @@ func stepsDowntime(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 495, + ValidatorID("carol"): 99, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, ValidatorID("carol"): 0, }, @@ -201,9 +201,9 @@ func stepsDowntime(consumerName string) []Step { State: State{ ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 495, + ValidatorID("carol"): 99, }, }, }, @@ -211,7 +211,7 @@ func stepsDowntime(consumerName string) []Step { } } -// stepsDowstepsDoubleDowntime time tests that a validator can get jailed twice +// stepsDoubleDowntime time tests that a validator can get jailed twice // on a consumer. // These are the steps: // - a validator is down on a consumer @@ -233,16 +233,16 @@ func stepsDoubleDowntime(consumerName string) []Step { // validator should be slashed on consumer, powers not affected on either chain yet ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -257,18 +257,18 @@ func stepsDoubleDowntime(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // Downtime jailing and corresponding voting power change are processed by provider ValidatorID("bob"): 0, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // Bob's stake may or may not be slashed at this point depending on comet vs cometmock // See https://github.com/cosmos/interchain-security/issues/1304 - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -285,10 +285,10 @@ func stepsDoubleDowntime(consumerName string) []Step { State: State{ ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // VSC now seen on consumer ValidatorID("bob"): 0, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -301,18 +301,18 @@ func stepsDoubleDowntime(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // bob's stake should not be slashed // since the slash was initiated from consumer ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 0, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -327,11 +327,11 @@ func stepsDoubleDowntime(consumerName string) []Step { State: State{ ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // bob's stake should not be slashed // since the slash was initiated from consumer ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -346,16 +346,16 @@ func stepsDoubleDowntime(consumerName string) []Step { // validator should be slashed on consumer, powers not affected on either chain yet ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -370,18 +370,18 @@ func stepsDoubleDowntime(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // Downtime jailing and corresponding voting power change are processed by provider ValidatorID("bob"): 0, - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // Bob's stake may or may not be slashed at this point depending on comet vs cometmock // See https://github.com/cosmos/interchain-security/issues/1304 - ValidatorID("carol"): 501, + ValidatorID("carol"): 100, }, }, }, @@ -398,67 +398,10 @@ func stepsDoubleDowntime(consumerName string) []Step { State: State{ ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, // VSC now seen on consumer ValidatorID("bob"): 0, - ValidatorID("carol"): 501, - }, - }, - }, - }, - } -} - -// stepsDowntimeWithOptOut returns steps validating that alice can incur downtime -// and not be slashed/jailed, since her voting power is less than 5% of the total. -// -// Note: 60 / (60 + 500 + 950) ~= 0.04 -func stepsDowntimeWithOptOut(consumerName string) []Step { - return []Step{ - { - Action: DowntimeSlashAction{ - Chain: ChainID(consumerName), - Validator: ValidatorID("alice"), - }, - State: State{ - // powers not affected on either chain - ChainID("provi"): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 60, - ValidatorID("bob"): 500, - ValidatorID("carol"): 950, - }, - }, - ChainID(consumerName): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 60, - ValidatorID("bob"): 500, - ValidatorID("carol"): 950, - }, - }, - }, - }, - { - Action: RelayPacketsAction{ - ChainA: ChainID("provi"), - ChainB: ChainID(consumerName), - Port: "provider", - Channel: 0, - }, - State: State{ - ChainID("provi"): ChainState{ - ValPowers: &map[ValidatorID]uint{ - // alice is not slashed or jailed due to soft opt out - ValidatorID("alice"): 60, - ValidatorID("bob"): 500, - ValidatorID("carol"): 950, - }, - }, - ChainID(consumerName): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 60, - ValidatorID("bob"): 500, - ValidatorID("carol"): 950, + ValidatorID("carol"): 100, }, }, }, diff --git a/tests/e2e/steps_light_client_attack.go b/tests/e2e/steps_light_client_attack.go index 65481157b1..afe1356c51 100644 --- a/tests/e2e/steps_light_client_attack.go +++ b/tests/e2e/steps_light_client_attack.go @@ -13,16 +13,16 @@ func stepsLightClientAttackOnProviderAndConsumer(consumerName string) []Step { // Slash on provider ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 0, // from 500 to 0 + ValidatorID("carol"): 0, // from 100 to 0 }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, - ValidatorID("carol"): 495, // not tombstoned on consumerName yet + ValidatorID("carol"): 99, // not tombstoned on consumerName yet }, }, }, @@ -38,14 +38,14 @@ func stepsLightClientAttackOnProviderAndConsumer(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, ValidatorID("carol"): 0, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, ValidatorID("carol"): 0, // tombstoning visible on consumerName }, @@ -62,14 +62,14 @@ func stepsLightClientAttackOnProviderAndConsumer(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, ValidatorID("carol"): 0, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, ValidatorID("carol"): 0, }, @@ -86,14 +86,14 @@ func stepsLightClientAttackOnProviderAndConsumer(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, // not tombstoned ValidatorID("carol"): 0, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, // not tombstoned ValidatorID("carol"): 0, }, @@ -111,14 +111,14 @@ func stepsLightClientAttackOnProviderAndConsumer(consumerName string) []Step { State: State{ ChainID("provi"): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, ValidatorID("carol"): 0, }, }, ChainID(consumerName): ChainState{ ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 509, + ValidatorID("alice"): 910, ValidatorID("bob"): 500, // not tombstoned ValidatorID("carol"): 0, }, diff --git a/tests/e2e/steps_multi_consumer_delegation.go b/tests/e2e/steps_multi_consumer_delegation.go index 734338edbc..ca15001441 100644 --- a/tests/e2e/steps_multi_consumer_delegation.go +++ b/tests/e2e/steps_multi_consumer_delegation.go @@ -1,6 +1,6 @@ package main -// stepsDelegate tests basic delegation and resulting validator power changes. +// stepsMultiConsumerDelegate tests basic delegation and resulting validator power changes. func stepsMultiConsumerDelegate(consumer1, consumer2 string) []Step { return []Step{ { diff --git a/tests/e2e/steps_sovereign_changeover.go b/tests/e2e/steps_sovereign_changeover.go index 68ed5c8505..500120bbf0 100644 --- a/tests/e2e/steps_sovereign_changeover.go +++ b/tests/e2e/steps_sovereign_changeover.go @@ -107,7 +107,6 @@ func stepsChangeoverToConsumer(consumerName string) []Step { {Id: ValidatorID("bob"), Stake: 500000000, Allocation: 10000000000}, {Id: ValidatorID("carol"), Stake: 500000000, Allocation: 10000000000}, }, - GenesisChanges: ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"", }, State: State{ ChainID("provi"): ChainState{ diff --git a/tests/e2e/steps_start_chains.go b/tests/e2e/steps_start_chains.go index e358862590..898f562dc0 100644 --- a/tests/e2e/steps_start_chains.go +++ b/tests/e2e/steps_start_chains.go @@ -162,12 +162,6 @@ func stepsStartConsumerChain(consumerName string, proposalIndex, chainIndex uint {Id: ValidatorID("alice"), Stake: 500000000, Allocation: 10000000000}, {Id: ValidatorID("carol"), Stake: 500000000, Allocation: 10000000000}, }, - // For consumers that're launching with the provider being on an earlier version - // of ICS before the soft opt-out threshold was introduced, we need to set the - // soft opt-out threshold to 0.05 in the consumer genesis to ensure that the - // consumer binary doesn't panic. Sdk requires that all params are set to valid - // values from the genesis file. - GenesisChanges: ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"", }, State: State{ ChainID("provi"): ChainState{ diff --git a/tests/e2e/test_runner.go b/tests/e2e/test_runner.go index 7c02dd6d2d..c3ced5ab61 100644 --- a/tests/e2e/test_runner.go +++ b/tests/e2e/test_runner.go @@ -19,7 +19,7 @@ const ( // It sets up the test environment and the test driver to run the tests type TestRunner struct { config TestConfig - steps []Step + stepChoice StepChoice testDriver TestCaseDriver target ExecutionTarget verbose bool @@ -86,7 +86,7 @@ func (tr *TestRunner) Run() error { } tr.testDriver = GetTestCaseDriver(tr.config) - err = tr.testDriver.Run(tr.steps, tr.target, tr.verbose) + err = tr.testDriver.Run(tr.stepChoice.steps, tr.target, tr.verbose) if err != nil { tr.result.Failed() // not tearing down environment for troubleshooting reasons on container @@ -118,13 +118,13 @@ func (tr *TestRunner) Setup(testCfg TestConfig) error { return nil } -func CreateTestRunner(config TestConfig, steps []Step, target ExecutionTarget, verbose bool) TestRunner { +func CreateTestRunner(config TestConfig, stepChoice StepChoice, target ExecutionTarget, verbose bool) TestRunner { return TestRunner{ - target: target, - steps: steps, - config: config, - verbose: verbose, - result: TestResult{Status: TEST_STATUS_NOTRUN}, + target: target, + stepChoice: stepChoice, + config: config, + verbose: verbose, + result: TestResult{Status: TEST_STATUS_NOTRUN}, } } @@ -133,8 +133,10 @@ func (tr *TestRunner) Info() string { return fmt.Sprintf(` ------------------------------------------ Test name : %s +Config: %s Target: %s ------------------------------------------`, + tr.stepChoice.name, tr.config.name, tr.target.Info(), ) @@ -144,12 +146,14 @@ func (tr *TestRunner) Report() string { return fmt.Sprintf(` ------------------------------------------ Test name : %s +Config: %s Target: %s - Status: %s - Result: %s - Duration: %s - StartTime: %s ------------------------------------------`, + tr.stepChoice.name, tr.config.name, tr.target.Info(), tr.result.Status, diff --git a/tests/e2e/testdata/rapid/TestChainStateMarshalling/TestChainStateMarshalling-20240314151749-32478.fail b/tests/e2e/testdata/rapid/TestChainStateMarshalling/TestChainStateMarshalling-20240314151749-32478.fail deleted file mode 100644 index 14da620099..0000000000 --- a/tests/e2e/testdata/rapid/TestChainStateMarshalling/TestChainStateMarshalling-20240314151749-32478.fail +++ /dev/null @@ -1,10 +0,0 @@ -# -v0.4.8#14881217339431652995 -0x0 -0x5555555555555 -0x0 -0x0 -0x38e38e38e38e4 -0x3 -0x0 -0x0 \ No newline at end of file diff --git a/tests/e2e/testdata/rapid/TestReadAndWriteTrace/TestReadAndWriteTrace-20240314151749-32478.fail b/tests/e2e/testdata/rapid/TestReadAndWriteTrace/TestReadAndWriteTrace-20240314151749-32478.fail deleted file mode 100644 index 12af62a4bf..0000000000 --- a/tests/e2e/testdata/rapid/TestReadAndWriteTrace/TestReadAndWriteTrace-20240314151749-32478.fail +++ /dev/null @@ -1,18 +0,0 @@ -# -v0.4.8#2933927387728423654 -0x5555555555555 -0x0 -0x0 -0x0 -0x0 -0x0 -0x5555555555555 -0x0 -0x0 -0x5555555555555 -0x0 -0x0 -0x38e38e38e38e4 -0x3 -0x0 -0x0 \ No newline at end of file diff --git a/tests/e2e/tracehandler_testdata/changeover.json b/tests/e2e/tracehandler_testdata/changeover.json index b115680878..91b53a87cd 100644 --- a/tests/e2e/tracehandler_testdata/changeover.json +++ b/tests/e2e/tracehandler_testdata/changeover.json @@ -345,7 +345,7 @@ "Stake": 500000000 } ], - "GenesisChanges": ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"" + "GenesisChanges": "" }, "State": { "provi": { diff --git a/tests/e2e/tracehandler_testdata/consumer-double-sign.json b/tests/e2e/tracehandler_testdata/consumer-double-sign.json index 7744bc5b03..7551c2c77d 100644 --- a/tests/e2e/tracehandler_testdata/consumer-double-sign.json +++ b/tests/e2e/tracehandler_testdata/consumer-double-sign.json @@ -271,7 +271,7 @@ "Stake": 500000000 } ], - "GenesisChanges": ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"" + "GenesisChanges": "" }, "State": { "consu": { diff --git a/tests/e2e/tracehandler_testdata/consumer-misbehaviour.json b/tests/e2e/tracehandler_testdata/consumer-misbehaviour.json index 90f009fb7e..c7f68b5273 100644 --- a/tests/e2e/tracehandler_testdata/consumer-misbehaviour.json +++ b/tests/e2e/tracehandler_testdata/consumer-misbehaviour.json @@ -123,6 +123,14 @@ } } }, + { + "ActionType": "main.OptInAction", + "Action": { + "Chain": "consu", + "Validator": "alice" + }, + "State": {} + }, { "ActionType": "main.VoteGovProposalAction", "Action": { @@ -184,7 +192,7 @@ "Stake": 500000000 } ], - "GenesisChanges": ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"" + "GenesisChanges": "" }, "State": { "consu": { @@ -262,8 +270,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 500, - "bob": 20 + "alice": 500 }, "StakedTokens": null, "IBCTransferParams": null, @@ -311,8 +318,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 511, - "bob": 20 + "alice": 511 }, "StakedTokens": null, "IBCTransferParams": null, @@ -354,7 +360,7 @@ "ProposedConsumerChains": null, "ValPowers": { "alice": 511, - "bob": 20 + "bob": 0 }, "StakedTokens": null, "IBCTransferParams": null, @@ -406,7 +412,7 @@ "ProposedConsumerChains": null, "ValPowers": { "alice": 511, - "bob": 20 + "bob": 0 }, "StakedTokens": null, "IBCTransferParams": null, diff --git a/tests/e2e/tracehandler_testdata/democracy.json b/tests/e2e/tracehandler_testdata/democracy.json index 633e13ee08..2dc179c0da 100644 --- a/tests/e2e/tracehandler_testdata/democracy.json +++ b/tests/e2e/tracehandler_testdata/democracy.json @@ -271,7 +271,7 @@ "Stake": 500000000 } ], - "GenesisChanges": ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"" + "GenesisChanges": "" }, "State": { "democ": { diff --git a/tests/e2e/tracehandler_testdata/democracyRewardsSteps.json b/tests/e2e/tracehandler_testdata/democracyRewardsSteps.json index 75487915de..b270031542 100644 --- a/tests/e2e/tracehandler_testdata/democracyRewardsSteps.json +++ b/tests/e2e/tracehandler_testdata/democracyRewardsSteps.json @@ -271,7 +271,7 @@ "Stake": 500000000 } ], - "GenesisChanges": ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"" + "GenesisChanges": "" }, "State": { "democ": { diff --git a/tests/e2e/tracehandler_testdata/happyPath.json b/tests/e2e/tracehandler_testdata/happyPath.json index e5f732eaf0..fea88c2e92 100644 --- a/tests/e2e/tracehandler_testdata/happyPath.json +++ b/tests/e2e/tracehandler_testdata/happyPath.json @@ -271,7 +271,7 @@ "Stake": 500000000 } ], - "GenesisChanges": ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"" + "GenesisChanges": "" }, "State": { "consu": { @@ -1033,16 +1033,16 @@ "Src": "carol", "Dst": "alice", "TxSender": "carol", - "Amount": 449000000 + "Amount": 400000000 }, "State": { "consu": { "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 60, + "alice": 510, "bob": 500, - "carol": 950 + "carol": 500 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1060,9 +1060,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1091,9 +1091,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1120,9 +1120,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1140,9 +1140,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1171,8 +1171,8 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, - "carol": 501 + "alice": 910, + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1190,9 +1190,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 0, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1221,9 +1221,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 0, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1250,9 +1250,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 0, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1270,9 +1270,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1301,9 +1301,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1330,9 +1330,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1350,7 +1350,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, @@ -1381,7 +1381,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, @@ -1410,7 +1410,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, @@ -1430,9 +1430,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 495 + "carol": 99 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1461,9 +1461,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 495 + "carol": 99 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1490,9 +1490,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 495 + "carol": 99 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1510,7 +1510,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, @@ -1541,7 +1541,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, @@ -1561,7 +1561,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, diff --git a/tests/e2e/tracehandler_testdata/multipleConsumers.json b/tests/e2e/tracehandler_testdata/multipleConsumers.json index 504e742a60..3dbac1f88d 100644 --- a/tests/e2e/tracehandler_testdata/multipleConsumers.json +++ b/tests/e2e/tracehandler_testdata/multipleConsumers.json @@ -271,7 +271,7 @@ "Stake": 500000000 } ], - "GenesisChanges": ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"" + "GenesisChanges": "" }, "State": { "consu": { @@ -564,7 +564,7 @@ "Stake": 500000000 } ], - "GenesisChanges": ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"" + "GenesisChanges": "" }, "State": { "densu": { diff --git a/tests/e2e/tracehandler_testdata/shorthappy.json b/tests/e2e/tracehandler_testdata/shorthappy.json index 60c645e8c9..4a93c4b713 100644 --- a/tests/e2e/tracehandler_testdata/shorthappy.json +++ b/tests/e2e/tracehandler_testdata/shorthappy.json @@ -271,7 +271,7 @@ "Stake": 500000000 } ], - "GenesisChanges": ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"" + "GenesisChanges": "" }, "State": { "consu": { @@ -567,10 +567,10 @@ "ActionType": "main.RedelegateTokensAction", "Action": { "Chain": "provi", - "Src": "alice", - "Dst": "carol", - "TxSender": "alice", - "Amount": 1000000 + "Src": "carol", + "Dst": "alice", + "TxSender": "carol", + "Amount": 400000000 }, "State": { "consu": { @@ -597,9 +597,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -628,9 +628,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -657,9 +657,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -677,9 +677,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -708,8 +708,8 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, - "carol": 501 + "alice": 910, + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -727,9 +727,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 0, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -758,9 +758,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 0, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -787,9 +787,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 0, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -807,9 +807,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -838,9 +838,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -867,9 +867,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 501 + "carol": 100 }, "StakedTokens": null, "IBCTransferParams": null, @@ -887,7 +887,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, @@ -918,7 +918,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, @@ -947,7 +947,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, @@ -967,9 +967,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 495 + "carol": 99 }, "StakedTokens": null, "IBCTransferParams": null, @@ -998,9 +998,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 495 + "carol": 99 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1027,9 +1027,9 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, - "carol": 495 + "carol": 99 }, "StakedTokens": null, "IBCTransferParams": null, @@ -1047,7 +1047,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, @@ -1078,7 +1078,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, @@ -1098,7 +1098,7 @@ "ValBalances": null, "ProposedConsumerChains": null, "ValPowers": { - "alice": 509, + "alice": 910, "bob": 500, "carol": 0 }, diff --git a/tests/e2e/tracehandler_testdata/slashThrottle.json b/tests/e2e/tracehandler_testdata/slashThrottle.json index e325113cc4..68ce3a0c6d 100644 --- a/tests/e2e/tracehandler_testdata/slashThrottle.json +++ b/tests/e2e/tracehandler_testdata/slashThrottle.json @@ -271,7 +271,7 @@ "Stake": 500000000 } ], - "GenesisChanges": ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"" + "GenesisChanges": "" }, "State": { "consu": { diff --git a/tests/mbt/driver/setup.go b/tests/mbt/driver/setup.go index 81d39d5e70..87b7b16e62 100644 --- a/tests/mbt/driver/setup.go +++ b/tests/mbt/driver/setup.go @@ -499,7 +499,7 @@ func createConsumerGenesis(modelParams ModelParams, providerChain *ibctesting.Te ccvtypes.DefaultConsumerRedistributeFrac, ccvtypes.DefaultHistoricalEntries, modelParams.UnbondingPeriodPerChain[ChainId(consumerClientState.ChainId)], - "0", // disable soft opt-out + ccvtypes.DefaultSoftOptOutThreshold, []string{}, []string{}, ccvtypes.DefaultRetryDelayPeriod, diff --git a/tests/mbt/model/ccv.qnt b/tests/mbt/model/ccv.qnt index 80aed91ec2..83adcea357 100644 --- a/tests/mbt/model/ccv.qnt +++ b/tests/mbt/model/ccv.qnt @@ -396,7 +396,7 @@ module ccv { } // Delivers the next queued VscMaturedPacket from a consumer chain to the provider chain. - // Arguments are the currentState and the the consumer chain, from which the packet will be delivered. + // Arguments are the currentState and the consumer chain, from which the packet will be delivered. // If this packet will time out on the provider on delivery, // the consumer will be dropped. // The first return is the result of the operation, the second result is a boolean diff --git a/testutil/integration/debug_test.go b/testutil/integration/debug_test.go index 15036416e6..d26246dcf5 100644 --- a/testutil/integration/debug_test.go +++ b/testutil/integration/debug_test.go @@ -153,14 +153,6 @@ func TestCISBeforeCCVEstablished(t *testing.T) { runCCVTestByName(t, "TestCISBeforeCCVEstablished") } -// -// Soft opt out tests -// - -func TestSoftOptOut(t *testing.T) { - runCCVTestByName(t, "TestSoftOptOut") -} - // // Stop consumer tests // diff --git a/testutil/keeper/expectations.go b/testutil/keeper/expectations.go index 49ffe51ace..9b57643167 100644 --- a/testutil/keeper/expectations.go +++ b/testutil/keeper/expectations.go @@ -56,7 +56,6 @@ func GetMocksForMakeConsumerGenesis(ctx sdk.Context, mocks *MockedKeepers, mocks.MockStakingKeeper.EXPECT().UnbondingTime(gomock.Any()).Return(unbondingTimeToInject, nil).Times(1), mocks.MockClientKeeper.EXPECT().GetSelfConsensusState(gomock.Any(), clienttypes.GetSelfHeight(ctx)).Return(&ibctmtypes.ConsensusState{}, nil).Times(1), - // mocks.MockStakingKeeper.EXPECT().GetLastValidators(gomock.Any()).Times(1), } } diff --git a/x/ccv/consumer/keeper/msg_server.go b/x/ccv/consumer/keeper/msg_server.go index 6031101b17..ce3e67be5c 100644 --- a/x/ccv/consumer/keeper/msg_server.go +++ b/x/ccv/consumer/keeper/msg_server.go @@ -29,6 +29,10 @@ func (k msgServer) UpdateParams(goCtx context.Context, msg *types.MsgUpdateParam return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.authority, msg.Authority) } + if err := msg.Params.Validate(); err != nil { + return nil, err + } + ctx := sdk.UnwrapSDKContext(goCtx) k.Keeper.SetParams(ctx, msg.Params) diff --git a/x/ccv/consumer/keeper/validators.go b/x/ccv/consumer/keeper/validators.go index b1b62a3a40..2c4f0d79ab 100644 --- a/x/ccv/consumer/keeper/validators.go +++ b/x/ccv/consumer/keeper/validators.go @@ -124,7 +124,7 @@ func (k Keeper) Slash(ctx context.Context, addr sdk.ConsAddress, infractionHeigh return k.SlashWithInfractionReason(ctx, addr, infractionHeight, power, slashFactor, stakingtypes.Infraction_INFRACTION_UNSPECIFIED) } -// Slash queues a slashing request for the the provider chain +// Slash queues a slashing request for the provider chain // All queued slashing requests will be cleared in EndBlock // Called by Slashing keeper in SlashWithInfractionReason func (k Keeper) SlashWithInfractionReason(goCtx context.Context, addr sdk.ConsAddress, infractionHeight, power int64, slashFactor math.LegacyDec, infraction stakingtypes.Infraction) (math.Int, error) { diff --git a/x/ccv/consumer/types/consumer.pb.go b/x/ccv/consumer/types/consumer.pb.go index 6df35dd174..5e0c9488ba 100644 --- a/x/ccv/consumer/types/consumer.pb.go +++ b/x/ccv/consumer/types/consumer.pb.go @@ -39,8 +39,10 @@ type CrossChainValidator struct { Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Power int64 `protobuf:"varint,2,opt,name=power,proto3" json:"power,omitempty"` // pubkey is the consensus public key of the validator, as a Protobuf Any. - Pubkey *types.Any `protobuf:"bytes,3,opt,name=pubkey,proto3" json:"pubkey,omitempty" yaml:"consensus_pubkey"` - OptedOut bool `protobuf:"varint,4,opt,name=opted_out,json=optedOut,proto3" json:"opted_out,omitempty"` + Pubkey *types.Any `protobuf:"bytes,3,opt,name=pubkey,proto3" json:"pubkey,omitempty" yaml:"consensus_pubkey"` + // !!! DEPRECATED !!! opted_out is deprecated because after the introduction of Partial Set Security (PSS) + // we removed the soft opt-out feature. + OptedOut bool `protobuf:"varint,4,opt,name=opted_out,json=optedOut,proto3" json:"opted_out,omitempty"` // Deprecated: Do not use. } func (m *CrossChainValidator) Reset() { *m = CrossChainValidator{} } @@ -97,6 +99,7 @@ func (m *CrossChainValidator) GetPubkey() *types.Any { return nil } +// Deprecated: Do not use. func (m *CrossChainValidator) GetOptedOut() bool { if m != nil { return m.OptedOut @@ -170,35 +173,35 @@ func init() { } var fileDescriptor_5b27a82b276e7f93 = []byte{ - // 434 bytes of a gzipped FileDescriptorProto + // 436 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xce, 0x52, 0x28, 0xee, 0x06, 0x21, 0x64, 0x22, 0xe1, 0x06, 0xc9, 0x89, 0xcc, 0xc5, 0x97, + 0x10, 0xce, 0xb6, 0x50, 0xdc, 0x0d, 0x42, 0xc8, 0x44, 0xc2, 0xcd, 0xc1, 0x8e, 0xc2, 0xc5, 0x97, 0xda, 0x6a, 0x2a, 0x2e, 0x48, 0x1c, 0x9a, 0x1e, 0x39, 0x14, 0x19, 0x04, 0x12, 0x17, 0x6b, 0xbd, - 0x5e, 0x1c, 0x0b, 0x7b, 0x67, 0xb5, 0x3f, 0x2e, 0xcb, 0x53, 0xf4, 0x61, 0x78, 0x05, 0xa4, 0x8a, - 0x53, 0x8f, 0x9c, 0x0a, 0x4a, 0xde, 0x80, 0x27, 0x40, 0xfe, 0x49, 0x10, 0x3f, 0xb7, 0x99, 0x6f, - 0xf6, 0x9b, 0xf9, 0x66, 0xf6, 0xc3, 0x8b, 0x92, 0x6b, 0x26, 0xe9, 0x8a, 0x94, 0x3c, 0x55, 0x8c, - 0x1a, 0x59, 0x6a, 0x1b, 0x53, 0xda, 0xc4, 0x14, 0xb8, 0x32, 0x35, 0x93, 0x71, 0x73, 0xbc, 0x8b, - 0x23, 0x21, 0x41, 0x83, 0xfb, 0xe4, 0x3f, 0x9c, 0x88, 0xd2, 0x26, 0xda, 0xbd, 0x6b, 0x8e, 0xa7, - 0x87, 0x05, 0x40, 0x51, 0xb1, 0xb8, 0xa3, 0x64, 0xe6, 0x7d, 0x4c, 0xb8, 0xed, 0xf9, 0xd3, 0x49, - 0x01, 0x05, 0x74, 0x61, 0xdc, 0x46, 0x03, 0x7a, 0x48, 0x41, 0xd5, 0xa0, 0xd2, 0xbe, 0xd0, 0x27, - 0x43, 0x69, 0xf6, 0x77, 0x2f, 0x5d, 0xd6, 0x4c, 0x69, 0x52, 0x8b, 0xfe, 0x41, 0xf0, 0x05, 0xe1, - 0x87, 0x67, 0x12, 0x94, 0x3a, 0x6b, 0x45, 0xbd, 0x21, 0x55, 0x99, 0x13, 0x0d, 0xd2, 0xf5, 0xf0, - 0x5d, 0x92, 0xe7, 0x92, 0x29, 0xe5, 0xa1, 0x39, 0x0a, 0xef, 0x25, 0xdb, 0xd4, 0x9d, 0xe0, 0x3b, - 0x02, 0x2e, 0x98, 0xf4, 0x6e, 0xcd, 0x51, 0xb8, 0x97, 0xf4, 0x89, 0x4b, 0xf0, 0xbe, 0x30, 0xd9, - 0x07, 0x66, 0xbd, 0xbd, 0x39, 0x0a, 0xc7, 0x8b, 0x49, 0xd4, 0x4f, 0x8e, 0xb6, 0x93, 0xa3, 0x53, - 0x6e, 0x97, 0x27, 0x3f, 0x6f, 0x66, 0x8f, 0x2c, 0xa9, 0xab, 0x67, 0x41, 0xbb, 0x31, 0xe3, 0xca, - 0xa8, 0xb4, 0xe7, 0x05, 0x5f, 0x3f, 0x1f, 0x4d, 0x06, 0xed, 0x54, 0x5a, 0xa1, 0x21, 0x7a, 0x69, - 0xb2, 0x17, 0xcc, 0x26, 0x43, 0x63, 0xf7, 0x31, 0x3e, 0x00, 0xa1, 0x59, 0x9e, 0x82, 0xd1, 0xde, - 0xed, 0x39, 0x0a, 0x9d, 0xc4, 0xe9, 0x80, 0x73, 0xa3, 0x83, 0x4f, 0x78, 0xfc, 0xaa, 0x22, 0x6a, - 0x95, 0x30, 0x0a, 0x32, 0x77, 0x43, 0xfc, 0xe0, 0x82, 0x94, 0xba, 0xe4, 0x45, 0x0a, 0x3c, 0x95, - 0x4c, 0x54, 0xb6, 0xdb, 0xc3, 0x49, 0xee, 0x0f, 0xf8, 0x39, 0x4f, 0x5a, 0xd4, 0x3d, 0xc5, 0x07, - 0x8a, 0xf1, 0x3c, 0x6d, 0x0f, 0xd3, 0xad, 0x34, 0x5e, 0x4c, 0xff, 0xd1, 0xfe, 0x7a, 0x7b, 0xb5, - 0xa5, 0x73, 0x75, 0x33, 0x1b, 0x5d, 0x7e, 0x9f, 0xa1, 0xc4, 0x69, 0x69, 0x6d, 0x61, 0xf9, 0xf6, - 0x6a, 0xed, 0xa3, 0xeb, 0xb5, 0x8f, 0x7e, 0xac, 0x7d, 0x74, 0xb9, 0xf1, 0x47, 0xd7, 0x1b, 0x7f, - 0xf4, 0x6d, 0xe3, 0x8f, 0xde, 0x3d, 0x2f, 0x4a, 0xbd, 0x32, 0x59, 0x44, 0xa1, 0x1e, 0xfe, 0x25, - 0xfe, 0xed, 0x80, 0xa3, 0x9d, 0x6b, 0x9a, 0xa7, 0xf1, 0xc7, 0x3f, 0xad, 0xa3, 0xad, 0x60, 0x2a, - 0xdb, 0xef, 0x04, 0x9c, 0xfc, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x28, 0x12, 0xc5, 0x22, 0x6b, 0x02, - 0x00, 0x00, + 0x5e, 0x1c, 0x0b, 0x7b, 0x67, 0xb5, 0x3f, 0x2e, 0xcb, 0x53, 0xf4, 0x61, 0x78, 0x88, 0xc2, 0xa9, + 0x47, 0x4e, 0x05, 0x25, 0x6f, 0xc0, 0x13, 0x20, 0xff, 0x24, 0x88, 0x9f, 0xdb, 0xcc, 0x37, 0xfb, + 0xcd, 0x7c, 0x33, 0xfb, 0xe1, 0x45, 0xc9, 0x35, 0x93, 0x74, 0x45, 0x4a, 0x9e, 0x2a, 0x46, 0x8d, + 0x2c, 0xb5, 0x8d, 0x29, 0x6d, 0x62, 0x0a, 0x5c, 0x99, 0x9a, 0xc9, 0xb8, 0x39, 0xd9, 0xc5, 0x91, + 0x90, 0xa0, 0xc1, 0x7d, 0xf2, 0x1f, 0x4e, 0x44, 0x69, 0x13, 0xed, 0xde, 0x35, 0x27, 0xd3, 0xa3, + 0x02, 0xa0, 0xa8, 0x58, 0xdc, 0x51, 0x32, 0xf3, 0x3e, 0x26, 0xdc, 0xf6, 0xfc, 0xe9, 0xa4, 0x80, + 0x02, 0xba, 0x30, 0x6e, 0xa3, 0x01, 0x3d, 0xa2, 0xa0, 0x6a, 0x50, 0x69, 0x5f, 0xe8, 0x93, 0xa1, + 0x14, 0xfc, 0xdd, 0x4b, 0x97, 0x35, 0x53, 0x9a, 0xd4, 0xa2, 0x7f, 0x30, 0xff, 0x82, 0xf0, 0xa3, + 0x73, 0x09, 0x4a, 0x9d, 0xb7, 0xa2, 0xde, 0x90, 0xaa, 0xcc, 0x89, 0x06, 0xe9, 0x7a, 0xf8, 0x1e, + 0xc9, 0x73, 0xc9, 0x94, 0xf2, 0xd0, 0x0c, 0x85, 0xf7, 0x93, 0x6d, 0xea, 0x4e, 0xf0, 0x5d, 0x01, + 0x97, 0x4c, 0x7a, 0x7b, 0x33, 0x14, 0xee, 0x27, 0x7d, 0xe2, 0x12, 0x7c, 0x20, 0x4c, 0xf6, 0x81, + 0x59, 0x6f, 0x7f, 0x86, 0xc2, 0xf1, 0x62, 0x12, 0xf5, 0x93, 0xa3, 0xed, 0xe4, 0xe8, 0x8c, 0xdb, + 0xe5, 0xe9, 0xcf, 0xdb, 0xe0, 0xb1, 0x25, 0x75, 0xf5, 0x6c, 0xde, 0x6e, 0xcc, 0xb8, 0x32, 0x2a, + 0xed, 0x79, 0xf3, 0xaf, 0x9f, 0x8f, 0x27, 0x83, 0x76, 0x2a, 0xad, 0xd0, 0x10, 0xbd, 0x34, 0xd9, + 0x0b, 0x66, 0x93, 0xa1, 0xb1, 0x1b, 0xe0, 0x43, 0x10, 0x9a, 0xe5, 0x29, 0x18, 0xed, 0xdd, 0x99, + 0xa1, 0xd0, 0x59, 0xee, 0x79, 0x28, 0x71, 0x3a, 0xf0, 0xc2, 0xe8, 0xf9, 0x27, 0x3c, 0x7e, 0x55, + 0x11, 0xb5, 0x4a, 0x18, 0x05, 0x99, 0xbb, 0x21, 0x7e, 0x78, 0x49, 0x4a, 0x5d, 0xf2, 0x22, 0x05, + 0x9e, 0x4a, 0x26, 0x2a, 0xdb, 0xed, 0xe2, 0x24, 0x0f, 0x06, 0xfc, 0x82, 0x27, 0x2d, 0xea, 0x9e, + 0xe1, 0x43, 0xc5, 0x78, 0x9e, 0xb6, 0xc7, 0xe9, 0xd6, 0x1a, 0x2f, 0xa6, 0xff, 0xe8, 0x7f, 0xbd, + 0xbd, 0xdc, 0xd2, 0xb9, 0xbe, 0x0d, 0x46, 0x57, 0xdf, 0x03, 0x94, 0x38, 0x2d, 0xad, 0x2d, 0x2c, + 0xdf, 0x5e, 0xaf, 0x7d, 0x74, 0xb3, 0xf6, 0xd1, 0x8f, 0xb5, 0x8f, 0xae, 0x36, 0xfe, 0xe8, 0x66, + 0xe3, 0x8f, 0xbe, 0x6d, 0xfc, 0xd1, 0xbb, 0xe7, 0x45, 0xa9, 0x57, 0x26, 0x8b, 0x28, 0xd4, 0xc3, + 0xdf, 0xc4, 0xbf, 0x5d, 0x70, 0xbc, 0x73, 0x4e, 0xf3, 0x34, 0xfe, 0xf8, 0xa7, 0x7d, 0xb4, 0x15, + 0x4c, 0x65, 0x07, 0x9d, 0x80, 0xd3, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x83, 0x9f, 0x58, 0x42, + 0x6f, 0x02, 0x00, 0x00, } func (m *CrossChainValidator) Marshal() (dAtA []byte, err error) { diff --git a/x/ccv/consumer/types/keys_test.go b/x/ccv/consumer/types/keys_test.go index e1fcbcf733..7ca5ce2a10 100644 --- a/x/ccv/consumer/types/keys_test.go +++ b/x/ccv/consumer/types/keys_test.go @@ -69,8 +69,7 @@ func getAllFullyDefinedKeys() [][]byte { // PendingDataPacketsKey() does not use duplicated prefix with value of 0x06 PreCCVKey(), InitialValSetKey(), - // LastStandaloneHeightKey() is depreciated - SmallestNonOptOutPowerKey(), + // LastStandaloneHeightKey() is deprecated HistoricalInfoKey(0), PacketMaturityTimeKey(0, time.Time{}), HeightValsetUpdateIDKey(0), diff --git a/x/ccv/consumer/types/params_test.go b/x/ccv/consumer/types/params_test.go index caff4db0b1..ee4d45a80d 100644 --- a/x/ccv/consumer/types/params_test.go +++ b/x/ccv/consumer/types/params_test.go @@ -57,14 +57,6 @@ func TestValidateParams(t *testing.T) { "custom invalid params, negative unbonding period", ccvtypes.NewParams(true, 5, "", "", 5, 1005, "0.5", 1000, -24*21*time.Hour, "0.05", []string{"untrn"}, []string{"uatom"}, 2*time.Hour), false, }, - { - "custom invalid params, invalid soft opt out threshold", - ccvtypes.NewParams(true, 5, "", "", 5, 1005, "0.5", 1000, 24*21*time.Hour, "-0.05", []string{"u"}, []string{}, 2*time.Hour), false, - }, - { - "custom invalid params, invalid soft opt out threshold", - ccvtypes.NewParams(true, 5, "", "", 5, 1005, "0.5", 1000, 24*21*time.Hour, "0.5", []string{"u"}, []string{}, 2*time.Hour), false, - }, { "custom invalid params, invalid reward denom", ccvtypes.NewParams(true, 5, "", "", 5, 1005, "0.5", 1000, 24*21*time.Hour, "0.05", []string{"u"}, []string{}, 2*time.Hour), false, diff --git a/x/ccv/consumer/types/validator.go b/x/ccv/consumer/types/validator.go index f1f9fa260b..b134dde078 100644 --- a/x/ccv/consumer/types/validator.go +++ b/x/ccv/consumer/types/validator.go @@ -15,10 +15,9 @@ func NewCCValidator(address []byte, power int64, pubKey cryptotypes.PubKey) (Cro } return CrossChainValidator{ - Address: address, - Power: power, - Pubkey: pkAny, - OptedOut: false, + Address: address, + Power: power, + Pubkey: pkAny, }, nil } diff --git a/x/ccv/democracy/distribution/module.go b/x/ccv/democracy/distribution/module.go index 9e0bdacbb6..310e542b6a 100644 --- a/x/ccv/democracy/distribution/module.go +++ b/x/ccv/democracy/distribution/module.go @@ -66,7 +66,7 @@ func NewAppModule( // BeginBlock implements HasBeginBlocker interface // The cosmos-sdk/distribution BeginBlocker functionality is replicated here, -// however it no proposer awards are allocated. +// however no proposer awards are allocated. func (am AppModule) BeginBlock(goCtx context.Context) error { ctx := sdk.UnwrapSDKContext(goCtx) defer telemetry.ModuleMeasureSince(distrtypes.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) diff --git a/x/ccv/provider/ibc_middleware.go b/x/ccv/provider/ibc_middleware.go index f4128260e1..d9d816ab93 100644 --- a/x/ccv/provider/ibc_middleware.go +++ b/x/ccv/provider/ibc_middleware.go @@ -212,7 +212,7 @@ func (im IBCMiddleware) GetAppVersion(ctx sdk.Context, portID, channelID string) // It follows the same logic than the OnRecvPacket method of the IBC transfer module // see https://github.com/cosmos/ibc-go/blob/v7.3.2/modules/apps/transfer/keeper/relay.go#L162 func GetProviderDenom(denom string, packet channeltypes.Packet) (providerDenom string) { - // If the the prefix denom corresponds to the packet's source port and channel, + // If the prefix denom corresponds to the packet's source port and channel, // returns the base denom if ibctransfertypes.ReceiverChainIsSource(packet.GetSourcePort(), packet.GetSourceChannel(), denom) { voucherPrefix := ibctransfertypes.GetDenomPrefix(packet.GetSourcePort(), packet.GetSourceChannel()) diff --git a/x/ccv/provider/keeper/consumer_equivocation.go b/x/ccv/provider/keeper/consumer_equivocation.go index 65f113f6ad..b7aebf5c9c 100644 --- a/x/ccv/provider/keeper/consumer_equivocation.go +++ b/x/ccv/provider/keeper/consumer_equivocation.go @@ -311,7 +311,7 @@ func (k Keeper) CheckMisbehaviour(ctx sdk.Context, misbehaviour ibctmtypes.Misbe // the misbehaviour is for a light client attack and not a time violation, // see ibc-go/modules/light-clients/07-tendermint/types/misbehaviour_handle.go if !misbehaviour.Header1.GetHeight().EQ(misbehaviour.Header2.GetHeight()) { - return errorsmod.Wrapf(ibcclienttypes.ErrInvalidMisbehaviour, "headers are not at same height") + return errorsmod.Wrap(ibcclienttypes.ErrInvalidMisbehaviour, "headers are not at same height") } // Check that the evidence is not too old @@ -516,7 +516,7 @@ func (k Keeper) SlashValidator(ctx sdk.Context, providerAddr types.ProviderConsA // CRUD section // -// SetEquivocationEvidenceMinHeight sets the the minimum height +// SetEquivocationEvidenceMinHeight sets the minimum height // of a valid consumer equivocation evidence for a given consumer chain ID func (k Keeper) SetEquivocationEvidenceMinHeight(ctx sdk.Context, chainID string, height uint64) { store := ctx.KVStore(k.storeKey) @@ -526,7 +526,7 @@ func (k Keeper) SetEquivocationEvidenceMinHeight(ctx sdk.Context, chainID string store.Set(types.EquivocationEvidenceMinHeightKey(chainID), heightBytes) } -// GetEquivocationEvidenceMinHeight returns the the minimum height +// GetEquivocationEvidenceMinHeight returns the minimum height // of a valid consumer equivocation evidence for a given consumer chain ID func (k Keeper) GetEquivocationEvidenceMinHeight(ctx sdk.Context, chainID string) uint64 { store := ctx.KVStore(k.storeKey) @@ -538,7 +538,7 @@ func (k Keeper) GetEquivocationEvidenceMinHeight(ctx sdk.Context, chainID string return binary.BigEndian.Uint64(bz) } -// DeleteEquivocationEvidenceMinHeight deletes the the minimum height +// DeleteEquivocationEvidenceMinHeight deletes the minimum height // of a valid consumer equivocation evidence for a given consumer chain ID func (k Keeper) DeleteEquivocationEvidenceMinHeight(ctx sdk.Context, chainID string) { store := ctx.KVStore(k.storeKey) diff --git a/x/ccv/provider/keeper/genesis.go b/x/ccv/provider/keeper/genesis.go index b8d6d179fc..b965e3ed57 100644 --- a/x/ccv/provider/keeper/genesis.go +++ b/x/ccv/provider/keeper/genesis.go @@ -21,7 +21,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, genState *types.GenesisState) { err := k.BindPort(ctx, ccv.ProviderPortID) if err != nil { // If the binding fails, the chain MUST NOT start - panic(fmt.Errorf("could not claim port capability: %v", err)) + panic(fmt.Errorf("could not claim port capability: %w", err)) } } diff --git a/x/ccv/provider/keeper/key_assignment.go b/x/ccv/provider/keeper/key_assignment.go index b7d1f2de0b..596c3be606 100644 --- a/x/ccv/provider/keeper/key_assignment.go +++ b/x/ccv/provider/keeper/key_assignment.go @@ -506,7 +506,7 @@ func (k Keeper) ValidatorConsensusKeyInUse(ctx sdk.Context, valAddr sdk.ValAddre val, err := k.stakingKeeper.GetValidator(ctx, valAddr) if err != nil { // Abort TX, do NOT allow validator to be created - panic(fmt.Errorf("error finding newly created validator in staking module: %s", err)) + panic(fmt.Errorf("error finding newly created validator in staking module: %w", err)) } // Get the consensus address of the validator being added diff --git a/x/ccv/provider/keeper/msg_server.go b/x/ccv/provider/keeper/msg_server.go index 4239a7cf41..08429c55a8 100644 --- a/x/ccv/provider/keeper/msg_server.go +++ b/x/ccv/provider/keeper/msg_server.go @@ -34,6 +34,10 @@ func (k msgServer) UpdateParams(goCtx context.Context, msg *types.MsgUpdateParam return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.authority, msg.Authority) } + if err := msg.Params.Validate(); err != nil { + return nil, err + } + ctx := sdk.UnwrapSDKContext(goCtx) k.Keeper.SetParams(ctx, msg.Params) @@ -83,7 +87,7 @@ func (k msgServer) AssignConsumerKey(goCtx context.Context, msg *types.MsgAssign return &types.MsgAssignConsumerKeyResponse{}, nil } -// ConsumerAddition defines a rpc handler method for MsgConsumerAddition +// ConsumerAddition defines an RPC handler method for MsgConsumerAddition func (k msgServer) ConsumerAddition(goCtx context.Context, msg *types.MsgConsumerAddition) (*types.MsgConsumerAdditionResponse, error) { if k.GetAuthority() != msg.Authority { return nil, errorsmod.Wrapf(types.ErrUnauthorized, "expected %s, got %s", k.GetAuthority(), msg.Authority) @@ -97,7 +101,7 @@ func (k msgServer) ConsumerAddition(goCtx context.Context, msg *types.MsgConsume return &types.MsgConsumerAdditionResponse{}, nil } -// ConsumerRemoval defines a rpc handler method for MsgConsumerRemoval +// ConsumerRemoval defines an RPC handler method for MsgConsumerRemoval func (k msgServer) ConsumerRemoval( goCtx context.Context, msg *types.MsgConsumerRemoval) (*types.MsgConsumerRemovalResponse, error) { diff --git a/x/ccv/provider/keeper/proposal.go b/x/ccv/provider/keeper/proposal.go index f30332919a..8d471f086b 100644 --- a/x/ccv/provider/keeper/proposal.go +++ b/x/ccv/provider/keeper/proposal.go @@ -40,6 +40,11 @@ func (k Keeper) HandleConsumerAdditionProposal(ctx sdk.Context, proposal *types. BlocksPerDistributionTransmission: proposal.BlocksPerDistributionTransmission, HistoricalEntries: proposal.HistoricalEntries, DistributionTransmissionChannel: proposal.DistributionTransmissionChannel, + Top_N: proposal.Top_N, + ValidatorsPowerCap: proposal.ValidatorsPowerCap, + ValidatorSetCap: proposal.ValidatorSetCap, + Allowlist: proposal.Allowlist, + Denylist: proposal.Denylist, } return k.HandleLegacyConsumerAdditionProposal(ctx, &p) @@ -181,7 +186,6 @@ func (k Keeper) StopConsumerChain(ctx sdk.Context, chainID string, closeChan boo // Note: this call panics if the key assignment state is invalid k.DeleteKeyAssignments(ctx, chainID) k.DeleteMinimumPowerInTopN(ctx, chainID) - k.DeleteEquivocationEvidenceMinHeight(ctx, chainID) // close channel and delete the mappings between chain ID and channel ID if channelID, found := k.GetChainToChannel(ctx, chainID); found { diff --git a/x/ccv/provider/keeper/relay.go b/x/ccv/provider/keeper/relay.go index 6373e6a7ce..4d8f862c1b 100644 --- a/x/ccv/provider/keeper/relay.go +++ b/x/ccv/provider/keeper/relay.go @@ -215,7 +215,7 @@ func (k Keeper) SendVSCPacketsToChain(ctx sdk.Context, chainID, channelID string } // QueueVSCPackets queues latest validator updates for every registered consumer chain -// failing to GetLastValidators will cause a panic in EndBlock +// failing to GetLastBondedValidators will cause a panic in EndBlock // TODO: decide if this func shouldn't return an error to be propagated to BeginBlocker func (k Keeper) QueueVSCPackets(ctx sdk.Context) { @@ -427,8 +427,8 @@ func (k Keeper) HandleSlashPacket(ctx sdk.Context, chainID string, data ccv.Slas // Obtain validator from staking keeper validator, err := k.stakingKeeper.GetValidatorByConsAddr(ctx, providerConsAddr.ToSdkConsAddr()) - if err != nil && errors.Is(err, stakingtypes.ErrNoValidatorFound) { - k.Logger(ctx).Error("validator not found", "validator", providerConsAddr.String()) + if err != nil { + k.Logger(ctx).Error("validator not found", "validator", providerConsAddr.String(), "error", err) return } diff --git a/x/ccv/provider/migrations/v5/migrations_test.go b/x/ccv/provider/migrations/v5/migration_test.go similarity index 100% rename from x/ccv/provider/migrations/v5/migrations_test.go rename to x/ccv/provider/migrations/v5/migration_test.go diff --git a/x/ccv/provider/types/msg.go b/x/ccv/provider/types/msg.go index 058ee1d2e5..f74d8b9d78 100644 --- a/x/ccv/provider/types/msg.go +++ b/x/ccv/provider/types/msg.go @@ -32,6 +32,7 @@ var ( _ sdk.Msg = (*MsgAssignConsumerKey)(nil) _ sdk.Msg = (*MsgConsumerAddition)(nil) _ sdk.Msg = (*MsgConsumerRemoval)(nil) + _ sdk.Msg = (*MsgConsumerModification)(nil) _ sdk.Msg = (*MsgChangeRewardDenoms)(nil) _ sdk.Msg = (*MsgSubmitConsumerMisbehaviour)(nil) _ sdk.Msg = (*MsgSubmitConsumerDoubleVoting)(nil) @@ -42,6 +43,7 @@ var ( _ sdk.HasValidateBasic = (*MsgAssignConsumerKey)(nil) _ sdk.HasValidateBasic = (*MsgConsumerAddition)(nil) _ sdk.HasValidateBasic = (*MsgConsumerRemoval)(nil) + _ sdk.HasValidateBasic = (*MsgConsumerModification)(nil) _ sdk.HasValidateBasic = (*MsgChangeRewardDenoms)(nil) _ sdk.HasValidateBasic = (*MsgSubmitConsumerMisbehaviour)(nil) _ sdk.HasValidateBasic = (*MsgSubmitConsumerDoubleVoting)(nil) @@ -244,10 +246,6 @@ func (msg *MsgConsumerAddition) ValidateBasic() error { return ErrBlankConsumerChainID } - if strings.TrimSpace(msg.ChainId) == "" { - return errorsmod.Wrap(ErrInvalidConsumerAdditionProposal, "consumer chain id must not be blank") - } - if msg.InitialHeight.IsZero() { return errorsmod.Wrap(ErrInvalidConsumerAdditionProposal, "initial height cannot be zero") } @@ -306,6 +304,20 @@ func (msg *MsgConsumerRemoval) ValidateBasic() error { return nil } +// ValidateBasic implements the sdk.Msg interface. +func (msg *MsgConsumerModification) ValidateBasic() error { + if strings.TrimSpace(msg.ChainId) == "" { + return ErrBlankConsumerChainID + } + + err := ValidatePSSFeatures(msg.Top_N, msg.ValidatorsPowerCap) + if err != nil { + return errorsmod.Wrapf(ErrInvalidConsumerModificationProposal, "invalid PSS features: %s", err.Error()) + } + + return nil +} + // NewMsgOptIn creates a new NewMsgOptIn instance. func NewMsgOptIn(chainID string, providerValidatorAddress sdk.ValAddress, consumerConsensusPubKey, signer string) (*MsgOptIn, error) { return &MsgOptIn{ diff --git a/x/ccv/provider/types/query.pb.go b/x/ccv/provider/types/query.pb.go index e8c13f7d3c..84e610776e 100644 --- a/x/ccv/provider/types/query.pb.go +++ b/x/ccv/provider/types/query.pb.go @@ -9,7 +9,6 @@ import ( fmt "fmt" crypto "github.com/cometbft/cometbft/proto/tendermint/crypto" _ "github.com/cosmos/cosmos-proto" - _ "github.com/cosmos/cosmos-sdk/types/tx/amino" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -1789,135 +1788,133 @@ func init() { } var fileDescriptor_422512d7b7586cd7 = []byte{ - // 2045 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0xcf, 0x6f, 0xdc, 0xc6, - 0xf5, 0x17, 0x57, 0x3f, 0x22, 0x8d, 0xe2, 0x5f, 0x63, 0x7d, 0x13, 0x99, 0x52, 0x76, 0x15, 0xe6, - 0xdb, 0x56, 0x96, 0x9d, 0xa5, 0x24, 0xc3, 0xad, 0x63, 0x57, 0x91, 0xb5, 0x5a, 0xdb, 0xd9, 0xda, - 0x89, 0x15, 0x5a, 0x56, 0x0b, 0xb7, 0x28, 0x3d, 0x26, 0x27, 0x2b, 0xc2, 0x24, 0x87, 0xe2, 0x50, - 0xeb, 0x6c, 0x8d, 0x1c, 0xd2, 0x43, 0x9b, 0x53, 0x11, 0xf4, 0x07, 0xd0, 0x63, 0x2e, 0x05, 0x7a, - 0x29, 0x50, 0x14, 0x45, 0x91, 0x3f, 0x21, 0xb7, 0xa6, 0xcd, 0xa5, 0xe8, 0xc1, 0x2d, 0xec, 0x02, - 0x2d, 0x7a, 0x28, 0x8a, 0xa0, 0x40, 0x4f, 0x05, 0x0a, 0x0e, 0x87, 0xbf, 0x76, 0xb9, 0xbb, 0xe4, - 0xae, 0x7a, 0x11, 0x96, 0x33, 0x6f, 0x3e, 0xf3, 0xde, 0x9b, 0xf7, 0xde, 0xbc, 0xcf, 0x08, 0xc8, - 0x86, 0xed, 0x61, 0x57, 0xdb, 0x47, 0x86, 0xad, 0x52, 0xac, 0x1d, 0xba, 0x86, 0xd7, 0x96, 0x35, - 0xad, 0x25, 0x3b, 0x2e, 0x69, 0x19, 0x3a, 0x76, 0xe5, 0xd6, 0x9a, 0x7c, 0x70, 0x88, 0xdd, 0x76, - 0xd5, 0x71, 0x89, 0x47, 0xe0, 0x2b, 0x19, 0x0b, 0xaa, 0x9a, 0xd6, 0xaa, 0x86, 0x0b, 0xaa, 0xad, - 0x35, 0x71, 0xb1, 0x49, 0x48, 0xd3, 0xc4, 0x32, 0x72, 0x0c, 0x19, 0xd9, 0x36, 0xf1, 0x90, 0x67, - 0x10, 0x9b, 0x06, 0x10, 0xe2, 0x5c, 0x93, 0x34, 0x09, 0xfb, 0x29, 0xfb, 0xbf, 0xf8, 0x68, 0x85, - 0xaf, 0x61, 0x5f, 0x0f, 0x0e, 0xdf, 0x91, 0x3d, 0xc3, 0xc2, 0xd4, 0x43, 0x96, 0xc3, 0x05, 0xd6, - 0xf3, 0xa8, 0x1a, 0x69, 0x11, 0xac, 0x59, 0xed, 0xb5, 0xa6, 0xb5, 0x26, 0xd3, 0x7d, 0xe4, 0x62, - 0x5d, 0xd5, 0x88, 0x4d, 0x0f, 0xad, 0x68, 0xc5, 0x17, 0xfa, 0xac, 0x78, 0x64, 0xb8, 0x98, 0x8b, - 0x2d, 0x7a, 0xd8, 0xd6, 0xb1, 0x6b, 0x19, 0xb6, 0x27, 0x6b, 0x6e, 0xdb, 0xf1, 0x88, 0xfc, 0x10, - 0xb7, 0x43, 0x0b, 0xcf, 0x68, 0x84, 0x5a, 0x84, 0xaa, 0x81, 0x91, 0xc1, 0x07, 0x9f, 0x3a, 0x85, - 0x2c, 0xc3, 0x26, 0x32, 0xfb, 0x1b, 0x0c, 0x49, 0x97, 0xc0, 0xc2, 0xdb, 0xbe, 0x87, 0xb7, 0xb9, - 0x26, 0x37, 0xb0, 0x8d, 0xa9, 0x41, 0x15, 0x7c, 0x70, 0x88, 0xa9, 0x07, 0xcf, 0x80, 0xe9, 0x40, - 0x1d, 0x43, 0x9f, 0x17, 0x96, 0x84, 0xe5, 0x19, 0xe5, 0x39, 0xf6, 0xdd, 0xd0, 0xa5, 0xc7, 0x60, - 0x31, 0x7b, 0x25, 0x75, 0x88, 0x4d, 0x31, 0xfc, 0x26, 0x38, 0xd6, 0x0c, 0x86, 0x54, 0xea, 0x21, - 0x0f, 0xb3, 0xf5, 0xb3, 0xeb, 0xab, 0xd5, 0x5e, 0x87, 0xd8, 0x5a, 0xab, 0x76, 0x60, 0xdd, 0xf1, - 0xd7, 0xd5, 0x26, 0x3e, 0x79, 0x52, 0x19, 0x53, 0x9e, 0x6f, 0x26, 0xc6, 0xa4, 0x45, 0x20, 0xa6, - 0x36, 0xdf, 0xf6, 0xe1, 0x42, 0xad, 0x25, 0xd4, 0x61, 0x54, 0x38, 0xcb, 0x35, 0xab, 0x81, 0x29, - 0xb6, 0x3d, 0x9d, 0x17, 0x96, 0xc6, 0x97, 0x67, 0xd7, 0x57, 0xaa, 0x39, 0xe2, 0xaa, 0xca, 0x40, - 0x14, 0xbe, 0x52, 0x3a, 0x0b, 0xbe, 0xd4, 0xbd, 0xc5, 0x1d, 0x0f, 0xb9, 0xde, 0x8e, 0x4b, 0x1c, - 0x42, 0x91, 0x19, 0x69, 0xf3, 0x81, 0x00, 0x96, 0x07, 0xcb, 0x72, 0xdd, 0xbe, 0x05, 0x66, 0x9c, - 0x70, 0x90, 0x7b, 0xec, 0xf5, 0x7c, 0xea, 0x71, 0xf0, 0x2d, 0x5d, 0x37, 0xfc, 0x80, 0x8f, 0xa1, - 0x63, 0x40, 0x69, 0x19, 0x7c, 0x31, 0x4b, 0x13, 0xe2, 0x74, 0x29, 0xfd, 0x3d, 0x21, 0xdb, 0xc0, - 0x94, 0x68, 0x74, 0xd2, 0x5d, 0x3a, 0x6f, 0x14, 0xd2, 0x59, 0xc1, 0x16, 0x69, 0x21, 0x33, 0x53, - 0xe5, 0x9f, 0x96, 0xc0, 0x24, 0xdb, 0xbb, 0x4f, 0x2c, 0xc2, 0x05, 0x30, 0xa3, 0x99, 0x06, 0xb6, - 0x3d, 0x7f, 0xae, 0xc4, 0xe6, 0xa6, 0x83, 0x81, 0x86, 0x0e, 0x4f, 0x83, 0x49, 0x8f, 0x38, 0xea, - 0x5b, 0xf3, 0xe3, 0x4b, 0xc2, 0xf2, 0x31, 0x65, 0xc2, 0x23, 0xce, 0x5b, 0x70, 0x05, 0x40, 0xcb, - 0xb0, 0x55, 0x87, 0x3c, 0xc2, 0xae, 0x6a, 0xd8, 0x6a, 0x20, 0x31, 0xb1, 0x24, 0x2c, 0x8f, 0x2b, - 0xc7, 0x2d, 0xc3, 0xde, 0xf1, 0x27, 0x1a, 0xf6, 0xae, 0x2f, 0xbb, 0x0a, 0xe6, 0x5a, 0xc8, 0x34, - 0x74, 0xe4, 0x11, 0x97, 0xf2, 0x25, 0x1a, 0x72, 0xe6, 0x27, 0x19, 0x1e, 0x8c, 0xe7, 0xd8, 0xa2, - 0x6d, 0xe4, 0xc0, 0x15, 0x70, 0x2a, 0x1a, 0x55, 0x29, 0xf6, 0x98, 0xf8, 0x14, 0x13, 0x3f, 0x11, - 0x4d, 0xdc, 0xc1, 0x9e, 0x2f, 0xbb, 0x08, 0x66, 0x90, 0x69, 0x92, 0x47, 0xa6, 0x41, 0xbd, 0xf9, - 0xe7, 0x96, 0xc6, 0x97, 0x67, 0x94, 0x78, 0x00, 0x8a, 0x60, 0x5a, 0xc7, 0x76, 0x9b, 0x4d, 0x4e, - 0xb3, 0xc9, 0xe8, 0x5b, 0xfa, 0xbe, 0x00, 0x5e, 0x66, 0x67, 0xb4, 0x17, 0x42, 0x26, 0x82, 0xc0, - 0x1d, 0x9c, 0xc2, 0x70, 0x03, 0x9c, 0x0c, 0x8f, 0x43, 0x45, 0xba, 0xee, 0x62, 0x4a, 0x03, 0xef, - 0xd5, 0xe0, 0xe7, 0x4f, 0x2a, 0xc7, 0xdb, 0xc8, 0x32, 0x2f, 0x4b, 0x7c, 0x42, 0x52, 0x4e, 0x84, - 0xb2, 0x5b, 0xc1, 0xc8, 0xe5, 0xe9, 0x0f, 0x3e, 0xaa, 0x8c, 0xfd, 0xed, 0xa3, 0xca, 0x98, 0x74, - 0x1b, 0x48, 0xfd, 0x14, 0xe1, 0x71, 0x72, 0x16, 0x9c, 0x0c, 0x0b, 0x5e, 0xb4, 0x5d, 0xa0, 0xd1, - 0x09, 0x2d, 0x21, 0xef, 0x6f, 0xd6, 0x6d, 0xda, 0x4e, 0x62, 0xf3, 0x7c, 0xa6, 0x75, 0xed, 0xd5, - 0xc7, 0xb4, 0x8e, 0xfd, 0xfb, 0x99, 0x96, 0x56, 0x24, 0x36, 0xad, 0xcb, 0x93, 0xdc, 0xb4, 0x0e, - 0xaf, 0x49, 0x0b, 0xe0, 0x0c, 0x03, 0xdc, 0xdd, 0x77, 0x89, 0xe7, 0x99, 0x98, 0x15, 0xb4, 0x30, - 0xed, 0x7e, 0x27, 0xf0, 0xc2, 0xd6, 0x31, 0xcb, 0xb7, 0xa9, 0x80, 0x59, 0x6a, 0x22, 0xba, 0xaf, - 0x5a, 0xd8, 0xc3, 0x2e, 0xdb, 0x61, 0x5c, 0x01, 0x6c, 0xe8, 0x4d, 0x7f, 0x04, 0xae, 0x83, 0xff, - 0x4b, 0x08, 0xa8, 0x2c, 0x8e, 0x90, 0xad, 0x61, 0x66, 0xfb, 0xb8, 0x72, 0x3a, 0x16, 0xdd, 0x0a, - 0xa7, 0xe0, 0xb7, 0xc1, 0xbc, 0x8d, 0xdf, 0xf5, 0x54, 0x17, 0x3b, 0x26, 0xb6, 0x0d, 0xba, 0xaf, - 0x6a, 0xc8, 0xd6, 0x7d, 0x63, 0x31, 0x4b, 0x99, 0xd9, 0x75, 0xb1, 0x1a, 0xdc, 0x8f, 0xd5, 0xf0, - 0x7e, 0xac, 0xee, 0x86, 0xf7, 0x63, 0x6d, 0xda, 0xaf, 0xce, 0x1f, 0xfe, 0xa9, 0x22, 0x28, 0x2f, - 0xf8, 0x28, 0x4a, 0x08, 0xb2, 0x1d, 0x62, 0x48, 0xe7, 0xc1, 0x0a, 0x33, 0x49, 0xc1, 0x4d, 0x83, - 0x7a, 0xd8, 0xc5, 0x7a, 0x9c, 0xf7, 0x8f, 0x90, 0xab, 0xd7, 0xb1, 0x4d, 0xac, 0xa8, 0xf0, 0x5c, - 0x03, 0xe7, 0x72, 0x49, 0x73, 0x8f, 0xbc, 0x00, 0xa6, 0x74, 0x36, 0xc2, 0x6a, 0xf9, 0x8c, 0xc2, - 0xbf, 0xa4, 0x32, 0xbf, 0x9d, 0x82, 0x9a, 0x82, 0x75, 0x56, 0x42, 0x1a, 0xf5, 0x68, 0x9b, 0xf7, - 0x05, 0xf0, 0x52, 0x0f, 0x01, 0x8e, 0x7c, 0x1f, 0x1c, 0x77, 0x92, 0x73, 0xe1, 0x6d, 0xb1, 0x9e, - 0xab, 0xb4, 0xa5, 0x60, 0xf9, 0x15, 0xd6, 0x81, 0x27, 0x35, 0xc0, 0xb1, 0x94, 0x18, 0x9c, 0x07, - 0x3c, 0x7e, 0xeb, 0xe9, 0x70, 0xae, 0xc3, 0x32, 0x00, 0x61, 0x49, 0x6c, 0xd4, 0xd9, 0x61, 0x4e, - 0x28, 0x89, 0x11, 0xe9, 0x16, 0x90, 0x99, 0x35, 0x5b, 0xa6, 0xb9, 0x83, 0x0c, 0x97, 0xee, 0x21, - 0x73, 0x9b, 0xd8, 0x7e, 0xc8, 0xd5, 0xd2, 0x15, 0xbc, 0x51, 0xcf, 0x71, 0xb5, 0xff, 0x4c, 0x00, - 0xab, 0xf9, 0xe1, 0xb8, 0xbf, 0x0e, 0xc0, 0x29, 0x07, 0x19, 0xae, 0xda, 0x42, 0xa6, 0xdf, 0xd7, - 0xb0, 0x34, 0xe0, 0x2e, 0xbb, 0x9e, 0xcf, 0x65, 0xc8, 0x70, 0xe3, 0x8d, 0xa2, 0x34, 0xb3, 0xe3, - 0x00, 0x38, 0xee, 0xa4, 0x44, 0xa4, 0x7f, 0x09, 0xe0, 0xe5, 0x81, 0xab, 0xe0, 0xf5, 0x5e, 0xb9, - 0x59, 0x5b, 0xf8, 0xfc, 0x49, 0xe5, 0xc5, 0xa0, 0x14, 0x74, 0x4a, 0x74, 0x97, 0x3b, 0x1f, 0xa7, - 0x47, 0x49, 0x49, 0xe0, 0x74, 0x4a, 0x74, 0xd7, 0x16, 0xb8, 0x09, 0x9e, 0x8f, 0xa4, 0x1e, 0xe2, - 0x36, 0xcf, 0xb1, 0xc5, 0x6a, 0xdc, 0xd5, 0x55, 0x83, 0xae, 0xae, 0xba, 0x73, 0xf8, 0xc0, 0x34, - 0xb4, 0x9b, 0xb8, 0xad, 0xcc, 0x86, 0x2b, 0x6e, 0xe2, 0xb6, 0x34, 0x07, 0x60, 0x10, 0xba, 0xc8, - 0x45, 0x71, 0xe2, 0xdc, 0x07, 0xa7, 0x53, 0xa3, 0xfc, 0x58, 0x1a, 0x60, 0xca, 0x61, 0x23, 0xfc, - 0x66, 0x3e, 0x97, 0xf3, 0x2c, 0xfc, 0x25, 0x3c, 0x6e, 0x39, 0x80, 0x74, 0x83, 0x27, 0x72, 0x2a, - 0x02, 0x6e, 0x3b, 0x1e, 0xd6, 0x1b, 0x76, 0x54, 0x1e, 0xf3, 0xb4, 0x8e, 0x07, 0x3c, 0xc7, 0x07, - 0x01, 0x45, 0xfd, 0xda, 0x4b, 0xc9, 0xfb, 0xb7, 0xe3, 0xa4, 0x70, 0x98, 0xfa, 0x0b, 0x89, 0x8b, - 0x38, 0x7d, 0x74, 0x98, 0x4a, 0x57, 0x40, 0x39, 0xb5, 0x65, 0x21, 0x7d, 0x3f, 0x16, 0xc0, 0x52, - 0x8f, 0xd5, 0xd1, 0xaf, 0xcc, 0xcb, 0x54, 0xc8, 0x7d, 0x99, 0x76, 0x45, 0x45, 0xa9, 0x60, 0x54, - 0xc0, 0x39, 0x30, 0xc9, 0x5a, 0x13, 0x16, 0x4f, 0xe3, 0x4a, 0xf0, 0xe1, 0x37, 0x9f, 0x95, 0x9e, - 0x86, 0x73, 0xff, 0x62, 0x00, 0x62, 0xd7, 0xf1, 0x94, 0xbd, 0x96, 0x2b, 0x4c, 0x06, 0x39, 0x45, - 0x49, 0x00, 0x4b, 0x07, 0xbc, 0xa8, 0xa4, 0xbb, 0xf2, 0x48, 0xf6, 0x0d, 0x44, 0x77, 0x09, 0xff, - 0x0a, 0xef, 0xc3, 0x11, 0x9d, 0x2a, 0x21, 0xb0, 0x56, 0x60, 0x4b, 0xee, 0x8e, 0xf3, 0x00, 0x46, - 0x27, 0x11, 0x46, 0x44, 0x18, 0x63, 0x51, 0x05, 0x08, 0xaa, 0x9f, 0xce, 0x3a, 0x95, 0x73, 0xd9, - 0xbd, 0xcf, 0x36, 0xb1, 0x2c, 0x83, 0x52, 0x83, 0xd8, 0x4a, 0xc2, 0xa2, 0xff, 0x59, 0x3b, 0x26, - 0x7d, 0x07, 0x9c, 0xcf, 0xa7, 0x08, 0xb7, 0xf3, 0x6b, 0x60, 0xc2, 0x0d, 0x79, 0xd9, 0x4c, 0xed, - 0xcb, 0x7e, 0xaa, 0xff, 0xf1, 0x49, 0x65, 0x21, 0x60, 0x8c, 0x54, 0x7f, 0x58, 0x35, 0x88, 0x6c, - 0x21, 0x6f, 0xbf, 0x7a, 0x0b, 0x37, 0x91, 0xd6, 0xae, 0x63, 0xed, 0xf7, 0xbf, 0x7e, 0x15, 0x70, - 0x42, 0x59, 0xc7, 0xda, 0xcf, 0xff, 0xfa, 0xcb, 0x15, 0x41, 0x61, 0x18, 0xd2, 0x06, 0x4f, 0x90, - 0xdb, 0xa6, 0x8e, 0xa9, 0x77, 0xd7, 0xd6, 0x88, 0xfd, 0x8e, 0xe1, 0x5a, 0x58, 0xdf, 0xa3, 0x5a, - 0x8e, 0x04, 0xfb, 0x41, 0xd8, 0xee, 0x65, 0xaf, 0xe7, 0x0a, 0x1b, 0x00, 0xb6, 0xa8, 0xa6, 0x52, - 0x6c, 0xeb, 0x6a, 0x44, 0xd0, 0x79, 0x59, 0xbb, 0x98, 0x2b, 0x5e, 0xf7, 0xa8, 0x76, 0x07, 0xdb, - 0x7a, 0xdc, 0xbd, 0x04, 0x05, 0xee, 0x64, 0xab, 0x63, 0x7c, 0xfd, 0xe3, 0x0a, 0x98, 0x64, 0x0a, - 0xc1, 0xa7, 0x02, 0x98, 0xcb, 0xe2, 0xb9, 0xf0, 0x6a, 0xf1, 0x0c, 0x49, 0x93, 0x6b, 0x71, 0x6b, - 0x04, 0x84, 0xc0, 0x25, 0xd2, 0xb5, 0xef, 0x7e, 0xf6, 0x97, 0x1f, 0x95, 0x36, 0xe1, 0xc6, 0xe0, - 0xb7, 0x94, 0x28, 0xa6, 0x39, 0x91, 0x96, 0x1f, 0x87, 0xa7, 0xf1, 0x1e, 0xfc, 0x4c, 0xe0, 0x97, - 0x47, 0x3a, 0x51, 0xe0, 0x66, 0x71, 0x0d, 0x53, 0x4c, 0x5c, 0xbc, 0x3a, 0x3c, 0x00, 0xb7, 0xf0, - 0x35, 0x66, 0xe1, 0x05, 0xb8, 0x56, 0xc0, 0xc2, 0x80, 0xa3, 0xc3, 0xf7, 0x4b, 0x60, 0xbe, 0x07, - 0xf1, 0xa6, 0xf0, 0xd6, 0x90, 0x9a, 0x65, 0x72, 0x7c, 0xf1, 0xcd, 0x23, 0x42, 0xe3, 0x46, 0xbf, - 0xc1, 0x8c, 0xae, 0xc1, 0xab, 0x45, 0x8d, 0x56, 0xa9, 0x0f, 0xa8, 0x46, 0xf4, 0x19, 0xfe, 0x47, - 0x00, 0x2f, 0x66, 0xf3, 0x78, 0x0a, 0x6f, 0x0e, 0xad, 0x74, 0xf7, 0x83, 0x81, 0x78, 0xeb, 0x68, - 0xc0, 0xb8, 0x03, 0x6e, 0x30, 0x07, 0x6c, 0xc1, 0xcd, 0x21, 0x1c, 0x40, 0x9c, 0x84, 0xfd, 0xff, - 0x0c, 0x09, 0x55, 0x26, 0x35, 0x85, 0xd7, 0xf3, 0x6b, 0xdd, 0x8f, 0x64, 0x8b, 0x37, 0x46, 0xc6, - 0xe1, 0x86, 0x6f, 0x31, 0xc3, 0xaf, 0xc0, 0xd7, 0x72, 0x3c, 0x8e, 0x46, 0x2f, 0x0c, 0xa9, 0xa6, - 0x33, 0xc3, 0xe4, 0x64, 0x3b, 0x34, 0x94, 0xc9, 0x19, 0xe4, 0x7b, 0x28, 0x93, 0xb3, 0xb8, 0xf3, - 0x70, 0x26, 0xa7, 0x2e, 0x4a, 0xf8, 0x5b, 0x81, 0xb7, 0xc4, 0x29, 0xda, 0x0c, 0x5f, 0xcf, 0xaf, - 0x62, 0x16, 0x1b, 0x17, 0x37, 0x87, 0x5e, 0xcf, 0x4d, 0xbb, 0xc4, 0x4c, 0x5b, 0x87, 0xab, 0x83, - 0x4d, 0xf3, 0x38, 0x40, 0xf0, 0x58, 0x0a, 0x7f, 0x52, 0x02, 0xaf, 0xe4, 0xe0, 0xc1, 0xf0, 0x76, - 0x7e, 0x15, 0x73, 0xf1, 0x6f, 0x71, 0xe7, 0xe8, 0x00, 0xb9, 0x13, 0x6e, 0x32, 0x27, 0x5c, 0x83, - 0xdb, 0x83, 0x9d, 0xe0, 0x46, 0x88, 0x71, 0x4c, 0xbb, 0x0c, 0x53, 0x0d, 0x78, 0x3d, 0xfc, 0x7b, - 0x17, 0x6f, 0x4f, 0xd3, 0x51, 0x0a, 0x0b, 0xdc, 0xaa, 0x3d, 0x1e, 0x07, 0xc4, 0xda, 0x28, 0x10, - 0xdc, 0xea, 0x1a, 0xb3, 0xfa, 0xab, 0xf0, 0xf2, 0x60, 0xab, 0xc3, 0x67, 0x01, 0xb5, 0xf3, 0x02, - 0xfb, 0x71, 0x89, 0xbf, 0x1c, 0xe7, 0xe0, 0xe1, 0x70, 0x37, 0xbf, 0xd2, 0xf9, 0x5f, 0x09, 0xc4, - 0xbb, 0x47, 0x8c, 0xca, 0xbd, 0x73, 0x85, 0x79, 0xe7, 0x22, 0xbc, 0x50, 0xb8, 0xbe, 0x1b, 0x3a, - 0xfc, 0x95, 0x00, 0x66, 0x13, 0x54, 0x17, 0x7e, 0xa5, 0xc0, 0x71, 0x25, 0x29, 0xb3, 0x78, 0xa9, - 0xf8, 0x42, 0xae, 0xff, 0x2a, 0xd3, 0x7f, 0x05, 0x2e, 0xe7, 0x38, 0xdd, 0x40, 0xc9, 0x1f, 0x86, - 0x09, 0xdd, 0x9f, 0xf4, 0x16, 0x49, 0xe8, 0x5c, 0x3c, 0xbc, 0x48, 0x42, 0xe7, 0xe3, 0xe3, 0x45, - 0xba, 0x13, 0xe2, 0x83, 0xa8, 0x86, 0xad, 0xc6, 0x3c, 0x30, 0xd9, 0x77, 0xfe, 0xa6, 0x04, 0xce, - 0xe6, 0x26, 0x68, 0xf0, 0xee, 0xb0, 0xcd, 0x64, 0x5f, 0x8e, 0x29, 0xee, 0x1d, 0x35, 0x2c, 0x77, - 0xd3, 0x3d, 0xe6, 0xa6, 0x5d, 0xa8, 0x14, 0xee, 0x5c, 0x55, 0x07, 0xbb, 0xb1, 0xc7, 0xe4, 0xc7, - 0x9d, 0xac, 0xf0, 0x3d, 0xf8, 0x8b, 0x12, 0xf8, 0xff, 0x3c, 0x64, 0x0f, 0xee, 0x8c, 0xd0, 0x98, - 0x64, 0x12, 0x58, 0xf1, 0xed, 0x23, 0x44, 0xe4, 0x9e, 0xba, 0xcf, 0x3c, 0x75, 0x0f, 0x7e, 0xa3, - 0x88, 0xa7, 0x22, 0x28, 0xd5, 0x67, 0xa0, 0x89, 0xa8, 0xca, 0xf2, 0xd7, 0xbf, 0x05, 0xfe, 0xea, - 0x9e, 0x45, 0x30, 0x61, 0x81, 0xc7, 0x8e, 0x3e, 0x04, 0x57, 0xbc, 0x3e, 0x2a, 0x4c, 0xf1, 0x0b, - 0x93, 0x30, 0x1c, 0xf5, 0x30, 0x06, 0x52, 0x5b, 0x54, 0x4b, 0xa6, 0xd8, 0x3f, 0x3a, 0x09, 0x40, - 0xa2, 0xd6, 0x6c, 0x8f, 0xf2, 0xc8, 0x13, 0x5a, 0x5d, 0x1f, 0x0d, 0x64, 0x04, 0xc6, 0x93, 0x59, - 0x53, 0x6a, 0x5f, 0xff, 0xe4, 0x69, 0x59, 0xf8, 0xf4, 0x69, 0x59, 0xf8, 0xf3, 0xd3, 0xb2, 0xf0, - 0xe1, 0xb3, 0xf2, 0xd8, 0xa7, 0xcf, 0xca, 0x63, 0x7f, 0x78, 0x56, 0x1e, 0xbb, 0xb7, 0xd1, 0x34, - 0xbc, 0xfd, 0xc3, 0x07, 0x55, 0x8d, 0x58, 0xfc, 0xff, 0xe2, 0x89, 0xcd, 0x5e, 0x8d, 0x36, 0x6b, - 0x5d, 0x94, 0xdf, 0xed, 0xe8, 0xcd, 0xda, 0x0e, 0xa6, 0x0f, 0xa6, 0xd8, 0x7f, 0x3f, 0x2e, 0xfc, - 0x37, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x73, 0x8b, 0xa7, 0xb7, 0x20, 0x00, 0x00, + // 2015 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0xcd, 0x6f, 0xdc, 0xc6, + 0x15, 0x17, 0x57, 0x1f, 0x91, 0x46, 0xf1, 0x47, 0xc6, 0x6a, 0x22, 0x53, 0xca, 0xae, 0x42, 0xf7, + 0x43, 0x96, 0x5d, 0x52, 0x92, 0x61, 0xc4, 0xb1, 0xab, 0xc8, 0x5a, 0xc9, 0x76, 0x16, 0x76, 0x62, + 0x85, 0x96, 0xd5, 0xc2, 0x2d, 0x4a, 0x8f, 0xc9, 0xc9, 0x8a, 0x30, 0x97, 0x43, 0x71, 0xb8, 0xeb, + 0x2c, 0x8c, 0x1c, 0xd2, 0x43, 0x9b, 0x53, 0x11, 0xf4, 0x03, 0xe8, 0x31, 0x97, 0x1e, 0x7b, 0xe9, + 0xa1, 0xc8, 0x9f, 0x90, 0x5b, 0x53, 0xe4, 0x52, 0xf4, 0xe0, 0x16, 0x72, 0x0f, 0x45, 0x0f, 0x45, + 0x61, 0x14, 0xe8, 0xa9, 0x40, 0xc1, 0xe1, 0xf0, 0x6b, 0x97, 0xbb, 0x4b, 0xee, 0x2a, 0xb7, 0xe5, + 0xcc, 0xbc, 0xdf, 0xbc, 0xf7, 0xe6, 0xbd, 0x37, 0xef, 0x37, 0x0b, 0x14, 0xd3, 0xf6, 0xb0, 0xab, + 0x1f, 0x20, 0xd3, 0xd6, 0x28, 0xd6, 0x9b, 0xae, 0xe9, 0xb5, 0x15, 0x5d, 0x6f, 0x29, 0x8e, 0x4b, + 0x5a, 0xa6, 0x81, 0x5d, 0xa5, 0xb5, 0xa6, 0x1c, 0x36, 0xb1, 0xdb, 0x96, 0x1d, 0x97, 0x78, 0x04, + 0x9e, 0xcb, 0x10, 0x90, 0x75, 0xbd, 0x25, 0x87, 0x02, 0x72, 0x6b, 0x4d, 0x5c, 0xac, 0x13, 0x52, + 0xb7, 0xb0, 0x82, 0x1c, 0x53, 0x41, 0xb6, 0x4d, 0x3c, 0xe4, 0x99, 0xc4, 0xa6, 0x01, 0x84, 0x38, + 0x57, 0x27, 0x75, 0xc2, 0x7e, 0x2a, 0xfe, 0x2f, 0x3e, 0x5a, 0xe1, 0x32, 0xec, 0xeb, 0x51, 0xf3, + 0x03, 0xc5, 0x33, 0x1b, 0x98, 0x7a, 0xa8, 0xe1, 0xf0, 0x05, 0xeb, 0x79, 0x54, 0x8d, 0xb4, 0x08, + 0x64, 0x56, 0x7b, 0xc9, 0xb4, 0xd6, 0x14, 0x7a, 0x80, 0x5c, 0x6c, 0x68, 0x3a, 0xb1, 0x69, 0xb3, + 0x11, 0x49, 0x7c, 0xab, 0x8f, 0xc4, 0x13, 0xd3, 0xc5, 0x7c, 0xd9, 0xa2, 0x87, 0x6d, 0x03, 0xbb, + 0x0d, 0xd3, 0xf6, 0x14, 0xdd, 0x6d, 0x3b, 0x1e, 0x51, 0x1e, 0xe3, 0x76, 0x68, 0xe1, 0x59, 0x9d, + 0xd0, 0x06, 0xa1, 0x5a, 0x60, 0x64, 0xf0, 0x11, 0x4c, 0x49, 0x57, 0xc0, 0xc2, 0xfb, 0xbe, 0x3b, + 0xb7, 0xf9, 0xb6, 0xb7, 0xb0, 0x8d, 0xa9, 0x49, 0x55, 0x7c, 0xd8, 0xc4, 0xd4, 0x83, 0x67, 0xc1, + 0x74, 0xb0, 0xb7, 0x69, 0xcc, 0x0b, 0x4b, 0xc2, 0xf2, 0x8c, 0xfa, 0x12, 0xfb, 0xae, 0x19, 0xd2, + 0x53, 0xb0, 0x98, 0x2d, 0x49, 0x1d, 0x62, 0x53, 0x0c, 0x7f, 0x08, 0x4e, 0xd4, 0x83, 0x21, 0x8d, + 0x7a, 0xc8, 0xc3, 0x4c, 0x7e, 0x76, 0x7d, 0x55, 0xee, 0x75, 0x62, 0xad, 0x35, 0xb9, 0x03, 0xeb, + 0x9e, 0x2f, 0x57, 0x9d, 0xf8, 0xe2, 0x59, 0x65, 0x4c, 0x7d, 0xb9, 0x9e, 0x18, 0x93, 0x16, 0x81, + 0x98, 0xda, 0x7c, 0xdb, 0x87, 0x0b, 0xb5, 0x96, 0x50, 0x87, 0x51, 0xe1, 0x2c, 0xd7, 0xac, 0x0a, + 0xa6, 0xd8, 0xf6, 0x74, 0x5e, 0x58, 0x1a, 0x5f, 0x9e, 0x5d, 0x5f, 0x91, 0x73, 0x04, 0x91, 0xcc, + 0x40, 0x54, 0x2e, 0x29, 0x9d, 0x07, 0xdf, 0xe9, 0xde, 0xe2, 0x9e, 0x87, 0x5c, 0x6f, 0xd7, 0x25, + 0x0e, 0xa1, 0xc8, 0x8a, 0xb4, 0xf9, 0x44, 0x00, 0xcb, 0x83, 0xd7, 0x72, 0xdd, 0x7e, 0x04, 0x66, + 0x9c, 0x70, 0x90, 0x7b, 0xec, 0xed, 0x7c, 0xea, 0x71, 0xf0, 0x2d, 0xc3, 0x30, 0xfd, 0xe8, 0x8e, + 0xa1, 0x63, 0x40, 0x69, 0x19, 0x7c, 0x3b, 0x4b, 0x13, 0xe2, 0x74, 0x29, 0xfd, 0x53, 0x21, 0xdb, + 0xc0, 0xd4, 0xd2, 0xe8, 0xa4, 0xbb, 0x74, 0xde, 0x28, 0xa4, 0xb3, 0x8a, 0x1b, 0xa4, 0x85, 0xac, + 0x4c, 0x95, 0x7f, 0x53, 0x02, 0x93, 0x6c, 0xef, 0x3e, 0xb1, 0x08, 0x17, 0xc0, 0x8c, 0x6e, 0x99, + 0xd8, 0xf6, 0xfc, 0xb9, 0x12, 0x9b, 0x9b, 0x0e, 0x06, 0x6a, 0x06, 0x3c, 0x03, 0x26, 0x3d, 0xe2, + 0x68, 0xef, 0xcd, 0x8f, 0x2f, 0x09, 0xcb, 0x27, 0xd4, 0x09, 0x8f, 0x38, 0xef, 0xc1, 0x15, 0x00, + 0x1b, 0xa6, 0xad, 0x39, 0xe4, 0x09, 0x76, 0x35, 0xd3, 0xd6, 0x82, 0x15, 0x13, 0x4b, 0xc2, 0xf2, + 0xb8, 0x7a, 0xb2, 0x61, 0xda, 0xbb, 0xfe, 0x44, 0xcd, 0xde, 0xf3, 0xd7, 0xae, 0x82, 0xb9, 0x16, + 0xb2, 0x4c, 0x03, 0x79, 0xc4, 0xa5, 0x5c, 0x44, 0x47, 0xce, 0xfc, 0x24, 0xc3, 0x83, 0xf1, 0x1c, + 0x13, 0xda, 0x46, 0x0e, 0x5c, 0x01, 0xaf, 0x44, 0xa3, 0x1a, 0xc5, 0x1e, 0x5b, 0x3e, 0xc5, 0x96, + 0x9f, 0x8a, 0x26, 0xee, 0x61, 0xcf, 0x5f, 0xbb, 0x08, 0x66, 0x90, 0x65, 0x91, 0x27, 0x96, 0x49, + 0xbd, 0xf9, 0x97, 0x96, 0xc6, 0x97, 0x67, 0xd4, 0x78, 0x00, 0x8a, 0x60, 0xda, 0xc0, 0x76, 0x9b, + 0x4d, 0x4e, 0xb3, 0xc9, 0xe8, 0x5b, 0xfa, 0x99, 0x00, 0xde, 0x60, 0x67, 0xb4, 0x1f, 0x42, 0x26, + 0x82, 0xc0, 0x1d, 0x9c, 0xc2, 0x70, 0x03, 0x9c, 0x0e, 0x8f, 0x43, 0x43, 0x86, 0xe1, 0x62, 0x4a, + 0x03, 0xef, 0x55, 0xe1, 0x8b, 0x67, 0x95, 0x93, 0x6d, 0xd4, 0xb0, 0xae, 0x4a, 0x7c, 0x42, 0x52, + 0x4f, 0x85, 0x6b, 0xb7, 0x82, 0x91, 0xab, 0xd3, 0x9f, 0x7c, 0x56, 0x19, 0xfb, 0xc7, 0x67, 0x95, + 0x31, 0xe9, 0x2e, 0x90, 0xfa, 0x29, 0xc2, 0xe3, 0xe4, 0x3c, 0x38, 0x1d, 0x56, 0xb7, 0x68, 0xbb, + 0x40, 0xa3, 0x53, 0x7a, 0x62, 0xbd, 0xbf, 0x59, 0xb7, 0x69, 0xbb, 0x89, 0xcd, 0xf3, 0x99, 0xd6, + 0xb5, 0x57, 0x1f, 0xd3, 0x3a, 0xf6, 0xef, 0x67, 0x5a, 0x5a, 0x91, 0xd8, 0xb4, 0x2e, 0x4f, 0x72, + 0xd3, 0x3a, 0xbc, 0x26, 0x2d, 0x80, 0xb3, 0x0c, 0x70, 0xef, 0xc0, 0x25, 0x9e, 0x67, 0x61, 0x56, + 0xd0, 0xc2, 0xb4, 0xfb, 0x93, 0xc0, 0x0b, 0x5b, 0xc7, 0x2c, 0xdf, 0xa6, 0x02, 0x66, 0xa9, 0x85, + 0xe8, 0x81, 0xd6, 0xc0, 0x1e, 0x76, 0xd9, 0x0e, 0xe3, 0x2a, 0x60, 0x43, 0xef, 0xfa, 0x23, 0x70, + 0x1d, 0x7c, 0x23, 0xb1, 0x40, 0x63, 0x71, 0x84, 0x6c, 0x1d, 0x33, 0xdb, 0xc7, 0xd5, 0x33, 0xf1, + 0xd2, 0xad, 0x70, 0x0a, 0xfe, 0x18, 0xcc, 0xdb, 0xf8, 0x43, 0x4f, 0x73, 0xb1, 0x63, 0x61, 0xdb, + 0xa4, 0x07, 0x9a, 0x8e, 0x6c, 0xc3, 0x37, 0x16, 0xb3, 0x94, 0x99, 0x5d, 0x17, 0xe5, 0xe0, 0x32, + 0x94, 0xc3, 0xcb, 0x50, 0xde, 0x0b, 0x2f, 0xc3, 0xea, 0xb4, 0x5f, 0x9d, 0x3f, 0xfd, 0x6b, 0x45, + 0x50, 0x5f, 0xf5, 0x51, 0xd4, 0x10, 0x64, 0x3b, 0xc4, 0x90, 0x2e, 0x82, 0x15, 0x66, 0x92, 0x8a, + 0xeb, 0x26, 0xf5, 0xb0, 0x8b, 0x8d, 0x38, 0xef, 0x9f, 0x20, 0xd7, 0xd8, 0xc1, 0x36, 0x69, 0x44, + 0x85, 0xe7, 0x06, 0xb8, 0x90, 0x6b, 0x35, 0xf7, 0xc8, 0xab, 0x60, 0xca, 0x60, 0x23, 0xac, 0x96, + 0xcf, 0xa8, 0xfc, 0x4b, 0x2a, 0xf3, 0xdb, 0x29, 0xa8, 0x29, 0xd8, 0x60, 0x25, 0xa4, 0xb6, 0x13, + 0x6d, 0xf3, 0xb1, 0x00, 0x5e, 0xef, 0xb1, 0x80, 0x23, 0x3f, 0x04, 0x27, 0x9d, 0xe4, 0x5c, 0x78, + 0x5b, 0xac, 0xe7, 0x2a, 0x6d, 0x29, 0x58, 0x7e, 0x85, 0x75, 0xe0, 0x49, 0x35, 0x70, 0x22, 0xb5, + 0x0c, 0xce, 0x03, 0x1e, 0xbf, 0x3b, 0xe9, 0x70, 0xde, 0x81, 0x65, 0x00, 0xc2, 0x92, 0x58, 0xdb, + 0x61, 0x87, 0x39, 0xa1, 0x26, 0x46, 0xa4, 0x3b, 0x40, 0x61, 0xd6, 0x6c, 0x59, 0xd6, 0x2e, 0x32, + 0x5d, 0xba, 0x8f, 0xac, 0x6d, 0x62, 0xfb, 0x21, 0x57, 0x4d, 0x57, 0xf0, 0xda, 0x4e, 0x8e, 0xab, + 0xfd, 0xb7, 0x02, 0x58, 0xcd, 0x0f, 0xc7, 0xfd, 0x75, 0x08, 0x5e, 0x71, 0x90, 0xe9, 0x6a, 0x2d, + 0x64, 0xf9, 0x4d, 0x0c, 0x4b, 0x03, 0xee, 0xb2, 0x9b, 0xf9, 0x5c, 0x86, 0x4c, 0x37, 0xde, 0x28, + 0x4a, 0x33, 0x3b, 0x0e, 0x80, 0x93, 0x4e, 0x6a, 0x89, 0xf4, 0x1f, 0x01, 0xbc, 0x31, 0x50, 0x0a, + 0xde, 0xec, 0x95, 0x9b, 0xd5, 0x85, 0x17, 0xcf, 0x2a, 0xaf, 0x05, 0xa5, 0xa0, 0x73, 0x45, 0x77, + 0xb9, 0xf3, 0x71, 0x7a, 0x94, 0x94, 0x04, 0x4e, 0xe7, 0x8a, 0xee, 0xda, 0x02, 0x37, 0xc1, 0xcb, + 0xd1, 0xaa, 0xc7, 0xb8, 0xcd, 0x73, 0x6c, 0x51, 0x8e, 0x5b, 0x38, 0x39, 0x68, 0xe1, 0xe4, 0xdd, + 0xe6, 0x23, 0xcb, 0xd4, 0x6f, 0xe3, 0xb6, 0x3a, 0x1b, 0x4a, 0xdc, 0xc6, 0x6d, 0x69, 0x0e, 0xc0, + 0x20, 0x74, 0x91, 0x8b, 0xe2, 0xc4, 0x79, 0x08, 0xce, 0xa4, 0x46, 0xf9, 0xb1, 0xd4, 0xc0, 0x94, + 0xc3, 0x46, 0xf8, 0xcd, 0x7c, 0x21, 0xe7, 0x59, 0xf8, 0x22, 0x3c, 0x6e, 0x39, 0x80, 0x74, 0x8b, + 0x27, 0x72, 0x2a, 0x02, 0xee, 0x3a, 0x1e, 0x36, 0x6a, 0x76, 0x54, 0x1e, 0xf3, 0xb4, 0x8e, 0x87, + 0x3c, 0xc7, 0x07, 0x01, 0x45, 0xfd, 0xda, 0xeb, 0xc9, 0xfb, 0xb7, 0xe3, 0xa4, 0x70, 0x98, 0xfa, + 0x0b, 0x89, 0x8b, 0x38, 0x7d, 0x74, 0x98, 0x4a, 0xd7, 0x40, 0x39, 0xb5, 0x65, 0x21, 0x7d, 0x3f, + 0x17, 0xc0, 0x52, 0x0f, 0xe9, 0xe8, 0x57, 0xe6, 0x65, 0x2a, 0xe4, 0xbe, 0x4c, 0xbb, 0xa2, 0xa2, + 0x54, 0x30, 0x2a, 0xe0, 0x1c, 0x98, 0x64, 0xad, 0x09, 0x8b, 0xa7, 0x71, 0x35, 0xf8, 0xf0, 0x9b, + 0xcf, 0x4a, 0x4f, 0xc3, 0xb9, 0x7f, 0x31, 0x00, 0xb1, 0xeb, 0x78, 0xca, 0xde, 0xc8, 0x15, 0x26, + 0x83, 0x9c, 0xa2, 0x26, 0x80, 0xa5, 0x43, 0x5e, 0x54, 0xd2, 0x5d, 0x79, 0xb4, 0xf6, 0x1d, 0x44, + 0xf7, 0x08, 0xff, 0x0a, 0xef, 0xc3, 0x11, 0x9d, 0x2a, 0x21, 0xb0, 0x56, 0x60, 0x4b, 0xee, 0x8e, + 0x8b, 0x00, 0x46, 0x27, 0x11, 0x46, 0x44, 0x18, 0x63, 0x51, 0x05, 0x08, 0xaa, 0x9f, 0xc1, 0x3a, + 0x95, 0x0b, 0xd9, 0xbd, 0xcf, 0x36, 0x69, 0x34, 0x4c, 0x4a, 0x4d, 0x62, 0xab, 0x09, 0x8b, 0xbe, + 0xb6, 0x76, 0x4c, 0xaa, 0x83, 0x8b, 0xf9, 0x14, 0xe1, 0x76, 0xbe, 0x09, 0x26, 0xdc, 0x90, 0x97, + 0xcd, 0x54, 0xcf, 0xf9, 0xa9, 0xfe, 0x97, 0x67, 0x95, 0x85, 0x80, 0x1e, 0x52, 0xe3, 0xb1, 0x6c, + 0x12, 0xa5, 0x81, 0xbc, 0x03, 0xf9, 0x0e, 0xae, 0x23, 0xbd, 0xbd, 0x83, 0x75, 0x95, 0x09, 0x48, + 0x1b, 0x3c, 0x1b, 0xee, 0x5a, 0x06, 0xa6, 0xde, 0x7d, 0x5b, 0x27, 0xf6, 0x07, 0xa6, 0xdb, 0xc0, + 0xc6, 0x3e, 0xd5, 0x73, 0x64, 0xd3, 0xcf, 0xc3, 0xde, 0x2e, 0x5b, 0x9e, 0x6b, 0x67, 0x02, 0xd8, + 0xa2, 0xba, 0x46, 0xb1, 0x6d, 0x68, 0x11, 0xf5, 0xe6, 0x35, 0xec, 0x72, 0xae, 0xe0, 0xdc, 0xa7, + 0xfa, 0x3d, 0x6c, 0x1b, 0x71, 0xab, 0x12, 0x54, 0xb3, 0xd3, 0xad, 0x8e, 0xf1, 0xf5, 0xcf, 0x2b, + 0x60, 0x92, 0x29, 0x04, 0x8f, 0x04, 0x30, 0x97, 0x45, 0x6a, 0xe1, 0xf5, 0xe2, 0xe9, 0x90, 0x66, + 0xd2, 0xe2, 0xd6, 0x08, 0x08, 0x81, 0x4b, 0xa4, 0x1b, 0x3f, 0xf9, 0xea, 0xef, 0xbf, 0x2c, 0x6d, + 0xc2, 0x8d, 0xc1, 0xaf, 0x24, 0x51, 0x00, 0x73, 0xd6, 0xac, 0x3c, 0x0d, 0x4f, 0xe3, 0x23, 0xf8, + 0x95, 0xc0, 0x6f, 0x8a, 0x74, 0x56, 0xc0, 0xcd, 0xe2, 0x1a, 0xa6, 0x68, 0xb7, 0x78, 0x7d, 0x78, + 0x00, 0x6e, 0xe1, 0x5b, 0xcc, 0xc2, 0x4b, 0x70, 0xad, 0x80, 0x85, 0x01, 0x21, 0x87, 0x1f, 0x97, + 0xc0, 0x7c, 0x0f, 0x96, 0x4d, 0xe1, 0x9d, 0x21, 0x35, 0xcb, 0x24, 0xf4, 0xe2, 0xbb, 0xc7, 0x84, + 0xc6, 0x8d, 0x7e, 0x87, 0x19, 0x5d, 0x85, 0xd7, 0x8b, 0x1a, 0xad, 0x51, 0x1f, 0x50, 0x8b, 0xb8, + 0x32, 0xfc, 0x9f, 0x00, 0x5e, 0xcb, 0x26, 0xed, 0x14, 0xde, 0x1e, 0x5a, 0xe9, 0xee, 0xd7, 0x01, + 0xf1, 0xce, 0xf1, 0x80, 0x71, 0x07, 0xdc, 0x62, 0x0e, 0xd8, 0x82, 0x9b, 0x43, 0x38, 0x80, 0x38, + 0x09, 0xfb, 0xff, 0x1d, 0xb2, 0xa7, 0x4c, 0x1e, 0x0a, 0x6f, 0xe6, 0xd7, 0xba, 0x1f, 0xa3, 0x16, + 0x6f, 0x8d, 0x8c, 0xc3, 0x0d, 0xdf, 0x62, 0x86, 0x5f, 0x83, 0x6f, 0xe5, 0x78, 0xf6, 0x8c, 0x9e, + 0x13, 0x52, 0x1d, 0x66, 0x86, 0xc9, 0xc9, 0xde, 0x67, 0x28, 0x93, 0x33, 0x98, 0xf6, 0x50, 0x26, + 0x67, 0x11, 0xe5, 0xe1, 0x4c, 0x4e, 0xdd, 0x8a, 0xf0, 0x8f, 0x02, 0xef, 0x7f, 0x53, 0x1c, 0x19, + 0xbe, 0x9d, 0x5f, 0xc5, 0x2c, 0xea, 0x2d, 0x6e, 0x0e, 0x2d, 0xcf, 0x4d, 0xbb, 0xc2, 0x4c, 0x5b, + 0x87, 0xab, 0x83, 0x4d, 0xf3, 0x38, 0x40, 0xf0, 0x32, 0x0a, 0x7f, 0x5d, 0x02, 0xe7, 0x72, 0x90, + 0x5e, 0x78, 0x37, 0xbf, 0x8a, 0xb9, 0xc8, 0xb6, 0xb8, 0x7b, 0x7c, 0x80, 0xdc, 0x09, 0xb7, 0x99, + 0x13, 0x6e, 0xc0, 0xed, 0xc1, 0x4e, 0x70, 0x23, 0xc4, 0x38, 0xa6, 0x5d, 0x86, 0xa9, 0x05, 0x24, + 0x1e, 0xfe, 0xb3, 0x8b, 0xa4, 0xa7, 0xb9, 0x27, 0x85, 0x05, 0x6e, 0xd5, 0x1e, 0x2f, 0x01, 0x62, + 0x75, 0x14, 0x08, 0x6e, 0x75, 0x95, 0x59, 0xfd, 0x3d, 0x78, 0x75, 0xb0, 0xd5, 0xe1, 0x1b, 0x80, + 0xd6, 0x79, 0x81, 0xfd, 0xaa, 0xc4, 0x9f, 0x89, 0x73, 0x90, 0x6e, 0xb8, 0x97, 0x5f, 0xe9, 0xfc, + 0x4f, 0x02, 0xe2, 0xfd, 0x63, 0x46, 0xe5, 0xde, 0xb9, 0xc6, 0xbc, 0x73, 0x19, 0x5e, 0x2a, 0x5c, + 0xdf, 0x4d, 0x03, 0xfe, 0x5e, 0x00, 0xb3, 0x09, 0x5e, 0x0b, 0xdf, 0x2c, 0x70, 0x5c, 0x49, 0x7e, + 0x2c, 0x5e, 0x29, 0x2e, 0xc8, 0xf5, 0x5f, 0x65, 0xfa, 0xaf, 0xc0, 0xe5, 0x1c, 0xa7, 0x1b, 0x28, + 0xf9, 0x8b, 0x30, 0xa1, 0xfb, 0x33, 0xdc, 0x22, 0x09, 0x9d, 0x8b, 0x74, 0x17, 0x49, 0xe8, 0x7c, + 0xe4, 0xbb, 0x48, 0x77, 0x42, 0x7c, 0x10, 0xcd, 0xb4, 0xb5, 0x98, 0xf4, 0x25, 0xfb, 0xce, 0x3f, + 0x94, 0xc0, 0xf9, 0xdc, 0x6c, 0x0c, 0xde, 0x1f, 0xb6, 0x99, 0xec, 0x4b, 0x28, 0xc5, 0xfd, 0xe3, + 0x86, 0xe5, 0x6e, 0x7a, 0xc0, 0xdc, 0xb4, 0x07, 0xd5, 0xc2, 0x9d, 0xab, 0xe6, 0x60, 0x37, 0xf6, + 0x98, 0xf2, 0xb4, 0x93, 0x02, 0x7e, 0x04, 0x7f, 0x57, 0x02, 0xdf, 0xcc, 0xc3, 0xec, 0xe0, 0xee, + 0x08, 0x8d, 0x49, 0x26, 0x5b, 0x15, 0xdf, 0x3f, 0x46, 0x44, 0xee, 0xa9, 0x87, 0xcc, 0x53, 0x0f, + 0xe0, 0x0f, 0x8a, 0x78, 0x2a, 0x82, 0xd2, 0x7c, 0x06, 0x9a, 0x88, 0xaa, 0x2c, 0x7f, 0xfd, 0x57, + 0xe0, 0x4f, 0xec, 0x59, 0x04, 0x13, 0x16, 0x78, 0xd9, 0xe8, 0x43, 0x70, 0xc5, 0x9b, 0xa3, 0xc2, + 0x14, 0xbf, 0x30, 0x09, 0xc3, 0xd1, 0x9a, 0x31, 0x90, 0xd6, 0xa2, 0x7a, 0x32, 0xc5, 0xfe, 0xd5, + 0x49, 0x00, 0x12, 0xb5, 0x66, 0x7b, 0x94, 0x17, 0x9d, 0xd0, 0xea, 0x9d, 0xd1, 0x40, 0x46, 0x60, + 0x3c, 0x99, 0x35, 0xa5, 0xfa, 0xfd, 0x2f, 0x8e, 0xca, 0xc2, 0x97, 0x47, 0x65, 0xe1, 0x6f, 0x47, + 0x65, 0xe1, 0xd3, 0xe7, 0xe5, 0xb1, 0x2f, 0x9f, 0x97, 0xc7, 0xfe, 0xfc, 0xbc, 0x3c, 0xf6, 0x60, + 0xa3, 0x6e, 0x7a, 0x07, 0xcd, 0x47, 0xb2, 0x4e, 0x1a, 0xfc, 0x1f, 0xef, 0xc4, 0x66, 0xdf, 0x8d, + 0x36, 0x6b, 0x5d, 0x56, 0x3e, 0xec, 0xe8, 0xcd, 0xda, 0x0e, 0xa6, 0x8f, 0xa6, 0xd8, 0x5f, 0x1d, + 0x97, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xb7, 0x4e, 0xa1, 0x75, 0x91, 0x20, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ccv/provider/types/tx.pb.go b/x/ccv/provider/types/tx.pb.go index debc79ba02..be71e8fa18 100644 --- a/x/ccv/provider/types/tx.pb.go +++ b/x/ccv/provider/types/tx.pb.go @@ -1295,113 +1295,113 @@ func init() { } var fileDescriptor_43221a4391e9fbf4 = []byte{ - // 1689 bytes of a gzipped FileDescriptorProto + // 1687 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcf, 0x6f, 0xe4, 0x48, - 0x15, 0x8e, 0xf3, 0x6b, 0xba, 0xab, 0xf3, 0xd3, 0x93, 0x90, 0x8e, 0x37, 0xdb, 0x9d, 0x34, 0xcb, - 0x6e, 0x34, 0x6c, 0xec, 0x9d, 0xc0, 0xce, 0x42, 0xb4, 0x08, 0x92, 0xf4, 0xc2, 0x64, 0x20, 0x93, + 0x15, 0x8e, 0xf3, 0x6b, 0xba, 0xab, 0xf3, 0xd3, 0x93, 0x21, 0x1d, 0x6f, 0xb6, 0x3b, 0x69, 0x96, + 0xdd, 0x68, 0xd8, 0xd8, 0x9b, 0xc0, 0xee, 0x42, 0xb4, 0x08, 0x92, 0xf4, 0xc0, 0x64, 0x21, 0x93, 0xe0, 0x09, 0x8b, 0x04, 0x12, 0x56, 0xb5, 0x5d, 0x71, 0x97, 0xc6, 0x76, 0x59, 0x55, 0xd5, 0x9d, - 0xed, 0x1b, 0xda, 0x13, 0x12, 0x02, 0x2d, 0x37, 0xc4, 0x69, 0x0f, 0x08, 0x81, 0x04, 0xd2, 0x1c, - 0xf6, 0xc4, 0x8d, 0xdb, 0x1c, 0x38, 0x2c, 0x2b, 0x0e, 0x88, 0xc3, 0x80, 0x66, 0x0e, 0xcb, 0x99, - 0xbf, 0x00, 0x55, 0xb9, 0xec, 0x76, 0x27, 0x9d, 0xde, 0xee, 0x0e, 0x1c, 0xb8, 0xb4, 0xda, 0xf5, - 0xbe, 0xf7, 0xd5, 0xf7, 0x3d, 0xbb, 0x5e, 0x95, 0x0d, 0x5e, 0xc7, 0x11, 0x47, 0xd4, 0x6d, 0x42, - 0x1c, 0x39, 0x0c, 0xb9, 0x2d, 0x8a, 0x79, 0xc7, 0x72, 0xdd, 0xb6, 0x15, 0x53, 0xd2, 0xc6, 0x1e, - 0xa2, 0x56, 0xfb, 0xae, 0xc5, 0xdf, 0x33, 0x63, 0x4a, 0x38, 0xd1, 0x3f, 0xdf, 0x07, 0x6d, 0xba, - 0x6e, 0xdb, 0x4c, 0xd1, 0x66, 0xfb, 0xae, 0xb1, 0x0c, 0x43, 0x1c, 0x11, 0x4b, 0xfe, 0x26, 0x79, - 0xc6, 0x86, 0x4f, 0x88, 0x1f, 0x20, 0x0b, 0xc6, 0xd8, 0x82, 0x51, 0x44, 0x38, 0xe4, 0x98, 0x44, - 0x4c, 0x45, 0xab, 0x2a, 0x2a, 0xaf, 0x1a, 0xad, 0x73, 0x8b, 0xe3, 0x10, 0x31, 0x0e, 0xc3, 0x58, - 0x01, 0x2a, 0x97, 0x01, 0x5e, 0x8b, 0x4a, 0x06, 0x15, 0x5f, 0xbf, 0x1c, 0x87, 0x51, 0x47, 0x85, - 0x56, 0x7c, 0xe2, 0x13, 0xf9, 0xd7, 0x12, 0xff, 0xd2, 0x04, 0x97, 0xb0, 0x90, 0x30, 0x27, 0x09, - 0x24, 0x17, 0x2a, 0xb4, 0x96, 0x5c, 0x59, 0x21, 0xf3, 0x85, 0xf5, 0x90, 0xf9, 0xa9, 0x4a, 0xdc, - 0x70, 0x2d, 0x97, 0x50, 0x64, 0xb9, 0x01, 0x46, 0x11, 0x17, 0xd1, 0xe4, 0x9f, 0x02, 0xec, 0x0e, - 0x53, 0xca, 0xac, 0x50, 0x49, 0x8e, 0x25, 0x48, 0x03, 0xec, 0x37, 0x79, 0x42, 0xc5, 0x2c, 0x8e, - 0x22, 0x0f, 0xd1, 0x10, 0x27, 0x13, 0x74, 0xaf, 0x52, 0x15, 0xb9, 0x38, 0xef, 0xc4, 0x88, 0x59, - 0x48, 0xf0, 0x45, 0x2e, 0x4a, 0x00, 0xb5, 0xbf, 0x6a, 0x60, 0xe5, 0x98, 0xf9, 0xfb, 0x8c, 0x61, - 0x3f, 0x3a, 0x24, 0x11, 0x6b, 0x85, 0x88, 0x7e, 0x1b, 0x75, 0xf4, 0x75, 0x50, 0x48, 0xb4, 0x61, - 0xaf, 0xac, 0x6d, 0x6a, 0xdb, 0x45, 0xfb, 0x96, 0xbc, 0x3e, 0xf2, 0xf4, 0xb7, 0xc0, 0x7c, 0xaa, - 0xcb, 0x81, 0x9e, 0x47, 0xcb, 0x93, 0x22, 0x7e, 0xa0, 0xff, 0xfb, 0x59, 0x75, 0xa1, 0x03, 0xc3, - 0x60, 0xaf, 0x26, 0x46, 0x11, 0x63, 0x35, 0x7b, 0x2e, 0x05, 0xee, 0x7b, 0x1e, 0xd5, 0xb7, 0xc0, - 0x9c, 0xab, 0xa6, 0x70, 0x1e, 0xa3, 0x4e, 0x79, 0x4a, 0xf2, 0x96, 0xdc, 0xdc, 0xb4, 0x6f, 0x80, - 0x59, 0xa1, 0x04, 0xd1, 0xf2, 0xb4, 0x24, 0x2d, 0x7f, 0xf2, 0xd1, 0xce, 0x8a, 0xaa, 0xf8, 0x7e, - 0xc2, 0xfa, 0x88, 0x53, 0x1c, 0xf9, 0xb6, 0xc2, 0xed, 0xdd, 0xfe, 0xc9, 0x87, 0xd5, 0x89, 0x7f, - 0x7d, 0x58, 0x9d, 0x78, 0xff, 0xd3, 0x27, 0x77, 0xd4, 0x60, 0xad, 0x02, 0x36, 0xfa, 0xb9, 0xb2, - 0x11, 0x8b, 0x49, 0xc4, 0x50, 0xed, 0x4f, 0x1a, 0x78, 0xf9, 0x98, 0xf9, 0x8f, 0x5a, 0x8d, 0x10, - 0xf3, 0x14, 0x70, 0x8c, 0x59, 0x03, 0x35, 0x61, 0x1b, 0x93, 0x16, 0xd5, 0xef, 0x81, 0x22, 0x93, - 0x51, 0x8e, 0x68, 0x52, 0x80, 0x01, 0x5a, 0xba, 0x50, 0xfd, 0x14, 0xcc, 0x85, 0x39, 0x1e, 0x59, - 0x9b, 0xd2, 0xee, 0xeb, 0x26, 0x6e, 0xb8, 0x66, 0xfe, 0xce, 0x99, 0xb9, 0x7b, 0xd5, 0xbe, 0x6b, - 0xe6, 0xe7, 0xb6, 0x7b, 0x18, 0xf6, 0x3e, 0x97, 0x37, 0xd8, 0x9d, 0xa9, 0xf6, 0x1a, 0xf8, 0xc2, - 0x40, 0x0b, 0x99, 0xd9, 0x27, 0x93, 0x7d, 0xcc, 0xd6, 0x49, 0xab, 0x11, 0xa0, 0x77, 0x09, 0xc7, - 0x91, 0x3f, 0xb6, 0x59, 0x07, 0xac, 0x79, 0xad, 0x38, 0xc0, 0x2e, 0xe4, 0xc8, 0x69, 0x13, 0x8e, - 0x9c, 0xf4, 0xf1, 0x52, 0xbe, 0x5f, 0xcb, 0xdb, 0x94, 0x0f, 0xa0, 0x59, 0x4f, 0x13, 0xde, 0x25, - 0x1c, 0xbd, 0xa3, 0xe0, 0xf6, 0xaa, 0xd7, 0x6f, 0x58, 0xff, 0x11, 0x58, 0xc3, 0xd1, 0x39, 0x85, - 0xae, 0x58, 0xbe, 0x4e, 0x23, 0x20, 0xee, 0x63, 0xa7, 0x89, 0xa0, 0x87, 0xa8, 0x7c, 0x78, 0x4a, - 0xbb, 0xaf, 0x7e, 0x56, 0x61, 0xef, 0x4b, 0xb4, 0xbd, 0xda, 0xa5, 0x39, 0x10, 0x2c, 0xc9, 0xf0, - 0x48, 0xb5, 0xcd, 0x57, 0x2c, 0xab, 0xed, 0xaf, 0x35, 0xb0, 0x78, 0xcc, 0xfc, 0xef, 0xc5, 0x1e, - 0xe4, 0xe8, 0x14, 0x52, 0x18, 0x32, 0x51, 0x4d, 0xd8, 0xe2, 0x4d, 0x22, 0x56, 0xf4, 0x67, 0x57, - 0x33, 0x83, 0xea, 0x47, 0x60, 0x36, 0x96, 0x0c, 0xaa, 0x78, 0x5f, 0x34, 0x87, 0xe8, 0x9f, 0x66, - 0x32, 0xe9, 0xc1, 0xf4, 0xd3, 0x67, 0xd5, 0x09, 0x5b, 0x11, 0xec, 0x2d, 0x48, 0x3f, 0x19, 0x75, - 0x6d, 0x1d, 0xac, 0x5d, 0x52, 0x99, 0x39, 0xf8, 0x59, 0x01, 0xdc, 0x3e, 0x66, 0x7e, 0xea, 0x72, - 0xdf, 0xf3, 0xb0, 0xa8, 0xd2, 0xa0, 0x06, 0xf0, 0x2d, 0xb0, 0x80, 0x23, 0xcc, 0x31, 0x0c, 0x9c, - 0x26, 0x12, 0xa5, 0x57, 0x82, 0x0d, 0x79, 0x33, 0x44, 0xd3, 0x33, 0x55, 0xab, 0x93, 0x37, 0x40, - 0x20, 0x94, 0xbe, 0x79, 0x95, 0x97, 0x0c, 0x8a, 0x86, 0xe0, 0xa3, 0x08, 0x31, 0xcc, 0x9c, 0x26, - 0x64, 0x4d, 0x79, 0x4f, 0xe7, 0xec, 0x92, 0x1a, 0xbb, 0x0f, 0x59, 0x53, 0xaf, 0x82, 0x52, 0x03, - 0x47, 0x90, 0x76, 0x12, 0xc4, 0xb4, 0x44, 0x80, 0x64, 0x48, 0x02, 0x0e, 0x01, 0x60, 0x31, 0xbc, - 0x88, 0x1c, 0xb1, 0x0d, 0x94, 0x67, 0x94, 0x90, 0xa4, 0xc5, 0x9b, 0x69, 0x8b, 0x37, 0xcf, 0xd2, - 0x3d, 0xe2, 0xa0, 0x20, 0x84, 0x7c, 0xf0, 0x8f, 0xaa, 0x66, 0x17, 0x65, 0x9e, 0x88, 0xe8, 0x0f, - 0xc1, 0x52, 0x2b, 0x6a, 0x90, 0xc8, 0xc3, 0x91, 0xef, 0xc4, 0x88, 0x62, 0xe2, 0x95, 0x67, 0x25, - 0xd5, 0xfa, 0x15, 0xaa, 0xba, 0xda, 0x4d, 0x12, 0xa6, 0x5f, 0x0a, 0xa6, 0xc5, 0x2c, 0xf9, 0x54, - 0xe6, 0xea, 0xdf, 0x05, 0xba, 0xeb, 0xb6, 0xa5, 0x24, 0xd2, 0xe2, 0x29, 0xe3, 0xad, 0xe1, 0x19, - 0x97, 0x5c, 0xb7, 0x7d, 0x96, 0x64, 0x2b, 0xca, 0x1f, 0x82, 0x35, 0x4e, 0x61, 0xc4, 0xce, 0x11, - 0xbd, 0xcc, 0x5b, 0x18, 0x9e, 0x77, 0x35, 0xe5, 0xe8, 0x25, 0xbf, 0x0f, 0x36, 0xb3, 0xce, 0x4c, - 0x91, 0x87, 0x19, 0xa7, 0xb8, 0xd1, 0x92, 0x8b, 0x2e, 0x5d, 0x36, 0xe5, 0xa2, 0x7c, 0x08, 0x2a, - 0x29, 0xce, 0xee, 0x81, 0x7d, 0x53, 0xa1, 0xf4, 0x13, 0xf0, 0x8a, 0x5c, 0xa6, 0x4c, 0x88, 0x73, - 0x7a, 0x98, 0xe4, 0xd4, 0x21, 0x66, 0x4c, 0xb0, 0x81, 0x4d, 0x6d, 0x7b, 0xca, 0xde, 0x4a, 0xb0, - 0xa7, 0x88, 0xd6, 0x73, 0xc8, 0xb3, 0x1c, 0x50, 0xdf, 0x01, 0x7a, 0x13, 0x33, 0x4e, 0x28, 0x76, - 0x61, 0xe0, 0xa0, 0x88, 0x53, 0x8c, 0x58, 0xb9, 0x24, 0xd3, 0x97, 0xbb, 0x91, 0x77, 0x92, 0x80, - 0xfe, 0x00, 0x6c, 0x5d, 0x3b, 0xa9, 0xe3, 0x36, 0x61, 0x14, 0xa1, 0xa0, 0x3c, 0x27, 0xad, 0x54, - 0xbd, 0x6b, 0xe6, 0x3c, 0x4c, 0x60, 0xfa, 0x6d, 0x30, 0xc3, 0x49, 0xec, 0x3c, 0x2c, 0xcf, 0x6f, - 0x6a, 0xdb, 0xf3, 0xf6, 0x34, 0x27, 0xf1, 0x43, 0xfd, 0x0d, 0xb0, 0xd2, 0x86, 0x01, 0xf6, 0x20, - 0x27, 0x94, 0x39, 0x31, 0xb9, 0x40, 0xd4, 0x71, 0x61, 0x5c, 0x5e, 0x90, 0x18, 0xbd, 0x1b, 0x3b, - 0x15, 0xa1, 0x43, 0x18, 0xeb, 0x77, 0xc0, 0x72, 0x36, 0xea, 0x30, 0xc4, 0x25, 0x7c, 0x51, 0xc2, - 0x17, 0xb3, 0xc0, 0x23, 0xc4, 0x05, 0x76, 0x03, 0x14, 0x61, 0x10, 0x90, 0x8b, 0x00, 0x33, 0x5e, - 0x5e, 0xda, 0x9c, 0xda, 0x2e, 0xda, 0xdd, 0x01, 0xdd, 0x00, 0x05, 0x0f, 0x45, 0x1d, 0x19, 0x5c, - 0x96, 0xc1, 0xec, 0xba, 0xb7, 0xeb, 0xe8, 0x43, 0x77, 0x9d, 0x2b, 0xad, 0xe2, 0x65, 0xf0, 0x52, - 0x9f, 0x76, 0x90, 0xb5, 0x8b, 0x3f, 0x6a, 0x40, 0xcf, 0xc5, 0x6d, 0x14, 0x92, 0x36, 0x0c, 0x06, - 0x75, 0x8b, 0x7d, 0x50, 0x64, 0xa2, 0x8c, 0x72, 0x7d, 0x4e, 0x8e, 0xb0, 0x3e, 0x0b, 0x22, 0x4d, - 0x2e, 0xcf, 0x1e, 0x6f, 0x53, 0xe3, 0x7b, 0xdb, 0x00, 0xc6, 0x55, 0xed, 0x99, 0xb5, 0x3f, 0x68, - 0x60, 0x55, 0x84, 0x9b, 0x30, 0xf2, 0x91, 0x8d, 0x2e, 0x20, 0xf5, 0xea, 0x28, 0x22, 0x21, 0xd3, - 0x6b, 0x60, 0xde, 0x93, 0xff, 0x1c, 0x4e, 0xc4, 0x91, 0xa7, 0xac, 0xc9, 0xe2, 0x97, 0x92, 0xc1, - 0x33, 0xb2, 0xef, 0x79, 0xfa, 0x36, 0x58, 0xea, 0x62, 0xa8, 0xa0, 0x16, 0x6e, 0x05, 0x6c, 0x21, - 0x85, 0xc9, 0x09, 0xff, 0x7b, 0x6e, 0xaa, 0x72, 0x5b, 0xbf, 0x2a, 0x37, 0x33, 0xf4, 0x54, 0x03, - 0x85, 0x63, 0xe6, 0x9f, 0xc4, 0xfc, 0x28, 0xfa, 0x3f, 0x3f, 0xd0, 0xe9, 0x60, 0x29, 0x75, 0x92, - 0xd9, 0xfb, 0x8d, 0x06, 0x8a, 0xc9, 0xe0, 0x49, 0x8b, 0xff, 0x4f, 0xfc, 0x75, 0xc5, 0x4f, 0xdd, - 0x44, 0xfc, 0x6d, 0xb0, 0x9c, 0xe9, 0xcc, 0xdf, 0x1c, 0x71, 0x46, 0x15, 0xeb, 0x5e, 0x95, 0xeb, - 0x90, 0x84, 0xaa, 0x01, 0xd9, 0x90, 0xa3, 0xab, 0xaa, 0xb5, 0x21, 0x55, 0xe7, 0x2b, 0x31, 0xd9, - 0x5b, 0x89, 0x07, 0x60, 0x9a, 0x42, 0x8e, 0x94, 0x9d, 0x7b, 0x62, 0xa9, 0xfd, 0xfd, 0x59, 0xf5, - 0xa5, 0xc4, 0x12, 0xf3, 0x1e, 0x9b, 0x98, 0x58, 0x21, 0xe4, 0x4d, 0xf3, 0x3b, 0xc8, 0x87, 0x6e, - 0xa7, 0x8e, 0xdc, 0x4f, 0x3e, 0xda, 0x01, 0xca, 0x71, 0x1d, 0xb9, 0xbf, 0xfd, 0xf4, 0xc9, 0x1d, - 0xcd, 0x96, 0x1c, 0x7b, 0x85, 0xd4, 0x6a, 0xed, 0x55, 0xf0, 0xca, 0x20, 0x27, 0x99, 0xe5, 0xbf, - 0x4c, 0xca, 0x63, 0x48, 0x76, 0x58, 0x25, 0x1e, 0x3e, 0x17, 0x67, 0x3e, 0xd1, 0xe6, 0x57, 0xc0, - 0x0c, 0xc7, 0x3c, 0x40, 0xea, 0xde, 0x25, 0x17, 0xfa, 0x26, 0x28, 0x79, 0x88, 0xb9, 0x14, 0xc7, - 0x72, 0x0b, 0x4a, 0xdc, 0xe4, 0x87, 0x7a, 0xcc, 0x4e, 0xf5, 0x9a, 0xcd, 0xda, 0xf7, 0xf4, 0x10, - 0xed, 0x7b, 0x66, 0xb4, 0xf6, 0x3d, 0x3b, 0x44, 0xfb, 0xbe, 0x35, 0xa8, 0x7d, 0x17, 0x06, 0xb5, - 0xef, 0xe2, 0xd0, 0x4d, 0xa1, 0xb6, 0x05, 0xaa, 0xd7, 0x94, 0x34, 0x2d, 0xfb, 0xee, 0x9f, 0x4b, - 0x60, 0xea, 0x98, 0xf9, 0xfa, 0x2f, 0x34, 0xb0, 0x7c, 0xf5, 0x45, 0xef, 0xab, 0x43, 0x9d, 0x32, - 0xfb, 0xbd, 0x4d, 0x19, 0xfb, 0x63, 0xa7, 0xa6, 0xda, 0xf4, 0xdf, 0x6b, 0xc0, 0x18, 0xf0, 0x16, - 0x76, 0x30, 0xec, 0x0c, 0xd7, 0x73, 0x18, 0x0f, 0x6e, 0xce, 0x31, 0x40, 0x6e, 0xcf, 0x7b, 0xd4, - 0x98, 0x72, 0xf3, 0x1c, 0xe3, 0xca, 0xed, 0xf7, 0x76, 0xa2, 0xff, 0x5c, 0x03, 0x4b, 0x57, 0x0e, - 0xf6, 0x5f, 0x19, 0x76, 0x82, 0xcb, 0x99, 0xc6, 0x37, 0xc6, 0xcd, 0xcc, 0x04, 0xfd, 0x54, 0x03, - 0x8b, 0x97, 0x8f, 0x0e, 0x6f, 0x8d, 0xca, 0xaa, 0x12, 0x8d, 0xaf, 0x8f, 0x99, 0x98, 0xa9, 0x79, - 0x5f, 0x03, 0x73, 0x3d, 0x6f, 0x6e, 0x5f, 0x1e, 0x96, 0x31, 0x9f, 0x65, 0xbc, 0x3d, 0x4e, 0x56, - 0x26, 0x22, 0x04, 0x33, 0xc9, 0x06, 0xbd, 0x33, 0x2c, 0x8d, 0x84, 0x1b, 0x6f, 0x8e, 0x04, 0xcf, - 0xa6, 0x8b, 0xc1, 0xac, 0xda, 0x30, 0xcd, 0x11, 0x08, 0x4e, 0x5a, 0xdc, 0xb8, 0x37, 0x1a, 0x3e, - 0x9b, 0xf1, 0x77, 0x1a, 0x58, 0xbf, 0x7e, 0x97, 0x1b, 0xba, 0x87, 0x5c, 0x4b, 0x61, 0x1c, 0xdd, - 0x98, 0x22, 0xd3, 0xfa, 0x2b, 0x0d, 0xac, 0xf4, 0xdd, 0x9e, 0xde, 0x1e, 0xf5, 0x59, 0xcb, 0x67, - 0x1b, 0xf5, 0x9b, 0x64, 0xa7, 0xe2, 0x8c, 0x99, 0x1f, 0x8b, 0xdd, 0xf7, 0xe0, 0xfb, 0x4f, 0x9f, - 0x57, 0xb4, 0x8f, 0x9f, 0x57, 0xb4, 0x7f, 0x3e, 0xaf, 0x68, 0x1f, 0xbc, 0xa8, 0x4c, 0x7c, 0xfc, - 0xa2, 0x32, 0xf1, 0xb7, 0x17, 0x95, 0x89, 0x1f, 0x7c, 0xcd, 0xc7, 0xbc, 0xd9, 0x6a, 0x98, 0x2e, - 0x09, 0xd5, 0x57, 0x4a, 0xab, 0x3b, 0xef, 0x4e, 0xf6, 0x91, 0xb1, 0xfd, 0xa6, 0xf5, 0x5e, 0xef, - 0x97, 0x46, 0xf9, 0x65, 0xa6, 0x31, 0x2b, 0x4f, 0xe3, 0x5f, 0xfa, 0x4f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xcb, 0x72, 0xac, 0x84, 0xe5, 0x15, 0x00, 0x00, + 0xed, 0x1b, 0xda, 0x13, 0x12, 0x02, 0x2d, 0x37, 0xc4, 0x69, 0x0f, 0x08, 0x09, 0x09, 0xa4, 0x39, + 0xec, 0x89, 0x1b, 0xe2, 0x32, 0x07, 0x0e, 0xcb, 0x8a, 0x03, 0xe2, 0x30, 0xa0, 0x99, 0xc3, 0x72, + 0xe6, 0x2f, 0x40, 0x55, 0x2e, 0xbb, 0xdd, 0x49, 0xa7, 0xa7, 0xbb, 0x03, 0x07, 0x2e, 0xad, 0x76, + 0xbd, 0xef, 0x7d, 0xf5, 0x7d, 0xcf, 0xae, 0x57, 0x65, 0x83, 0xd7, 0x71, 0xc4, 0x11, 0x75, 0x9b, + 0x10, 0x47, 0x0e, 0x43, 0x6e, 0x8b, 0x62, 0xde, 0xb1, 0x5c, 0xb7, 0x6d, 0xc5, 0x94, 0xb4, 0xb1, + 0x87, 0xa8, 0xd5, 0xde, 0xb1, 0xf8, 0xfb, 0x66, 0x4c, 0x09, 0x27, 0xfa, 0xe7, 0xfb, 0xa0, 0x4d, + 0xd7, 0x6d, 0x9b, 0x29, 0xda, 0x6c, 0xef, 0x18, 0xcb, 0x30, 0xc4, 0x11, 0xb1, 0xe4, 0x6f, 0x92, + 0x67, 0xac, 0xfb, 0x84, 0xf8, 0x01, 0xb2, 0x60, 0x8c, 0x2d, 0x18, 0x45, 0x84, 0x43, 0x8e, 0x49, + 0xc4, 0x54, 0xb4, 0xaa, 0xa2, 0xf2, 0xaa, 0xd1, 0x3a, 0xb7, 0x38, 0x0e, 0x11, 0xe3, 0x30, 0x8c, + 0x15, 0xa0, 0x72, 0x19, 0xe0, 0xb5, 0xa8, 0x64, 0x50, 0xf1, 0xb5, 0xcb, 0x71, 0x18, 0x75, 0x54, + 0x68, 0xc5, 0x27, 0x3e, 0x91, 0x7f, 0x2d, 0xf1, 0x2f, 0x4d, 0x70, 0x09, 0x0b, 0x09, 0x73, 0x92, + 0x40, 0x72, 0xa1, 0x42, 0xab, 0xc9, 0x95, 0x15, 0x32, 0x5f, 0x58, 0x0f, 0x99, 0x9f, 0xaa, 0xc4, + 0x0d, 0xd7, 0x72, 0x09, 0x45, 0x96, 0x1b, 0x60, 0x14, 0x71, 0x11, 0x4d, 0xfe, 0x29, 0xc0, 0xee, + 0x30, 0xa5, 0xcc, 0x0a, 0x95, 0xe4, 0x58, 0x82, 0x34, 0xc0, 0x7e, 0x93, 0x27, 0x54, 0xcc, 0xe2, + 0x28, 0xf2, 0x10, 0x0d, 0x71, 0x32, 0x41, 0xf7, 0x2a, 0x55, 0x91, 0x8b, 0xf3, 0x4e, 0x8c, 0x98, + 0x85, 0x04, 0x5f, 0xe4, 0xa2, 0x04, 0x50, 0xfb, 0xab, 0x06, 0x56, 0x8e, 0x99, 0xbf, 0xcf, 0x18, + 0xf6, 0xa3, 0x43, 0x12, 0xb1, 0x56, 0x88, 0xe8, 0xb7, 0x51, 0x47, 0x5f, 0x03, 0x85, 0x44, 0x1b, + 0xf6, 0xca, 0xda, 0x86, 0xb6, 0x55, 0xb4, 0x6f, 0xc9, 0xeb, 0x23, 0x4f, 0x7f, 0x1b, 0xcc, 0xa7, + 0xba, 0x1c, 0xe8, 0x79, 0xb4, 0x3c, 0x29, 0xe2, 0x07, 0xfa, 0xbf, 0x9f, 0x56, 0x17, 0x3a, 0x30, + 0x0c, 0xf6, 0x6a, 0x62, 0x14, 0x31, 0x56, 0xb3, 0xe7, 0x52, 0xe0, 0xbe, 0xe7, 0x51, 0x7d, 0x13, + 0xcc, 0xb9, 0x6a, 0x0a, 0xe7, 0x11, 0xea, 0x94, 0xa7, 0x24, 0x6f, 0xc9, 0xcd, 0x4d, 0xfb, 0x06, + 0x98, 0x15, 0x4a, 0x10, 0x2d, 0x4f, 0x4b, 0xd2, 0xf2, 0xa7, 0x1f, 0x6f, 0xaf, 0xa8, 0x8a, 0xef, + 0x27, 0xac, 0x0f, 0x39, 0xc5, 0x91, 0x6f, 0x2b, 0xdc, 0xde, 0xed, 0x9f, 0x7c, 0x54, 0x9d, 0xf8, + 0xd7, 0x47, 0xd5, 0x89, 0x0f, 0x3e, 0x7b, 0x7c, 0x57, 0x0d, 0xd6, 0x2a, 0x60, 0xbd, 0x9f, 0x2b, + 0x1b, 0xb1, 0x98, 0x44, 0x0c, 0xd5, 0xfe, 0xa8, 0x81, 0x97, 0x8f, 0x99, 0xff, 0xb0, 0xd5, 0x08, + 0x31, 0x4f, 0x01, 0xc7, 0x98, 0x35, 0x50, 0x13, 0xb6, 0x31, 0x69, 0x51, 0xfd, 0x2d, 0x50, 0x64, + 0x32, 0xca, 0x11, 0x4d, 0x0a, 0x30, 0x40, 0x4b, 0x17, 0xaa, 0x9f, 0x82, 0xb9, 0x30, 0xc7, 0x23, + 0x6b, 0x53, 0xda, 0x7d, 0xdd, 0xc4, 0x0d, 0xd7, 0xcc, 0xdf, 0x39, 0x33, 0x77, 0xaf, 0xda, 0x3b, + 0x66, 0x7e, 0x6e, 0xbb, 0x87, 0x61, 0xef, 0x73, 0x79, 0x83, 0xdd, 0x99, 0x6a, 0xaf, 0x81, 0x2f, + 0x0c, 0xb4, 0x90, 0x99, 0x7d, 0x3c, 0xd9, 0xc7, 0x6c, 0x9d, 0xb4, 0x1a, 0x01, 0x7a, 0x8f, 0x70, + 0x1c, 0xf9, 0x63, 0x9b, 0x75, 0xc0, 0xaa, 0xd7, 0x8a, 0x03, 0xec, 0x42, 0x8e, 0x9c, 0x36, 0xe1, + 0xc8, 0x49, 0x1f, 0x2f, 0xe5, 0xfb, 0xb5, 0xbc, 0x4d, 0xf9, 0x00, 0x9a, 0xf5, 0x34, 0xe1, 0x3d, + 0xc2, 0xd1, 0x3d, 0x05, 0xb7, 0xef, 0x78, 0xfd, 0x86, 0xf5, 0x1f, 0x81, 0x55, 0x1c, 0x9d, 0x53, + 0xe8, 0x8a, 0xe5, 0xeb, 0x34, 0x02, 0xe2, 0x3e, 0x72, 0x9a, 0x08, 0x7a, 0x88, 0xca, 0x87, 0xa7, + 0xb4, 0xfb, 0xea, 0x8b, 0x0a, 0x7b, 0x5f, 0xa2, 0xed, 0x3b, 0x5d, 0x9a, 0x03, 0xc1, 0x92, 0x0c, + 0x8f, 0x54, 0xdb, 0x7c, 0xc5, 0xb2, 0xda, 0xfe, 0x5a, 0x03, 0x8b, 0xc7, 0xcc, 0xff, 0x5e, 0xec, + 0x41, 0x8e, 0x4e, 0x21, 0x85, 0x21, 0x13, 0xd5, 0x84, 0x2d, 0xde, 0x24, 0x62, 0x45, 0xbf, 0xb8, + 0x9a, 0x19, 0x54, 0x3f, 0x02, 0xb3, 0xb1, 0x64, 0x50, 0xc5, 0xfb, 0xa2, 0x39, 0x44, 0xff, 0x34, + 0x93, 0x49, 0x0f, 0xa6, 0x9f, 0x3c, 0xad, 0x4e, 0xd8, 0x8a, 0x60, 0x6f, 0x41, 0xfa, 0xc9, 0xa8, + 0x6b, 0x6b, 0x60, 0xf5, 0x92, 0xca, 0xcc, 0xc1, 0xcf, 0x0a, 0xe0, 0xf6, 0x31, 0xf3, 0x53, 0x97, + 0xfb, 0x9e, 0x87, 0x45, 0x95, 0x06, 0x35, 0x80, 0x6f, 0x81, 0x05, 0x1c, 0x61, 0x8e, 0x61, 0xe0, + 0x34, 0x91, 0x28, 0xbd, 0x12, 0x6c, 0xc8, 0x9b, 0x21, 0x9a, 0x9e, 0xa9, 0x5a, 0x9d, 0xbc, 0x01, + 0x02, 0xa1, 0xf4, 0xcd, 0xab, 0xbc, 0x64, 0x50, 0x34, 0x04, 0x1f, 0x45, 0x88, 0x61, 0xe6, 0x34, + 0x21, 0x6b, 0xca, 0x7b, 0x3a, 0x67, 0x97, 0xd4, 0xd8, 0x7d, 0xc8, 0x9a, 0x7a, 0x15, 0x94, 0x1a, + 0x38, 0x82, 0xb4, 0x93, 0x20, 0xa6, 0x25, 0x02, 0x24, 0x43, 0x12, 0x70, 0x08, 0x00, 0x8b, 0xe1, + 0x45, 0xe4, 0x88, 0x6d, 0xa0, 0x3c, 0xa3, 0x84, 0x24, 0x2d, 0xde, 0x4c, 0x5b, 0xbc, 0x79, 0x96, + 0xee, 0x11, 0x07, 0x05, 0x21, 0xe4, 0xc3, 0x7f, 0x54, 0x35, 0xbb, 0x28, 0xf3, 0x44, 0x44, 0x7f, + 0x00, 0x96, 0x5a, 0x51, 0x83, 0x44, 0x1e, 0x8e, 0x7c, 0x27, 0x46, 0x14, 0x13, 0xaf, 0x3c, 0x2b, + 0xa9, 0xd6, 0xae, 0x50, 0xd5, 0xd5, 0x6e, 0x92, 0x30, 0xfd, 0x52, 0x30, 0x2d, 0x66, 0xc9, 0xa7, + 0x32, 0x57, 0xff, 0x2e, 0xd0, 0x5d, 0xb7, 0x2d, 0x25, 0x91, 0x16, 0x4f, 0x19, 0x6f, 0x0d, 0xcf, + 0xb8, 0xe4, 0xba, 0xed, 0xb3, 0x24, 0x5b, 0x51, 0xfe, 0x10, 0xac, 0x72, 0x0a, 0x23, 0x76, 0x8e, + 0xe8, 0x65, 0xde, 0xc2, 0xf0, 0xbc, 0x77, 0x52, 0x8e, 0x5e, 0xf2, 0xfb, 0x60, 0x23, 0xeb, 0xcc, + 0x14, 0x79, 0x98, 0x71, 0x8a, 0x1b, 0x2d, 0xb9, 0xe8, 0xd2, 0x65, 0x53, 0x2e, 0xca, 0x87, 0xa0, + 0x92, 0xe2, 0xec, 0x1e, 0xd8, 0x37, 0x15, 0x4a, 0x3f, 0x01, 0xaf, 0xc8, 0x65, 0xca, 0x84, 0x38, + 0xa7, 0x87, 0x49, 0x4e, 0x1d, 0x62, 0xc6, 0x04, 0x1b, 0xd8, 0xd0, 0xb6, 0xa6, 0xec, 0xcd, 0x04, + 0x7b, 0x8a, 0x68, 0x3d, 0x87, 0x3c, 0xcb, 0x01, 0xf5, 0x6d, 0xa0, 0x37, 0x31, 0xe3, 0x84, 0x62, + 0x17, 0x06, 0x0e, 0x8a, 0x38, 0xc5, 0x88, 0x95, 0x4b, 0x32, 0x7d, 0xb9, 0x1b, 0xb9, 0x97, 0x04, + 0xf4, 0x77, 0xc1, 0xe6, 0xb5, 0x93, 0x3a, 0x6e, 0x13, 0x46, 0x11, 0x0a, 0xca, 0x73, 0xd2, 0x4a, + 0xd5, 0xbb, 0x66, 0xce, 0xc3, 0x04, 0xa6, 0xdf, 0x06, 0x33, 0x9c, 0xc4, 0xce, 0x83, 0xf2, 0xfc, + 0x86, 0xb6, 0x35, 0x6f, 0x4f, 0x73, 0x12, 0x3f, 0xd0, 0xdf, 0x00, 0x2b, 0x6d, 0x18, 0x60, 0x0f, + 0x72, 0x42, 0x99, 0x13, 0x93, 0x0b, 0x44, 0x1d, 0x17, 0xc6, 0xe5, 0x05, 0x89, 0xd1, 0xbb, 0xb1, + 0x53, 0x11, 0x3a, 0x84, 0xb1, 0x7e, 0x17, 0x2c, 0x67, 0xa3, 0x0e, 0x43, 0x5c, 0xc2, 0x17, 0x25, + 0x7c, 0x31, 0x0b, 0x3c, 0x44, 0x5c, 0x60, 0xd7, 0x41, 0x11, 0x06, 0x01, 0xb9, 0x08, 0x30, 0xe3, + 0xe5, 0xa5, 0x8d, 0xa9, 0xad, 0xa2, 0xdd, 0x1d, 0xd0, 0x0d, 0x50, 0xf0, 0x50, 0xd4, 0x91, 0xc1, + 0x65, 0x19, 0xcc, 0xae, 0x7b, 0xbb, 0x8e, 0x3e, 0x74, 0xd7, 0xb9, 0xd2, 0x2a, 0x5e, 0x06, 0x2f, + 0xf5, 0x69, 0x07, 0x59, 0xbb, 0xf8, 0x83, 0x06, 0xf4, 0x5c, 0xdc, 0x46, 0x21, 0x69, 0xc3, 0x60, + 0x50, 0xb7, 0xd8, 0x07, 0x45, 0x26, 0xca, 0x28, 0xd7, 0xe7, 0xe4, 0x08, 0xeb, 0xb3, 0x20, 0xd2, + 0xe4, 0xf2, 0xec, 0xf1, 0x36, 0x35, 0xbe, 0xb7, 0x75, 0x60, 0x5c, 0xd5, 0x9e, 0x59, 0xfb, 0xbd, + 0x06, 0xee, 0x88, 0x70, 0x13, 0x46, 0x3e, 0xb2, 0xd1, 0x05, 0xa4, 0x5e, 0x1d, 0x45, 0x24, 0x64, + 0x7a, 0x0d, 0xcc, 0x7b, 0xf2, 0x9f, 0xc3, 0x89, 0x38, 0xf2, 0x94, 0x35, 0x59, 0xfc, 0x52, 0x32, + 0x78, 0x46, 0xf6, 0x3d, 0x4f, 0xdf, 0x02, 0x4b, 0x5d, 0x0c, 0x15, 0xd4, 0xc2, 0xad, 0x80, 0x2d, + 0xa4, 0x30, 0x39, 0xe1, 0x7f, 0xcf, 0x4d, 0x55, 0x6e, 0xeb, 0x57, 0xe5, 0x66, 0x86, 0x9e, 0x68, + 0xa0, 0x70, 0xcc, 0xfc, 0x93, 0x98, 0x1f, 0x45, 0xff, 0xe7, 0x07, 0x3a, 0x1d, 0x2c, 0xa5, 0x4e, + 0x32, 0x7b, 0xbf, 0xd1, 0x40, 0x31, 0x19, 0x3c, 0x69, 0xf1, 0xff, 0x89, 0xbf, 0xae, 0xf8, 0xa9, + 0x9b, 0x88, 0xbf, 0x0d, 0x96, 0x33, 0x9d, 0x99, 0xfa, 0x3f, 0x69, 0xf2, 0x8c, 0x2a, 0xd6, 0xbd, + 0x2a, 0xd7, 0x21, 0x09, 0x55, 0x03, 0xb2, 0x21, 0x47, 0x57, 0x55, 0x6b, 0x43, 0xaa, 0xce, 0x57, + 0x62, 0xb2, 0xb7, 0x12, 0xf7, 0xc0, 0x34, 0x85, 0x1c, 0x29, 0x3b, 0x3b, 0x62, 0xa9, 0xfd, 0xfd, + 0x69, 0xf5, 0xa5, 0xc4, 0x12, 0xf3, 0x1e, 0x99, 0x98, 0x58, 0x21, 0xe4, 0x4d, 0xf3, 0x3b, 0xc8, + 0x87, 0x6e, 0xa7, 0x8e, 0xdc, 0x4f, 0x3f, 0xde, 0x06, 0xca, 0x71, 0x1d, 0xb9, 0xb6, 0x4c, 0xdf, + 0x2b, 0xa4, 0x2e, 0x6b, 0xaf, 0x82, 0x57, 0x06, 0x99, 0xc8, 0xdc, 0xfe, 0x65, 0x52, 0x9e, 0x40, + 0xb2, 0x73, 0x2a, 0xf1, 0xf0, 0xb9, 0x38, 0xee, 0x89, 0x0e, 0xbf, 0x02, 0x66, 0x38, 0xe6, 0x01, + 0x52, 0xb7, 0x2d, 0xb9, 0xd0, 0x37, 0x40, 0xc9, 0x43, 0xcc, 0xa5, 0x38, 0x96, 0xbb, 0x4f, 0x62, + 0x24, 0x3f, 0xd4, 0xe3, 0x73, 0xaa, 0xd7, 0x67, 0xd6, 0xb9, 0xa7, 0x87, 0xe8, 0xdc, 0x33, 0xa3, + 0x75, 0xee, 0xd9, 0x21, 0x3a, 0xf7, 0xad, 0x41, 0x9d, 0xbb, 0x30, 0xa8, 0x73, 0x17, 0x87, 0xee, + 0x07, 0xb5, 0x4d, 0x50, 0xbd, 0xa6, 0xa4, 0x69, 0xd9, 0x77, 0xff, 0x5c, 0x02, 0x53, 0xc7, 0xcc, + 0xd7, 0x7f, 0xa1, 0x81, 0xe5, 0xab, 0xef, 0x78, 0x5f, 0x1d, 0xea, 0x80, 0xd9, 0xef, 0x45, 0xca, + 0xd8, 0x1f, 0x3b, 0x35, 0xd5, 0xa6, 0xff, 0x4e, 0x03, 0xc6, 0x80, 0x17, 0xb0, 0x83, 0x61, 0x67, + 0xb8, 0x9e, 0xc3, 0x78, 0xf7, 0xe6, 0x1c, 0x03, 0xe4, 0xf6, 0xbc, 0x42, 0x8d, 0x29, 0x37, 0xcf, + 0x31, 0xae, 0xdc, 0x7e, 0x2f, 0x26, 0xfa, 0xcf, 0x35, 0xb0, 0x74, 0xe5, 0x4c, 0xff, 0x95, 0x61, + 0x27, 0xb8, 0x9c, 0x69, 0x7c, 0x63, 0xdc, 0xcc, 0x4c, 0xd0, 0x4f, 0x35, 0xb0, 0x78, 0xf9, 0xd4, + 0xf0, 0xf6, 0xa8, 0xac, 0x2a, 0xd1, 0xf8, 0xfa, 0x98, 0x89, 0x99, 0x9a, 0x0f, 0x34, 0x30, 0xd7, + 0xf3, 0xd2, 0xf6, 0xe5, 0x61, 0x19, 0xf3, 0x59, 0xc6, 0x3b, 0xe3, 0x64, 0x65, 0x22, 0x42, 0x30, + 0x93, 0xec, 0xcd, 0xdb, 0xc3, 0xd2, 0x48, 0xb8, 0xf1, 0xe6, 0x48, 0xf0, 0x6c, 0xba, 0x18, 0xcc, + 0xaa, 0xbd, 0xd2, 0x1c, 0x81, 0xe0, 0xa4, 0xc5, 0x8d, 0xb7, 0x46, 0xc3, 0x67, 0x33, 0xfe, 0x56, + 0x03, 0x6b, 0xd7, 0x6f, 0x70, 0x43, 0xf7, 0x90, 0x6b, 0x29, 0x8c, 0xa3, 0x1b, 0x53, 0x64, 0x5a, + 0x7f, 0xa5, 0x81, 0x95, 0xbe, 0xdb, 0xd3, 0x3b, 0xa3, 0x3e, 0x6b, 0xf9, 0x6c, 0xa3, 0x7e, 0x93, + 0xec, 0x54, 0x9c, 0x31, 0xf3, 0xe3, 0xcf, 0x1e, 0xdf, 0xd5, 0x0e, 0xbe, 0xff, 0xe4, 0x59, 0x45, + 0xfb, 0xe4, 0x59, 0x45, 0xfb, 0xe7, 0xb3, 0x8a, 0xf6, 0xe1, 0xf3, 0xca, 0xc4, 0x27, 0xcf, 0x2b, + 0x13, 0x7f, 0x7b, 0x5e, 0x99, 0xf8, 0xc1, 0xd7, 0x7c, 0xcc, 0x9b, 0xad, 0x86, 0xe9, 0x92, 0x50, + 0x7d, 0xa0, 0xb4, 0xba, 0xf3, 0x6e, 0x67, 0xdf, 0x17, 0xdb, 0x6f, 0x5a, 0xef, 0xf7, 0x7e, 0x64, + 0x94, 0x1f, 0x65, 0x1a, 0xb3, 0xf2, 0x20, 0xfe, 0xa5, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x39, + 0xec, 0x0a, 0x75, 0xe0, 0x15, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ccv/types/params.go b/x/ccv/types/params.go index 72a95ae7dd..475389d7df 100644 --- a/x/ccv/types/params.go +++ b/x/ccv/types/params.go @@ -27,6 +27,9 @@ const ( // decimal number. For example "0.75" would represent 75%. DefaultConsumerRedistributeFrac = "0.75" + // By default, the bottom 5% of the validator set can opt out of validating consumer chains + DefaultSoftOptOutThreshold = "0.05" + // Default number of historical info entries to persist in store. // We use the same default as the staking module, but use a signed integer // so that negative values can be caught during parameter validation in a readable way, @@ -38,9 +41,6 @@ const ( // the staking module default. DefaultConsumerUnbondingPeriod = stakingtypes.DefaultUnbondingTime - 7*24*time.Hour - // By default, the bottom 5% of the validator set can opt out of validating consumer chains - DefaultSoftOptOutThreshold = "0.05" - // Default retry delay period is 1 hour. DefaultRetryDelayPeriod = time.Hour ) @@ -149,9 +149,6 @@ func (p ConsumerParams) Validate() error { if err := ValidateDuration(p.UnbondingPeriod); err != nil { return err } - if err := ValidateSoftOptOutThreshold(p.SoftOptOutThreshold); err != nil { - return err - } if err := ValidateDenoms(p.RewardDenoms); err != nil { return err } @@ -184,8 +181,6 @@ func (p *ConsumerParams) ParamSetPairs() paramtypes.ParamSetPairs { p.HistoricalEntries, ValidatePositiveInt64), paramtypes.NewParamSetPair(KeyConsumerUnbondingPeriod, p.UnbondingPeriod, ValidateDuration), - paramtypes.NewParamSetPair(KeySoftOptOutThreshold, - p.SoftOptOutThreshold, ValidateSoftOptOutThreshold), paramtypes.NewParamSetPair(KeyRewardDenoms, p.RewardDenoms, ValidateDenoms), paramtypes.NewParamSetPair(KeyProviderRewardDenoms, diff --git a/x/ccv/types/shared_consumer.pb.go b/x/ccv/types/shared_consumer.pb.go index 425129c56c..92d0d82e6a 100644 --- a/x/ccv/types/shared_consumer.pb.go +++ b/x/ccv/types/shared_consumer.pb.go @@ -65,11 +65,8 @@ type ConsumerParams struct { // Unbonding period for the consumer, // which should be smaller than that of the provider in general. UnbondingPeriod time.Duration `protobuf:"bytes,9,opt,name=unbonding_period,json=unbondingPeriod,proto3,stdduration" json:"unbonding_period"` - // The threshold for the percentage of validators at the bottom of the set who - // can opt out of running the consumer chain without being punished. For - // example, a value of 0.05 means that the validators in the bottom 5% of the - // set can opt out - SoftOptOutThreshold string `protobuf:"bytes,10,opt,name=soft_opt_out_threshold,json=softOptOutThreshold,proto3" json:"soft_opt_out_threshold,omitempty"` + // !!! DEPRECATED !!! soft_opt_out_threshold is deprecated. see docs/docs/adrs/adr-015-partial-set-security.md + SoftOptOutThreshold string `protobuf:"bytes,10,opt,name=soft_opt_out_threshold,json=softOptOutThreshold,proto3" json:"soft_opt_out_threshold,omitempty"` // Deprecated: Do not use. // Reward denoms. These are the denominations which are allowed to be sent to // the provider as rewards. RewardDenoms []string `protobuf:"bytes,11,rep,name=reward_denoms,json=rewardDenoms,proto3" json:"reward_denoms,omitempty"` @@ -176,6 +173,7 @@ func (m *ConsumerParams) GetUnbondingPeriod() time.Duration { return 0 } +// Deprecated: Do not use. func (m *ConsumerParams) GetSoftOptOutThreshold() string { if m != nil { return m.SoftOptOutThreshold @@ -343,58 +341,59 @@ func init() { } var fileDescriptor_d0a8be0efc64dfbc = []byte{ - // 812 bytes of a gzipped FileDescriptorProto + // 817 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0x41, 0x73, 0xdc, 0x34, - 0x14, 0x8e, 0xbb, 0x25, 0xdd, 0x68, 0x93, 0xa6, 0x88, 0x50, 0x4c, 0x3a, 0xb3, 0x71, 0x03, 0x87, - 0x1d, 0x98, 0xda, 0x24, 0x2d, 0x17, 0x6e, 0x24, 0xa1, 0x94, 0x1e, 0x92, 0xad, 0x13, 0xca, 0x0c, - 0x1c, 0x34, 0xb2, 0xf4, 0x76, 0xad, 0xc1, 0x96, 0x3c, 0x92, 0xec, 0x90, 0x5f, 0xc0, 0x95, 0x23, - 0x3f, 0xa9, 0xdc, 0x7a, 0xe4, 0x44, 0x99, 0xe4, 0x8f, 0x30, 0x96, 0xed, 0x8d, 0x97, 0x21, 0x50, - 0x6e, 0x7a, 0x7a, 0xdf, 0xf7, 0xd9, 0xdf, 0x93, 0xde, 0x13, 0xfa, 0x4c, 0x48, 0x0b, 0x9a, 0xa5, - 0x54, 0x48, 0x62, 0x80, 0x95, 0x5a, 0xd8, 0x8b, 0x88, 0xb1, 0x2a, 0xaa, 0xf6, 0x22, 0x93, 0x52, - 0x0d, 0x9c, 0x30, 0x25, 0x4d, 0x99, 0x83, 0x0e, 0x0b, 0xad, 0xac, 0xc2, 0xdb, 0xff, 0xc0, 0x08, - 0x19, 0xab, 0xc2, 0x6a, 0x6f, 0xfb, 0x81, 0x05, 0xc9, 0x41, 0xe7, 0x42, 0xda, 0x88, 0x26, 0x4c, - 0x44, 0xf6, 0xa2, 0x00, 0xd3, 0x10, 0xb7, 0x23, 0x91, 0xb0, 0x28, 0x13, 0xf3, 0xd4, 0xb2, 0x4c, - 0x80, 0xb4, 0x26, 0xea, 0xa1, 0xab, 0xbd, 0x5e, 0xd4, 0x12, 0xc6, 0x73, 0xa5, 0xe6, 0x19, 0x44, - 0x2e, 0x4a, 0xca, 0x59, 0xc4, 0x4b, 0x4d, 0xad, 0x50, 0xb2, 0xcd, 0x6f, 0xcd, 0xd5, 0x5c, 0xb9, - 0x65, 0x54, 0xaf, 0x9a, 0xdd, 0xdd, 0x37, 0xab, 0xe8, 0xee, 0x61, 0xfb, 0xcb, 0x53, 0xaa, 0x69, - 0x6e, 0xb0, 0x8f, 0xee, 0x80, 0xa4, 0x49, 0x06, 0xdc, 0xf7, 0x02, 0x6f, 0x32, 0x8c, 0xbb, 0x10, - 0x9f, 0xa0, 0x8f, 0x93, 0x4c, 0xb1, 0x1f, 0x0d, 0x29, 0x40, 0x13, 0x2e, 0x8c, 0xd5, 0x22, 0x29, - 0xeb, 0x6f, 0x10, 0xab, 0xa9, 0x34, 0xb9, 0x30, 0x46, 0x28, 0xe9, 0xdf, 0x0a, 0xbc, 0xc9, 0x20, - 0x7e, 0xd8, 0x60, 0xa7, 0xa0, 0x8f, 0x7a, 0xc8, 0xb3, 0x1e, 0x10, 0x3f, 0x47, 0x0f, 0x6f, 0x54, - 0x21, 0x2c, 0xa5, 0x52, 0x42, 0xe6, 0x0f, 0x02, 0x6f, 0xb2, 0x16, 0xef, 0xf0, 0x1b, 0x44, 0x0e, - 0x1b, 0x18, 0xfe, 0x02, 0x6d, 0x17, 0x5a, 0x55, 0x82, 0x83, 0x26, 0x33, 0x00, 0x52, 0x28, 0x95, - 0x11, 0xca, 0xb9, 0x26, 0xc6, 0x6a, 0xff, 0xb6, 0x13, 0xb9, 0xdf, 0x21, 0x9e, 0x02, 0x4c, 0x95, - 0xca, 0xbe, 0xe4, 0x5c, 0x9f, 0x5a, 0x8d, 0x5f, 0x20, 0xcc, 0x58, 0x45, 0xac, 0xc8, 0x41, 0x95, - 0xb6, 0x76, 0x27, 0x14, 0xf7, 0xdf, 0x09, 0xbc, 0xc9, 0x68, 0xff, 0xc3, 0xb0, 0x29, 0x6c, 0xd8, - 0x15, 0x36, 0x3c, 0x6a, 0x0b, 0x7b, 0x30, 0x7c, 0xf5, 0xc7, 0xce, 0xca, 0xaf, 0x6f, 0x76, 0xbc, - 0xf8, 0x1e, 0x63, 0xd5, 0x59, 0xc3, 0x9e, 0x3a, 0x32, 0xfe, 0x01, 0x7d, 0xe0, 0xdc, 0xcc, 0x40, - 0xff, 0x5d, 0x77, 0xf5, 0xed, 0x75, 0xdf, 0xef, 0x34, 0x96, 0xc5, 0x9f, 0xa1, 0xa0, 0xbb, 0x67, - 0x44, 0xc3, 0x52, 0x09, 0x67, 0x9a, 0xb2, 0x7a, 0xe1, 0xdf, 0x71, 0x8e, 0xc7, 0x1d, 0x2e, 0x5e, - 0x82, 0x3d, 0x6d, 0x51, 0xf8, 0x11, 0xc2, 0xa9, 0x30, 0x56, 0x69, 0xc1, 0x68, 0x46, 0x40, 0x5a, - 0x2d, 0xc0, 0xf8, 0x43, 0x77, 0x80, 0xef, 0x5e, 0x67, 0xbe, 0x6a, 0x12, 0xf8, 0x18, 0xdd, 0x2b, - 0x65, 0xa2, 0x24, 0x17, 0x72, 0xde, 0xd9, 0x59, 0x7b, 0x7b, 0x3b, 0x9b, 0x0b, 0x72, 0x6b, 0xe4, - 0x31, 0xba, 0x6f, 0xd4, 0xcc, 0x12, 0x55, 0x58, 0x52, 0x57, 0xc8, 0xa6, 0x1a, 0x4c, 0xaa, 0x32, - 0xee, 0x23, 0xf7, 0xfb, 0xef, 0xd5, 0xd9, 0x93, 0xc2, 0x9e, 0x94, 0xf6, 0xac, 0x4b, 0xe1, 0x8f, - 0xd0, 0x86, 0x86, 0x73, 0xaa, 0x39, 0xe1, 0x20, 0x55, 0x6e, 0xfc, 0x51, 0x30, 0x98, 0xac, 0xc5, - 0xeb, 0xcd, 0xe6, 0x91, 0xdb, 0xc3, 0x4f, 0xd0, 0xe2, 0xb0, 0xc9, 0x32, 0x7a, 0xdd, 0xa1, 0xb7, - 0xba, 0x6c, 0xdc, 0x67, 0xbd, 0x40, 0x58, 0x83, 0xd5, 0x17, 0x84, 0x43, 0x46, 0x2f, 0x3a, 0x87, - 0x1b, 0xff, 0xe3, 0x22, 0x38, 0xfa, 0x51, 0xcd, 0x6e, 0x2c, 0xee, 0xfe, 0xe6, 0xa1, 0xad, 0xae, - 0xc3, 0xbe, 0x06, 0x09, 0x46, 0x98, 0x53, 0x4b, 0x2d, 0xe0, 0x67, 0x68, 0xb5, 0x70, 0x1d, 0xe7, - 0xda, 0x6c, 0xb4, 0xff, 0x49, 0x78, 0xf3, 0xac, 0x08, 0x97, 0x7b, 0xf4, 0xe0, 0x76, 0xfd, 0xc1, - 0xb8, 0xe5, 0xe3, 0xe7, 0x68, 0xd8, 0xb9, 0x71, 0xbd, 0x37, 0xda, 0x9f, 0xfc, 0x9b, 0xd6, 0xb4, - 0xc5, 0x7e, 0x23, 0x67, 0xaa, 0x55, 0x5a, 0xf0, 0xf1, 0x03, 0xb4, 0x26, 0xe1, 0x9c, 0x38, 0xa6, - 0x6b, 0xbd, 0x61, 0x3c, 0x94, 0x70, 0x7e, 0x58, 0xc7, 0xbb, 0x3f, 0xdf, 0x42, 0xeb, 0x7d, 0x36, - 0x3e, 0x46, 0xeb, 0xcd, 0x78, 0x22, 0xa6, 0xf6, 0xd4, 0x3a, 0xf9, 0x34, 0x14, 0x09, 0x0b, 0xfb, - 0xc3, 0x2b, 0xec, 0x8d, 0xab, 0xda, 0x8d, 0xdb, 0x75, 0x65, 0x88, 0x47, 0xec, 0x3a, 0xc0, 0xdf, - 0xa1, 0xcd, 0xfa, 0xc2, 0x82, 0x34, 0xa5, 0x69, 0x25, 0x1b, 0x43, 0xe1, 0x7f, 0x4a, 0x76, 0xb4, - 0x46, 0xf5, 0x2e, 0x5b, 0x8a, 0xf1, 0x31, 0xda, 0x14, 0x52, 0x58, 0x41, 0x33, 0x52, 0xd1, 0x8c, - 0x18, 0xb0, 0xfe, 0x20, 0x18, 0x4c, 0x46, 0xfb, 0x41, 0x5f, 0xa7, 0x9e, 0xc2, 0xe1, 0x4b, 0x9a, - 0x09, 0x4e, 0xad, 0xd2, 0xdf, 0x16, 0x9c, 0x5a, 0x68, 0x2b, 0xb4, 0xd1, 0xd2, 0x5f, 0xd2, 0xec, - 0x14, 0xec, 0xc1, 0xf1, 0xab, 0xcb, 0xb1, 0xf7, 0xfa, 0x72, 0xec, 0xfd, 0x79, 0x39, 0xf6, 0x7e, - 0xb9, 0x1a, 0xaf, 0xbc, 0xbe, 0x1a, 0xaf, 0xfc, 0x7e, 0x35, 0x5e, 0xf9, 0xfe, 0xc9, 0x5c, 0xd8, - 0xb4, 0x4c, 0x42, 0xa6, 0xf2, 0x88, 0x29, 0x93, 0x2b, 0x13, 0x5d, 0x9f, 0xc5, 0xa3, 0xc5, 0xab, - 0x51, 0x7d, 0x1e, 0xfd, 0xe4, 0x9e, 0x0e, 0x37, 0xf4, 0x93, 0x55, 0x77, 0xa9, 0x1e, 0xff, 0x15, - 0x00, 0x00, 0xff, 0xff, 0x9a, 0xb1, 0xf7, 0x25, 0x62, 0x06, 0x00, 0x00, + 0x14, 0x8e, 0xb3, 0x25, 0xdd, 0x68, 0x93, 0xa6, 0x88, 0x50, 0x4c, 0x3a, 0xb3, 0x71, 0x03, 0x87, + 0x1d, 0x98, 0xda, 0x24, 0x94, 0x61, 0x86, 0x1b, 0x49, 0x28, 0xa5, 0x87, 0x64, 0xeb, 0x84, 0x32, + 0x03, 0x07, 0x8d, 0x2c, 0xbd, 0x5d, 0x6b, 0xb0, 0x25, 0x8f, 0x24, 0x3b, 0xe4, 0x17, 0x70, 0xe5, + 0xc8, 0x4f, 0x2a, 0xb7, 0x1e, 0x39, 0x01, 0x93, 0xfc, 0x11, 0xc6, 0xb2, 0x9d, 0x78, 0x19, 0x02, + 0xe9, 0x4d, 0x4f, 0xef, 0xfb, 0x3e, 0xfb, 0x7b, 0xd2, 0x7b, 0x42, 0x9f, 0x08, 0x69, 0x41, 0xb3, + 0x94, 0x0a, 0x49, 0x0c, 0xb0, 0x52, 0x0b, 0x7b, 0x1e, 0x31, 0x56, 0x45, 0xd5, 0x6e, 0x64, 0x52, + 0xaa, 0x81, 0x13, 0xa6, 0xa4, 0x29, 0x73, 0xd0, 0x61, 0xa1, 0x95, 0x55, 0x78, 0xeb, 0x5f, 0x18, + 0x21, 0x63, 0x55, 0x58, 0xed, 0x6e, 0x3d, 0xb4, 0x20, 0x39, 0xe8, 0x5c, 0x48, 0x1b, 0xd1, 0x84, + 0x89, 0xc8, 0x9e, 0x17, 0x60, 0x1a, 0xe2, 0x56, 0x24, 0x12, 0x16, 0x65, 0x62, 0x9e, 0x5a, 0x96, + 0x09, 0x90, 0xd6, 0x44, 0x3d, 0x74, 0xb5, 0xdb, 0x8b, 0x5a, 0xc2, 0x78, 0xae, 0xd4, 0x3c, 0x83, + 0xc8, 0x45, 0x49, 0x39, 0x8b, 0x78, 0xa9, 0xa9, 0x15, 0x4a, 0xb6, 0xf9, 0xcd, 0xb9, 0x9a, 0x2b, + 0xb7, 0x8c, 0xea, 0x55, 0xb3, 0xbb, 0x73, 0xb9, 0x82, 0xee, 0x1d, 0xb4, 0xbf, 0x3c, 0xa5, 0x9a, + 0xe6, 0x06, 0xfb, 0xe8, 0x2e, 0x48, 0x9a, 0x64, 0xc0, 0x7d, 0x2f, 0xf0, 0x26, 0xc3, 0xb8, 0x0b, + 0xf1, 0x31, 0xfa, 0x30, 0xc9, 0x14, 0xfb, 0xd1, 0x90, 0x02, 0x34, 0xe1, 0xc2, 0x58, 0x2d, 0x92, + 0xb2, 0xfe, 0x06, 0xb1, 0x9a, 0x4a, 0x93, 0x0b, 0x63, 0x84, 0x92, 0xfe, 0x72, 0xe0, 0x4d, 0x06, + 0xf1, 0xa3, 0x06, 0x3b, 0x05, 0x7d, 0xd8, 0x43, 0x9e, 0xf6, 0x80, 0xf8, 0x39, 0x7a, 0x74, 0xa3, + 0x0a, 0x61, 0x29, 0x95, 0x12, 0x32, 0x7f, 0x10, 0x78, 0x93, 0xd5, 0x78, 0x9b, 0xdf, 0x20, 0x72, + 0xd0, 0xc0, 0xf0, 0x17, 0x68, 0xab, 0xd0, 0xaa, 0x12, 0x1c, 0x34, 0x99, 0x01, 0x90, 0x42, 0xa9, + 0x8c, 0x50, 0xce, 0x35, 0x31, 0x56, 0xfb, 0x77, 0x9c, 0xc8, 0x83, 0x0e, 0xf1, 0x14, 0x60, 0xaa, + 0x54, 0xf6, 0x25, 0xe7, 0xfa, 0xc4, 0x6a, 0xfc, 0x02, 0x61, 0xc6, 0x2a, 0x62, 0x45, 0x0e, 0xaa, + 0xb4, 0xb5, 0x3b, 0xa1, 0xb8, 0xff, 0x56, 0xe0, 0x4d, 0x46, 0x7b, 0xef, 0x87, 0x4d, 0x61, 0xc3, + 0xae, 0xb0, 0xe1, 0x61, 0x5b, 0xd8, 0xfd, 0xe1, 0xab, 0x3f, 0xb6, 0x97, 0x7e, 0xfd, 0x73, 0xdb, + 0x8b, 0xef, 0x33, 0x56, 0x9d, 0x36, 0xec, 0xa9, 0x23, 0xe3, 0x1f, 0xd0, 0x7b, 0xce, 0xcd, 0x0c, + 0xf4, 0x3f, 0x75, 0x57, 0x6e, 0xaf, 0xfb, 0x6e, 0xa7, 0xb1, 0x28, 0xfe, 0x0c, 0x05, 0xdd, 0x3d, + 0x23, 0x1a, 0x16, 0x4a, 0x38, 0xd3, 0x94, 0xd5, 0x0b, 0xff, 0xae, 0x73, 0x3c, 0xee, 0x70, 0xf1, + 0x02, 0xec, 0x69, 0x8b, 0xc2, 0x8f, 0x11, 0x4e, 0x85, 0xb1, 0x4a, 0x0b, 0x46, 0x33, 0x02, 0xd2, + 0x6a, 0x01, 0xc6, 0x1f, 0xba, 0x03, 0x7c, 0xfb, 0x3a, 0xf3, 0x55, 0x93, 0xc0, 0x47, 0xe8, 0x7e, + 0x29, 0x13, 0x25, 0xb9, 0x90, 0xf3, 0xce, 0xce, 0xea, 0xed, 0xed, 0x6c, 0x5c, 0x91, 0x5b, 0x23, + 0x9f, 0xa3, 0x07, 0x46, 0xcd, 0x2c, 0x51, 0x85, 0x25, 0x75, 0x85, 0x6c, 0xaa, 0xc1, 0xa4, 0x2a, + 0xe3, 0x3e, 0xaa, 0x7f, 0x7f, 0x7f, 0xd9, 0xf7, 0xe2, 0x77, 0x6a, 0xc4, 0x71, 0x61, 0x8f, 0x4b, + 0x7b, 0xda, 0xa5, 0xf1, 0x07, 0x68, 0x5d, 0xc3, 0x19, 0xd5, 0x9c, 0x70, 0x90, 0x2a, 0x37, 0xfe, + 0x28, 0x18, 0x4c, 0x56, 0xe3, 0xb5, 0x66, 0xf3, 0xd0, 0xed, 0xe1, 0x27, 0xe8, 0xea, 0xc0, 0xc9, + 0x22, 0x7a, 0xcd, 0xa1, 0x37, 0xbb, 0x6c, 0xdc, 0x67, 0xbd, 0x40, 0x58, 0x83, 0xd5, 0xe7, 0x84, + 0x43, 0x46, 0xcf, 0x3b, 0x97, 0xeb, 0x6f, 0x70, 0x19, 0x1c, 0xfd, 0xb0, 0x66, 0x37, 0x36, 0x77, + 0x7e, 0xf3, 0xd0, 0x66, 0xd7, 0x65, 0x5f, 0x83, 0x04, 0x23, 0xcc, 0x89, 0xa5, 0x16, 0xf0, 0x33, + 0xb4, 0x52, 0xb8, 0xae, 0x73, 0xad, 0x36, 0xda, 0xfb, 0x28, 0xbc, 0x79, 0x5e, 0x84, 0x8b, 0x7d, + 0xba, 0x7f, 0xa7, 0xfe, 0x60, 0xdc, 0xf2, 0xf1, 0x73, 0x34, 0xec, 0xdc, 0xb8, 0xfe, 0x1b, 0xed, + 0x4d, 0xfe, 0x4b, 0x6b, 0xda, 0x62, 0xbf, 0x91, 0x33, 0xd5, 0x2a, 0x5d, 0xf1, 0xf1, 0x43, 0xb4, + 0x2a, 0xe1, 0x8c, 0x38, 0xa6, 0x6b, 0xbf, 0x61, 0x3c, 0x94, 0x70, 0x76, 0x50, 0xc7, 0x3b, 0x3f, + 0x2f, 0xa3, 0xb5, 0x3e, 0x1b, 0x1f, 0xa1, 0xb5, 0x66, 0x44, 0x11, 0x53, 0x7b, 0x6a, 0x9d, 0x7c, + 0x1c, 0x8a, 0x84, 0x85, 0xfd, 0x01, 0x16, 0xf6, 0x46, 0x56, 0xed, 0xc6, 0xed, 0xba, 0x32, 0xc4, + 0x23, 0x76, 0x1d, 0xe0, 0xef, 0xd0, 0x46, 0x7d, 0x69, 0x41, 0x9a, 0xd2, 0xb4, 0x92, 0x8d, 0xa1, + 0xf0, 0x7f, 0x25, 0x3b, 0x5a, 0xa3, 0x7a, 0x8f, 0x2d, 0xc4, 0xf8, 0x08, 0x6d, 0x08, 0x29, 0xac, + 0xa0, 0x19, 0xa9, 0x68, 0x46, 0x0c, 0x58, 0x7f, 0x10, 0x0c, 0x26, 0xa3, 0xbd, 0xa0, 0xaf, 0x53, + 0x4f, 0xe2, 0xf0, 0x25, 0xcd, 0x04, 0xa7, 0x56, 0xe9, 0x6f, 0x0b, 0x4e, 0x2d, 0xb4, 0x15, 0x5a, + 0x6f, 0xe9, 0x2f, 0x69, 0x76, 0x02, 0x76, 0xff, 0xe8, 0xd5, 0xc5, 0xd8, 0x7b, 0x7d, 0x31, 0xf6, + 0xfe, 0xba, 0x18, 0x7b, 0xbf, 0x5c, 0x8e, 0x97, 0x5e, 0x5f, 0x8e, 0x97, 0x7e, 0xbf, 0x1c, 0x2f, + 0x7d, 0xff, 0x64, 0x2e, 0x6c, 0x5a, 0x26, 0x21, 0x53, 0x79, 0xc4, 0x94, 0xc9, 0x95, 0x89, 0xae, + 0xcf, 0xe2, 0xf1, 0xd5, 0xcb, 0x51, 0x7d, 0x16, 0xfd, 0xe4, 0x9e, 0x0f, 0x37, 0xf8, 0x93, 0x15, + 0x77, 0xa9, 0x3e, 0xfd, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x00, 0xe4, 0xb0, 0x69, 0x66, 0x06, 0x00, + 0x00, } func (m *ConsumerParams) Marshal() (dAtA []byte, err error) {