-
Notifications
You must be signed in to change notification settings - Fork 134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: mention PSS in changeover procedure and replace Replicated Security with Interchain Security #1981
docs: mention PSS in changeover procedure and replace Replicated Security with Interchain Security #1981
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -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. | ||||||
|
||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add a comma after introductory adverb for clarity. In the sentence starting with "Currently," it is stylistically better to add a comma after "Currently" to clearly delineate the introductory phrase from the main clause. - Currently the throttling mechanism is designed so that provider logic (slash meter, etc.) dictates how many `SlashPackets` can be handled over time.
+ Currently, the throttling mechanism is designed so that provider logic (slash meter, etc.) dictates how many `SlashPackets` can be handled over time. Committable suggestion
Suggested change
ToolsLanguageTool
|
||||||
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: | ||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -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. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider enhancing the introduction of Stride's role. The introduction of Stride as the first consumer to changeover is crucial. It might be beneficial to expand slightly on why Stride was chosen or its significance in this context to provide a clearer picture to the readers. |
||||||
|
||||||
## 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. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Clarification needed on validator synchronization. The sentence explaining the synchronization requirement for Interchain Security validators who are not part of the sovereign validator set is a bit complex. Consider rephrasing for clarity and ease of understanding. - 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.
+ Ensure that the consumer upgrade height is reached after the provider has created the new IBC client. Validators, not part of the sovereign set but responsible for running the consumer, must synchronize a full node before reaching the consumer upgrade height. Committable suggestion
Suggested change
|
||||||
|
||||||
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)). | ||||||
|
||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Clarify Terminology Consistency The phrase "replicated consumer chain" is used, which seems inconsistent with the PR's objective to replace "Replicated Security" with "Interchain Security." Please ensure terminology is consistent throughout the document to avoid confusion. |
||
|
||
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). | ||
::: | ||
Comment on lines
+238
to
+241
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Clarify Use of Power-Shaping Parameters The section mentions using power-shaping parameters to limit validator participation. It's a complex concept that might require a more detailed explanation or a dedicated section to help readers understand the implications and usage. ToolsLanguageTool
|
||
|
||
## 3. Submit an Upgrade Proposal & Prepare for Changeover | ||
|
||
This proposal should add the ccv `consumer` module to your chain. | ||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -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? | ||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Clarification on setting up new nodes post-transition. The guidance on setting up new nodes after the transition to Interchain Security is clear, but it could be beneficial to include a note or link on the specific steps or considerations for syncing with the standalone network. Would you like me to add detailed steps or a link to resources on syncing with the standalone network? |
||||||||||||||||
|
||||||||||||||||
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. | ||||||||||||||||
Comment on lines
+83
to
+85
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Clarification on the role change for standalone validators. The description of the transition of standalone validators to governors is clear. However, adding a brief explanation of what being a governor entails could enhance understanding for readers unfamiliar with the term. - 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.
+ After the first 3 blocks post-transition to Interchain Security, standalone chain validators will cease to act as validators and will transition to governors. As governors, they can still receive delegations if the consumer chain utilizes the consumer-democracy module. Governors participate in governance but do not validate blocks. Committable suggestion
Suggested change
ToolsMarkdownlint
|
||||||||||||||||
|
||||||||||||||||
**Governors DO NOT VALIDATE BLOCKS**. | ||||||||||||||||
|
||||||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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. | ||
Comment on lines
+17
to
+19
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Enhanced clarity on validator preparations. The instructions for validators to prepare for running consumer chain binaries are clear. Consider linking directly to the proposals or providing examples to aid validators in finding the relevant binaries. |
||
|
||
:::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 | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider adding a comma for clarity.
In the sentence "Note the terms slash throttling and jail throttling are synonymous, since in Interchain Security a
SlashPacket
simply jails a validator for downtime infractions," consider adding a comma after "synonymous" for better readability.Committable suggestion
Tools
LanguageTool