diff --git a/docs/docs/adrs/adr-019-permissionless-ics.md b/docs/docs/adrs/adr-019-permissionless-ics.md index 70273ee2f3..223625aaef 100644 --- a/docs/docs/adrs/adr-019-permissionless-ics.md +++ b/docs/docs/adrs/adr-019-permissionless-ics.md @@ -6,6 +6,7 @@ title: Permissionless ICS ## Changelog * 27th of June, 2024: Initial draft +* 12th of September, 2024: Updated to take into account message changes, etc. ## Status @@ -22,14 +23,9 @@ This ADR presents _Permissionless_ ICS, a way in which an [_Opt In_](adr-015-par ICS without needing a governance proposal but by simply issuing a transaction. ## Decision -In Permissionless ICS, launching an Opt In chain is **only** possible through a transaction and not through a [`MsgConsumerAddition`](https://github.com/cosmos/interchain-security/blob/v5.1.0/proto/interchain_security/ccv/provider/v1/tx.proto#L111) -proposal. Naturally, Permissionless ICS does not eliminate governance proposals, as proposals are still necessary for Top N chains. -Because of this, this ADR outlines a solution that also refactors governance proposals (i.e., `MsgConsumerAddition`, `MsgConsumerModification`, and `MsgConsumerRemoval`) -so that Top N and Opt In chains can share as much functionality as possible. -Note, that to make the distinction between governance-proposed versus transaction-launched chains clearer, in Permissionless ICS, -we can only launch, update, or stop Top N chains with governance proposals, and we can only launch, update, or stop Opt In chains with transactions. -Additionally, a Top N chain can transform to an Opt In chain through a gov proposal, but for simplicity, in this first -iteration of Permissionless, an Opt In chain cannot transform to a Top N chain. +In Permissionless ICS, launching an Opt In chain can be done by issuing a transaction. +Naturally, Permissionless ICS does not eliminate governance proposals, as proposals are still necessary for Top N chains. +Nevertheless, a Top N chain can transform to an Opt In chain through a gov proposal and vice versa. ### The Phases of a Consumer Chain @@ -40,44 +36,54 @@ with the chain. The owner of an Opt In chain is the one who signed the initial t Naturally, an Opt In chain can change its owner at any point. The owner of a Top N chain is the account of the governance module. Therefore, any changes on a Top N chain have to go through governance proposals. -A consumer chain can reside in four phases: i) _registered_, ii) _initialized_, iii) _launched_, and iv) _stopped_ phase as seen -in the diagram below: + + +A consumer chain can reside in five phases: i) _registered_, ii) _initialized_, iii) _launched_, iv) _stopped_, and +v) _deleted_ phase as seen in the diagram below: ![Phases of a consumer chain](./figures/adr19_phases_of_a_consumer_chain.png) -**Registered phase.** In the _registered phase_, a consumer chain is assigned a unique identifier that identifies a consumer chain -that can later be used to interact with the specific consumer chain (e.g., when a validator opts in on a chain). -After a chain has been registered, it can later be initialized and then launched. Specifically, Permissionless ICS introduces -a `MsgRegisterConsumer` message that can be used to register **both** Top N and Opt In consumer chains. +**Registered phase.** In the _registered phase_, a consumer chain has an assigned a unique identifier, that of `consumerId` (more on this later) +that identifies a consumer chain that is used to interact with the chain (e.g., when a validator opts in on a chain, etc.). +A chain is created and resides at the registered phase through the use of a `MsgCreateConsumer` which response contains the `consumerId`. +`MsgCreateConsumer` is the first step in creating either a Top N or an Opt In consumer chain. + +If all the optional initialization parameters are provided in `MsgCreateConsumer`, then an Opt In chain +can immediately move to the initialized phase (see below) and get scheduled to launch. +Note, however that a Top N chain needs at least two more `MsgUpdateConsumer` messages and one gov proposal to be able to launch. + In the registered phase, it is not yet known if the consumer chain would end up being a Top N or an Opt In chain and hence -the owner of the consumer chain at this phase is the one that signed the `MsgRegisterConsumer`. -Note that currently, a consumer chain is registered when first proposed through a `MsgConsumerAddition` proposal -message but with Permissionless ICS, the `MsgConsumerAddition` is deprecated and chains have to issue a `MsgRegisterConsumer` message instead. -A consumer chain in the registered phase might not launch, e.g., a later governance proposal might not pass or -the Opt In chain might never be initialized. - -**Initialized phase.** The _initialized phase_ means that the chain has set all the needed parameters to launch but has -not yet launched. To initialize an Opt In chain, the owner of the chain has to issue a `MsgInitializeConsumer` message -and potentially a `MsgUpdateConsumer` if they want to set up specific parameters (e.g., [power-shaping features](https://cosmos.github.io/interchain-security/features/power-shaping)). -Similarly, a Top N chain has to issue the same two messages (i.e, `MsgInitializeConsumer`, `MsgUpdateConsumer`) as part of a -governance proposal and if the governance proposal passes, the consumer chain is considered to be initialized. The moment -a governance proposal is proposed for a Top N chain, the owner changes to be the account of the governance module. -While in the initialized phase, an Opt In chain can choose to change the consumer chain parameters, such as `spawnTime`, etc. -by issuing a new `MsgInitializeConsumer` or `MsgUpdateConsumer` messages. -This is not the case for Top N chains, where a `MsgUpdateConsumer` can only be issued after a consumer -chain [has launched](https://github.com/cosmos/interchain-security/blob/v5.1.0/x/ccv/provider/keeper/legacy_proposal.go#L89). +the owner of the consumer chain at this phase is the one that signed the `MsgCreateConsumer`. + +**Initialized phase.** The _initialized phase_ means that the chain has set all the needed initialization parameters +to launch but has not yet launched. +If a chain in the registered phase has not yet set the initialization parameters, it can issue a `MsgUpdateConsumer` +message to set those parameters. Additionally, `MsgUpdateConsumer` can be used to set up other parameters, such as the [power-shaping parameters](https://cosmos.github.io/interchain-security/features/power-shaping). +If a chain is in the initialized phase and `MsgUpdateConsumer` is issued with spawn time being zero, the chain moves back +to the registered phase. + +In order to move a Top N chain to the initialized phase, we need to issue at least two `MsgUpdateConsumer` messages: +1. one to change the owner of the chain to be the account of the governance module; +2. another as part of a governance proposal to set the Top N. **Launched phase.** In the _launched phase_ the consumer chain is running and is consuming a subset of the validator set of the provider. When the [`spawnTime`](https://github.com/cosmos/interchain-security/blob/v5.1.0/proto/interchain_security/ccv/provider/v1/provider.proto#L57) passes and [at least one validator has opted in](https://github.com/cosmos/interchain-security/blob/v5.1.0/x/ccv/provider/keeper/proposal.go#L430) the chain can launch and moves to the launched phase. Note that a Top N chain can launch if and only if the `spawnTime` has passed and -the initialization proposal has successfully passed. While in launched phase, a consumer chain can choose to modify +the proposal with the `MsgUpdateConsumer` has successfully passed. While in launched phase, a consumer chain can choose to modify its parameters through `MsgUpdateConsumer`. Naturally, only the owner of the chain can issue `MsgUpdateConsumer`, thus for Top N chains, the chain can be updated only through a governance proposal that contains a `MsgUpdateConsumer`. +Additionally, note that after the chain moves to the launched phase, the initialization parameters cannot be updated anymore, +but general metadata and power-shaping parameters of the chain can still be updated. + +**Stopped phase.** In the _stopped phase_ the consumer chain stops receiving `VSCPacket`s. +A chain moves to the stopped phase, when the owner of the chain sends the `MsgRemoveConsumer` message. -**Stopped phase.** Lastly, the owner of a chain can choose to exit ICS by executing a `MsgRemoveConsumer`. -After some period of time (e.g., provider's unbonding period), all state related to the stopped consumer chain can be removed. -We keep track of the state of the consumer chain for some period, so that we are able to punish validators for misbehaviours +**Deleted phase.** In the _deleted phase_ the majority of the state in relation to this consumer chain is deleted from the provider. +A chain moves to the deleted phase after the chain has been stopped for an unbonding period. +We keep track of the state of the consumer chain for an unbonding period, so that we are able to punish validators for misbehaviors that occurred before the consumer chain stopped. +Additionally, we do not fully delete the whole state of this chain, so that we can still query parameters a deleted chain used to have. +This is useful for front-ends, etc. Note that everything described so far and everything that follows applies to consumer chains that transition from standalone chains as well. @@ -95,14 +101,13 @@ consumer chains with the exact same `chainId`, and it is the responsibility of t to interact with by providing the right `consumerId`. Note that with Permissionless ICS, all interactions on a consumer chain have to use the `consumerId` instead of the `chainId`. -For example, if a validator opts in on a chain using `MsgOptIn`, the validator has to provide the `consumerId`. To also provide the `consumerId` for Top N consumers chains, we store a mapping between `proposalID` to `consumerId`. This storing -takes place in the [`AfterProposalSubmission`](https://github.com/cosmos/cosmos-sdk/blob/v0.50.8/x/gov/types/hooks.go#L19) hook. -Specifically, for the equivocation evidence, we update the `MsgSubmitConsumerMisbehaviour` and `MsgSubmitConsumerDoubleVoting` messages to include the `consumerId`, -and change [Hermes](https://github.com/informalsystems/hermes) to include `consumerId` in those constructed messages as well. +For example, if a validator opts in on a chain using `MsgOptIn`, the validator has to provide the `consumerId`. +Specifically, for the equivocation evidence, we update the `MsgSubmitConsumerMisbehaviour` and `MsgSubmitConsumerDoubleVoting` +messages to include the `consumerId`, and modify [Hermes](https://github.com/informalsystems/hermes) +to include `consumerId` in those constructed messages as well. Hermes can find out the `consumerId` by querying the provider's `clientId` for some consumer chain (i.e., `query ccvconsumer provider-info`) -and then asking the provider chain for the `consumerId` that corresponds to this `clientId`. To do this, we need to store -the `clientId` to `consumerId` association on the provider and introduce a query to retrieve the `clientId` -given the `consumerId`. +and then asking the provider chain for the `consumerId` that corresponds to this `clientId`. To do this, we store +the `clientId` to `consumerId` association on the provider and introduce a query to retrieve the `clientId` given the `consumerId`. #### State As a result of using `consumerId`, we have to migrate a substantial chunk of state to re-index it using `consumerId` as the key. @@ -142,199 +147,206 @@ or a combination of them. Everything stored under one of the above keys is associated with a `chainId` and has to be migrated to new state under a `consumerId`. ### New Messages -In this section, we describe the new messages (i.e., `MsgRegisterConsumer`, `MsgInitializeConsumer`, `MsgUpdateConsumer` and `MsgRemoveConsumer`) -that Permissionless ICS introduces. -Then, we describe how to utilize these messages with our existing codebase. +In this section, we describe the new messages (i.e., `MsgCreateConsumer`, `MsgUpdateConsumer`, and `MsgRemoveConsumer`) that Permissionless ICS introduces. -#### Register a Consumer Chain -We first have to register a chain before launching it, irrespectively of whether it is Top N or Opt In. +#### Create a Consumer Chain +We first have to create a chain before launching it, irrespectively of whether it is Top N or Opt In. This is done through the following message: ```protobuf -message MsgRegisterConsumer { - // the registration record that contains information for the registered chain - ConsumerRegistrationRecord registration_record; -} -``` +message MsgCreateConsumer { + option (cosmos.msg.v1.signer) = "submitter"; -where `ConsumerRegistrationRecord` contains information about the to-be-launched consumer chain before it launches. + // Submitter address. If the message is successfully handled, the ownership of + // the consumer chain will given to this address. + string submitter = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; -```protobuf -message ConsumerRegistrationRecord { - // the title of the chain to-be-registered - string title; - // the description of the chain to-be-registered - string description; // the chain id of the new consumer chain - string chain_id; -} -``` + string chain_id = 2; -This response of this message contains a single `string`, that is the `consumerId` for this registered consumer chain and sets -a consumer chain in its registered phase. With the returned `consumerId`, validators can already opt in on the consumer -chain to show their potential interest on the chain. + ConsumerMetadata metadata = 3 [ (gogoproto.nullable) = false ]; -The owner of the consumer chain is the one that signed the `MsgRegisterConsumer` message. + ConsumerInitializationParameters initialization_parameters = 4; -To prevent an attacker spamming the system by creating bogus consumer chains, we set a fixed cost for sending a `MsgRegisterConsumer` (configurable via a parameter). + PowerShapingParameters power_shaping_parameters = 5; +} +``` -#### Initialize a Consumer Chain -To move an Opt In consumer chain to its initialized phase, we issue a `MsgInitializeConsumer` message that is as follows: +Note that `metadata` is a required field, while the `initialization_parameterrs` and `power_shaping_parameters` are optional and can later be set using `MsgUpdateConsumer`. +`metadata` is of the following type: ```protobuf -message MsgInitializeConsumer { - // consumer id of the to-be-initialized consumer chain - string consumer_id; - // the initialization record that contains initialization parameters for the upcoming chain - ConsumerInitializationRecord initialization_record; +message ConsumerMetadata { + // the name of the chain + string name = 1; + // the description of the chain + string description = 2; + // the metadata (e.g., GitHub repository URL) of the chain + string metadata = 3; } ``` -where `ConsumerInitializationRecord` contains the following: + +`initialization_parameters` is of the following type and if all are provided the chain is scheduled to launch: ```protobuf -message ConsumerInitializationRecord { +// ConsumerInitializationParameters are the parameters needed to launch a chain +message ConsumerInitializationParameters { // ---------- ---------- ---------- // Following fields are used when the consumer chain launches and are not needed by the provider afterwards. // ---------- ---------- ---------- - + // the proposed initial height of new consumer chain. // For a completely new chain, this will be {0,1}. However, it may be // different if this is a chain that is converting to a consumer chain. - ibc.core.client.v1.Height initial_height; + ibc.core.client.v1.Height initial_height = 1 [ (gogoproto.nullable) = false ]; // The hash of the consumer chain genesis state without the consumer CCV // module genesis params. It is used for off-chain confirmation of // genesis.json validity by validators and other parties. - bytes genesis_hash; + bytes genesis_hash = 2; // The hash of the consumer chain binary that should be run by validators on // chain initialization. It is used for off-chain confirmation of binary // validity by validators and other parties. - bytes binary_hash; + bytes binary_hash = 3; // spawn time is the time on the provider chain at which the consumer chain // genesis is finalized and all validators will be responsible for starting // their consumer chain validator node. - google.protobuf.Timestamp spawn_time; + google.protobuf.Timestamp spawn_time = 4 [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; // Unbonding period for the consumer, // which should be smaller than that of the provider in general. - google.protobuf.Duration unbonding_period; + google.protobuf.Duration unbonding_period = 5 [ (gogoproto.nullable) = false, (gogoproto.stdduration) = true ]; // ---------- ---------- ---------- // Following fields are used to construct the consumer genesis of the to-be-launched consumer chain // and are set up as params on the consumer chain. Those params can then be directly modified by the consumer chain. // ---------- ---------- ---------- - + // Sent CCV related IBC packets will timeout after this duration - google.protobuf.Duration ccv_timeout_period; + google.protobuf.Duration ccv_timeout_period = 6 [ (gogoproto.nullable) = false, (gogoproto.stdduration) = true ]; // Sent transfer related IBC packets will timeout after this duration - google.protobuf.Duration transfer_timeout_period; + google.protobuf.Duration transfer_timeout_period = 7 [ (gogoproto.nullable) = false, (gogoproto.stdduration) = true ]; // The fraction of tokens allocated to the consumer redistribution address // during distribution events. The fraction is a string representing a // decimal number. For example "0.75" would represent 75%. - string consumer_redistribution_fraction; + string consumer_redistribution_fraction = 8; // BlocksPerDistributionTransmission is the number of blocks between // ibc-token-transfers from the consumer chain to the provider chain. On // sending transmission event, `consumer_redistribution_fraction` of the // accumulated tokens are sent to the consumer redistribution address. - int64 blocks_per_distribution_transmission; + int64 blocks_per_distribution_transmission = 9; // The number of historical info entries to persist in store. // This param is a part of the cosmos sdk staking module. In the case of // a ccv enabled consumer chain, the ccv module acts as the staking module. - int64 historical_entries; + int64 historical_entries = 10; // The ID of a token transfer channel used for the Reward Distribution // sub-protocol. If DistributionTransmissionChannel == "", a new transfer // channel is created on top of the same connection as the CCV channel. // Note that transfer_channel_id is the ID of the channel end on the consumer // chain. it is most relevant for chains performing a sovereign to consumer // changeover in order to maintain the existing ibc transfer channel - string distribution_transmission_channel; + string distribution_transmission_channel = 11; } ``` -`ConsumerInitializationRecord` contains _almost_ everything that is contained in [`MsgConsumerAddition`](https://github.com/cosmos/interchain-security/blob/v5.1.0/proto/interchain_security/ccv/provider/v1/tx.proto#L111). -Note that as part of this work, we deprecate [`ConsumerAdditionProposal`](https://github.com/cosmos/interchain-security/blob/v5.1.0/proto/interchain_security/ccv/provider/v1/provider.proto#L30). - -For each `consumerId`, we store its corresponding `ConsumerInitializationRecord`. For Top N chains, we can perform this -store by using the [`AfterProposalVotingPeriodEnded`](https://github.com/cosmos/cosmos-sdk/blob/v0.50.8/x/gov/types/hooks.go#L52). - -Note that we need to extensively check the fields of the provided `ConsumerInitializationRecord` to guarantee that no consumer -chain launches with problematic parameters (e.g., we need to have maximum length for the `chainId`, etc.). -As a starter we look into the [usual validity conditions](https://github.com/cosmos/interchain-security/blob/v5.1.0/x/ccv/provider/types/msg.go#L244). +`power_shaping_parameters` is of the following type: +```protobuf +// PowerShapingParameters contains parameters that shape the validator set that we send to the consumer chain +message PowerShapingParameters { + // 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. + uint32 top_N = 1; + // `validators_power_cap` 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, no validator can have more than 32% of the total voting power of the + // consumer chain. The power cap is intended as a safeguard against a validator having too much power on the consumer + // chain and hence "taking over" the consumer chain. + uint32 validators_power_cap = 2; + // 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. + uint32 validator_set_cap = 3; + // corresponds to a list of provider consensus addresses of validators that are the ONLY ones that can validate the consumer chain + repeated string allowlist = 4; + // corresponds to a list of provider consensus addresses of validators that CANNOT validate the consumer chain + repeated string denylist = 5; + // Corresponds to the minimal amount of (provider chain) stake required to validate on the consumer chain. + uint64 min_stake = 6; + // Corresponds to whether inactive validators are allowed to validate the consumer chain. + bool allow_inactive_vals = 7; +} -For all chains in the initialized phase, we keep a mapping between `consumerId` and the underlying `ConsumerInitializationRecord`. -This way, we can respond to queries that ask for all the consumer chain's parameters. For example, retrieving the -`spawn_time` of consumer chain with a given `consumerId`. +``` -`MsgInitializeConsumer` can be executed multiple times for the same Opt In consumer chain during its initialized phase -to potentially change its to-be-launched parameters (e.g., `spawnTime`). +This `MsgCreateConsumerResponse` response contains a single `string` that is the `consumerId` for this registered consumer chain -A Top N can move to the initialized phase only if the owner of the registered chain issues a governance proposal -with two messages, `MsgInitializeConsumer` and `MsgUpdateConsumer`, and the proposal passes. +#### Update a Consumer Chain +We can issue a `MsgUpdateConsumer` at any point during the registered, initialized, or launched phase of a chain to +update parameters of the consumer chain. -#### Modify a Consumer Chain -We reuse the [MsgConsumerModification](https://github.com/cosmos/interchain-security/blob/v5.1.0/proto/interchain_security/ccv/provider/v1/tx.proto#L294) -message to update parameters of an Opt In chain that is in its initialized or launched phase, but rename the message -to `MsgUpdateConsumer`. This message can only be executed by the owner of a consumer -chain and hence only the owner can change the parameters (e.g., `validators_power_cap`, `allowlist`, etc.) -of the consumer chain. Recall that if the consumer chain is a Top N chain, then the owner is the address of the -governance account. +The `MsgUpdateConsumer` message is as follows: -We refactor `MsgUpdateConsumer` to be as follows: ```protobuf message MsgUpdateConsumer { - // consumer id of the to-be-updated consumer chain - string consumer_id; - ConsumerUpdateRecord update_record; -} -``` + option (cosmos.msg.v1.signer) = "owner"; -where `ConsumerUpdateRecord` contains the following: -``` -message ConsumerUpdateRecord { - // `owner_address` cannot be modified by a Top N chain, unless it moves to an Opt In chain (i.e., `top_N == 0`) - string owner_address; - uint32 top_N; - uint32 validators_power_cap; - uint32 validator_set_cap; - repeated string allowlist; - repeated string denylist; + // the address of the owner of the consumer chain to be updated + string owner = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // the consumer id of the consumer chain to be updated + string consumer_id = 2; + + // the new owner of the consumer when updated + string new_owner_address = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // the metadata of the consumer when updated + ConsumerMetadata metadata = 4; + + // initialization parameters can only be updated before a chain has launched + ConsumerInitializationParameters initialization_parameters = 5; + + // the power-shaping parameters of the consumer when updated + PowerShapingParameters power_shaping_parameters = 6; } ``` -Note, that even though a consumer chain is initialized with all the arguments in `ConsumerUpdateRecord`, -the `MsgUpdateConsumer` updates only the `owner_address` and the `consumer_update_record`. This is because -all the other arguments are either useless (e.g., `spawnTime`) after a chain has started, or can be updated directly -by the consumer chain params (e.g., `consumer_redistribution_fraction`). +Note that we need to extensively check the fields of the provided `ConsumerInitializationParameters` to guarantee that no consumer chain launches with problematic parameters. + +For all consumer chains, irrespectively of their phase (even in the deleted phase), we keep a mapping between `consumerId` +and the underlying `ConsumerMetadata`, `ConsumerInitializationParameters` and `PowerShapingParameters`. +This way, we can respond to queries that ask for all the consumer chain's parameters. For example, retrieving the `spawn_time` of consumer chain with a given `consumerId`. + +`MsgUpdateConsumer` can be executed multiple times for the same Opt In consumer chain during its initialized phase +to potentially change its to-be-launched parameters (e.g., `spawnTime`). + #### Remove (Stop) a Consumer Chain -We reuse the `MsgConsumerRemoval` (renamed to `MsgRemoveConsumer`) so we can stop any Opt In chain at any point in time. +We introduce the `MsgRemoveConsumer` message so that we can stop any Opt In chain at any point in time. Note that all relevant state for this consumer chain remains on the provider's state before getting removed after the time of an unbonding period (of the provider) has passed. This is to enable potential slashing for any infraction that might have been incurred until now. Note however that we never recycle previously-used `consumerId`s. Naturally, this message can only be issued by the owner of the consumer chain. ```protobuf message MsgRemoveConsumer { - // the consumerId as returned by `MsgRegisterConsumer` - string consumer_id; - // the time on the provider chain at which all validators are responsible to - // stop their consumer chain validator node - google.protobuf.Timestamp stop_time; + option (cosmos.msg.v1.signer) = "owner"; + + // the consumer id of the consumer chain to be stopped + string consumer_id = 1; + // the address of the owner of the consumer chain to be stopped + string owner = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; } ``` #### Examples of Launching a Consumer Chain -The figures below depict some examples of some of the phases a consumer chain resides in to launch. +The figures below depict some examples of some of the phases a consumer chain resides before launching. ![Examples of a launching consumer chain](./figures/adr19_flows_of_launching_a_consumer_chain.png) ### Additional Modifications We need to perform multiple migrations. All state needs to be reindex based on a `consumerId` instead of the `chainId`. -Because we only have two consumer chains at the moment, this is not going to be an expensive migration even if we have some live -consumer chains that are being voted upon. Similarly, all the messages, queries, etc. would need to be changed to operate on a `consumerId` -instead of a `chainId`. - -To prevent a validator from accidentally opting in to a wrong chain, we disallow a validator from opting in to two or more -different chains (different `consumerId`) with the same `chainId`. +Because we only have two consumer chains (i.e., Neutron and Stride) at the moment, this is not going to be an expensive migration even if we have some live +consumer chains that are being voted upon. Similarly, all the messages, queries, etc. would need to be changed to operate on a `consumerId` instead of a `chainId`. -It is **important** to migrate any ongoing `ConsumerAdditionProposal`s when we upgrade before we actually deprecate `ConsumerAdditionProposal`s. +It is **important** to migrate any live proposals, such as `ConsumerAdditionProposal`s and `MsgConsumerAddition`s, etc. +when we upgrade before we actually deprecate `ConsumerAdditionProposal`s, `MsgConsumerAddition`s, etc. ## Consequences @@ -342,7 +354,7 @@ It is **important** to migrate any ongoing `ConsumerAdditionProposal`s when we u - Easier to launch an Opt In consumer chain because no governance is required. ### Negative -- Extensive migration and overhaul of existing code base (as part of API-breaking changes) that could lead to bugs and more work in auditing this. +- Extensive migration and overhaul of existing code base (as part of API-breaking changes) that could lead to bugs. ## References diff --git a/docs/docs/adrs/figures/adr19_flows_of_launching_a_consumer_chain.excalidraw b/docs/docs/adrs/figures/adr19_flows_of_launching_a_consumer_chain.excalidraw index 4e9c57cce0..dab0fda469 100644 --- a/docs/docs/adrs/figures/adr19_flows_of_launching_a_consumer_chain.excalidraw +++ b/docs/docs/adrs/figures/adr19_flows_of_launching_a_consumer_chain.excalidraw @@ -5,8 +5,8 @@ "elements": [ { "type": "ellipse", - "version": 432, - "versionNonce": 656013628, + "version": 532, + "versionNonce": 2127784039, "index": "a1", "isDeleted": false, "id": "SI0HtgaAMGQsMr1Y7bXrA", @@ -16,8 +16,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 512.4765625, - "y": 248.29980468749991, + "x": 771.7768101892256, + "y": 223.07001548901079, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 143.13281250000014, @@ -38,18 +38,30 @@ "type": "arrow" }, { - "id": "qIMMSItT6zGcYO5ZUPcar", + "id": "QJHjyYDxam9jq3ifrE6rE", + "type": "arrow" + }, + { + "id": "j2LU4pG8RRialcQ5UiLt8", + "type": "arrow" + }, + { + "id": "JQNfOufG1Sc3Ln1iHc6v8", + "type": "arrow" + }, + { + "id": "N97DnWZ0c8Ae4DOO-8yVa", "type": "arrow" } ], - "updated": 1721898441262, + "updated": 1726050284845, "link": null, "locked": false }, { "type": "text", - "version": 772, - "versionNonce": 276787644, + "version": 860, + "versionNonce": 415430025, "index": "a1V", "isDeleted": false, "id": "A97toxLGgigcGTMSLzFRE", @@ -59,8 +71,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 547.7299002905518, - "y": 306.9585237065766, + "x": 807.0301479797774, + "y": 281.7287345080874, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 72.41595458984375, @@ -70,7 +82,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721898441262, + "updated": 1726050284846, "link": null, "locked": false, "fontSize": 16, @@ -85,8 +97,8 @@ }, { "type": "ellipse", - "version": 225, - "versionNonce": 1063465660, + "version": 314, + "versionNonce": 1013605129, "index": "a2", "isDeleted": false, "id": "y5DOCeanki7NLMac-YZU_", @@ -96,8 +108,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 963.30078125, - "y": 252.48730468749994, + "x": 1222.6010289392257, + "y": 227.2575154890108, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 113.27734375, @@ -126,14 +138,14 @@ "type": "arrow" } ], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false }, { "type": "text", - "version": 69, - "versionNonce": 241531708, + "version": 157, + "versionNonce": 152771049, "index": "a2G", "isDeleted": false, "id": "_lR4nCPdco_VXP-hHHxFx", @@ -143,18 +155,18 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 987.2738821091236, - "y": 299.07638760228764, + "x": 1246.102123775419, + "y": 273.8465984037985, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 65.23196411132812, + "width": 66.17597615718842, "height": 20, "seed": 2116710579, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, @@ -169,8 +181,8 @@ }, { "type": "text", - "version": 818, - "versionNonce": 352917936, + "version": 1431, + "versionNonce": 150121895, "index": "a4", "isDeleted": false, "id": "-Ezkh_kc6H-iZ8_N1SUwz", @@ -180,11 +192,11 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 728.4853515625, - "y": 18.888671874999943, + "x": 983.386778835841, + "y": 108.79742731097753, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 462.22369116544724, + "width": 235.31186291575432, "height": 40, "seed": 176740147, "groupIds": [], @@ -192,27 +204,27 @@ "roundness": null, "boundElements": [ { - "id": "JQNfOufG1Sc3Ln1iHc6v8", + "id": "N97DnWZ0c8Ae4DOO-8yVa", "type": "arrow" } ], - "updated": 1721977797787, + "updated": 1726050312788, "link": null, "locked": false, "fontSize": 16, "fontFamily": 1, - "text": "proposal with MsgInitializeConsumer & MsgUpdateConsumer\nto start a Top N chain", + "text": "MsgUpdateConsumer\nwith spawnTime equal to zero", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "proposal with MsgInitializeConsumer & MsgUpdateConsumer\nto start a Top N chain", + "originalText": "MsgUpdateConsumer\nwith spawnTime equal to zero", "autoResize": true, "lineHeight": 1.25 }, { "type": "arrow", - "version": 3380, - "versionNonce": 1334694320, + "version": 4622, + "versionNonce": 814212937, "index": "a5", "isDeleted": false, "id": "JQNfOufG1Sc3Ln1iHc6v8", @@ -222,12 +234,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 863.2801567822762, - "y": 66.26969410176584, + "x": 648.7370047256345, + "y": 424.1658784400093, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 208.7131111905685, - "height": 55.219229040456455, + "width": 141.93009003618454, + "height": 78.07171803211321, "seed": 428750077, "groupIds": [], "frameId": null, @@ -235,18 +247,20 @@ "type": 2 }, "boundElements": [], - "updated": 1721977807991, + "updated": 1726050284846, "link": null, "locked": false, "startBinding": { - "elementId": "-Ezkh_kc6H-iZ8_N1SUwz", - "focus": 0.14349370214591656, - "gap": 7.381022226765893 + "elementId": "Q1md4XcAv126O3dfBiN4f", + "focus": -0.2038346885415893, + "gap": 5.242515925555523, + "fixedPoint": null }, "endBinding": { - "elementId": "_VXIQppCSNb6MIFQLmDdy", - "focus": 0.1824872496377905, - "gap": 2.2713741813428783 + "elementId": "SI0HtgaAMGQsMr1Y7bXrA", + "focus": -0.39568912311860743, + "gap": 5.4589315614547615, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -257,19 +271,19 @@ 0 ], [ - -106.6058242763097, - 51.06445336557442 + 57.26497357228686, + -39.415334062629256 ], [ - -208.7131111905685, - 55.219229040456455 + 141.93009003618454, + -78.07171803211321 ] ] }, { "type": "text", - "version": 1068, - "versionNonce": 1922126672, + "version": 1228, + "versionNonce": 167774729, "index": "a6", "isDeleted": false, "id": "9NwhWEx9olM4fARFt5hZe", @@ -279,11 +293,11 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 189.74827575683594, - "y": -17.066406250000057, + "x": 448.8316259773526, + "y": -41.84058323285862, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 308.01581835746765, + "width": 297.9358012676239, "height": 80, "seed": 304812115, "groupIds": [], @@ -295,23 +309,23 @@ "type": "arrow" } ], - "updated": 1721977650326, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, "fontFamily": 1, - "text": "tx to register\nan Opt In or Top N consumer chain\n(MsgRegisterConsumer)\nowner = signer of MsgRegisterConsumer", + "text": "MsgCreateConsumer tx to create\na consumer chain\nreturns consumer id and sets\nowner = signer of MsgCreateConsumer", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "tx to register\nan Opt In or Top N consumer chain\n(MsgRegisterConsumer)\nowner = signer of MsgRegisterConsumer", + "originalText": "MsgCreateConsumer tx to create\na consumer chain\nreturns consumer id and sets\nowner = signer of MsgCreateConsumer", "autoResize": true, "lineHeight": 1.25 }, { "type": "arrow", - "version": 331, - "versionNonce": 1834637060, + "version": 599, + "versionNonce": 528975175, "index": "a7", "isDeleted": false, "id": "zeENeKW4p1ce_DWzf-29f", @@ -321,12 +335,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 663.2551165518071, - "y": 319.75738423211857, + "x": 922.3425612452737, + "y": 294.52759503362944, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 299.31331302963645, - "height": 5.083241028410356, + "width": 299.52611602539537, + "height": 5.0832410284103275, "seed": 783684445, "groupIds": [], "frameId": null, @@ -334,18 +348,20 @@ "type": 2 }, "boundElements": [], - "updated": 1721898441294, + "updated": 1726050249829, "link": null, "locked": false, "startBinding": { "elementId": "9VJjnsFNvss8g8B_wchEr", - "focus": -1.1953607235764194, - "gap": 6.181092330381375 + "focus": -1.1953598980155133, + "gap": 6.181092330381375, + "fixedPoint": null }, "endBinding": { "elementId": "y5DOCeanki7NLMac-YZU_", - "focus": -0.08074296871041202, - "gap": 1.0000000000000995 + "focus": -0.08075520534393367, + "gap": 1.0000000000000995, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -356,15 +372,15 @@ 0 ], [ - 299.31331302963645, - -5.083241028410356 + 299.52611602539537, + -5.0832410284103275 ] ] }, { "type": "text", - "version": 418, - "versionNonce": 1250834364, + "version": 507, + "versionNonce": 1538095785, "index": "a8", "isDeleted": false, "id": "9VJjnsFNvss8g8B_wchEr", @@ -374,11 +390,11 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 669.0216369628906, - "y": 325.93847656249994, + "x": 928.0956739608208, + "y": 300.7086873640108, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 252.0958709716797, + "width": 252.1118765771389, "height": 60, "seed": 1053753011, "groupIds": [], @@ -390,7 +406,7 @@ "type": "arrow" } ], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, @@ -405,8 +421,8 @@ }, { "type": "text", - "version": 417, - "versionNonce": 7026096, + "version": 717, + "versionNonce": 841720937, "index": "aF", "isDeleted": false, "id": "FgsFB8OrGtx1-nlYRY0Uz", @@ -416,12 +432,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 1100.889877319336, - "y": 155.14941406249994, + "x": 1351.7906070419108, + "y": 95.33423008674612, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 229.75984984636307, - "height": 40, + "width": 256.6558837890625, + "height": 80, "seed": 51301117, "groupIds": [], "frameId": null, @@ -432,23 +448,23 @@ "type": "arrow" } ], - "updated": 1721979486389, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, "fontFamily": 1, - "text": "MsgUpdateConsumer for both\nTop N and Opt In chains", + "text": "MsgUpdateConsumer for both\nTop N and Opt In chains\n(initialization parameters cannot\nbe updated at this phase)", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "MsgUpdateConsumer for both\nTop N and Opt In chains", + "originalText": "MsgUpdateConsumer for both\nTop N and Opt In chains\n(initialization parameters cannot\nbe updated at this phase)", "autoResize": true, "lineHeight": 1.25 }, { "type": "arrow", - "version": 936, - "versionNonce": 1806394884, + "version": 1116, + "versionNonce": 148774791, "index": "aG", "isDeleted": false, "id": "hoUATc742qsSXGtb3zXhk", @@ -458,8 +474,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 1043.1909748738744, - "y": 254.20084659464027, + "x": 1302.4912225631, + "y": 228.97105739615114, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 81.51926732005495, @@ -471,18 +487,20 @@ "type": 2 }, "boundElements": [], - "updated": 1721898441295, + "updated": 1726050249829, "link": null, "locked": false, "startBinding": { "elementId": "y5DOCeanki7NLMac-YZU_", "focus": -0.6276577497929622, - "gap": 3.005298194275724 + "gap": 3.005298194275724, + "fixedPoint": null }, "endBinding": { "elementId": "y5DOCeanki7NLMac-YZU_", "focus": 0.6500438788511836, - "gap": 6.714013400352123 + "gap": 6.714013400352123, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -504,8 +522,8 @@ }, { "type": "ellipse", - "version": 356, - "versionNonce": 411466172, + "version": 405, + "versionNonce": 1325030953, "index": "aK", "isDeleted": false, "id": "U2EhanfFFSg1GNh4uQ9Xo", @@ -515,8 +533,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 973.2587890625, - "y": 528.0859375, + "x": 1232.5590367517257, + "y": 502.85614830151087, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 113.27734375, @@ -535,16 +553,20 @@ { "id": "6m4pEWBrlMrOpXdR2qMdd", "type": "arrow" + }, + { + "id": "R77lEhp763M3wxU4R4AUu", + "type": "arrow" } ], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false }, { "type": "text", - "version": 209, - "versionNonce": 294117948, + "version": 257, + "versionNonce": 977187081, "index": "aL", "isDeleted": false, "id": "RfEXevpkB5rowEFa4mHDD", @@ -554,8 +576,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 999.7359029831471, - "y": 574.6750204147877, + "x": 1259.0361506723725, + "y": 549.4452312162986, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 60.22393798828125, @@ -565,7 +587,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, @@ -580,8 +602,8 @@ }, { "type": "arrow", - "version": 518, - "versionNonce": 1178907908, + "version": 745, + "versionNonce": 142813639, "index": "aM", "isDeleted": false, "id": "6m4pEWBrlMrOpXdR2qMdd", @@ -591,8 +613,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 1027.530607098985, - "y": 367.313746063125, + "x": 1286.8308547882107, + "y": 342.08395686463587, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 1.0811756614666592, @@ -604,18 +626,20 @@ "type": 2 }, "boundElements": [], - "updated": 1721898441295, + "updated": 1726050249830, "link": null, "locked": false, "startBinding": { "elementId": "y5DOCeanki7NLMac-YZU_", "focus": -0.1267451224869414, - "gap": 2.042177966448442 + "gap": 2.042177966448442, + "fixedPoint": null }, "endBinding": { "elementId": "U2EhanfFFSg1GNh4uQ9Xo", "focus": -0.014589591451189068, - "gap": 8.198352788681127 + "gap": 8.198352788681127, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -633,8 +657,8 @@ }, { "type": "ellipse", - "version": 1043, - "versionNonce": 1743463856, + "version": 1155, + "versionNonce": 1589189255, "index": "aP", "isDeleted": false, "id": "_VXIQppCSNb6MIFQLmDdy", @@ -644,8 +668,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 527.1933593750001, - "y": 49.049845487915945, + "x": 786.4936070642257, + "y": 23.820056289426816, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 125.71093750000004, @@ -662,7 +686,7 @@ "id": "ND9wpVssAkaXAtA1CWR-j" }, { - "id": "qIMMSItT6zGcYO5ZUPcar", + "id": "NAUT1CeeaW6ntAtOKbXGS", "type": "arrow" }, { @@ -670,22 +694,26 @@ "type": "arrow" }, { - "id": "NAUT1CeeaW6ntAtOKbXGS", + "id": "m_qDO-vi8cZvgdBk4OY4b", + "type": "arrow" + }, + { + "id": "j2LU4pG8RRialcQ5UiLt8", "type": "arrow" }, { - "id": "SP-m3QTzlcLoU-_bmfZeN", + "id": "N97DnWZ0c8Ae4DOO-8yVa", "type": "arrow" } ], - "updated": 1721977737205, + "updated": 1726050304509, "link": null, "locked": false }, { "type": "text", - "version": 1438, - "versionNonce": 303490108, + "version": 1530, + "versionNonce": 56748905, "index": "aQ", "isDeleted": false, "id": "ND9wpVssAkaXAtA1CWR-j", @@ -695,18 +723,18 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 550.919332346884, - "y": 102.6403917713115, + "x": 810.1715739932714, + "y": 77.41060257282237, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 78.36793518066406, + "width": 78.46394726634026, "height": 20, "seed": 704059075, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, @@ -721,102 +749,8 @@ }, { "type": "arrow", - "version": 2498, - "versionNonce": 1811695536, - "index": "aR", - "isDeleted": false, - "id": "qIMMSItT6zGcYO5ZUPcar", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 598.616944950635, - "y": 175.68190954353736, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 95.2174182195338, - "height": 71.14063431860131, - "seed": 711212803, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1721977823250, - "link": null, - "locked": false, - "startBinding": { - "elementId": "_VXIQppCSNb6MIFQLmDdy", - "focus": 0.7831196417981204, - "gap": 1 - }, - "endBinding": { - "elementId": "SI0HtgaAMGQsMr1Y7bXrA", - "focus": -0.9808503194655256, - "gap": 2.5866858268130386 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 93.66378808277591, - 56.75434794509022 - ], - [ - -1.5536301367578846, - 71.14063431860131 - ] - ] - }, - { - "type": "text", - "version": 894, - "versionNonce": 1163437392, - "index": "aS", - "isDeleted": false, - "id": "tONaGSodwA-i1Tr_ZvpZf", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 703.2325744628906, - "y": 211.6659109933036, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 63.951934814453125, - "height": 40, - "seed": 1173975117, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1721977821204, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "proposal\npasses", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "proposal\npasses", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 2698, - "versionNonce": 1501320528, + "version": 3037, + "versionNonce": 1369089031, "index": "aW", "isDeleted": false, "id": "NAUT1CeeaW6ntAtOKbXGS", @@ -826,12 +760,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 295.2339916085824, - "y": 72.54770775067982, + "x": 553.1384527777011, + "y": 47.773530767821256, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 219.9931787394372, - "height": 44.86816430307441, + "width": 221.38896708122923, + "height": 44.41255208744384, "seed": 713565901, "groupIds": [], "frameId": null, @@ -839,18 +773,20 @@ "type": 2 }, "boundElements": [], - "updated": 1721977650641, + "updated": 1726050249830, "link": null, "locked": false, "startBinding": { "elementId": "9NwhWEx9olM4fARFt5hZe", - "focus": 0.5220455825778929, - "gap": 9.614114000679876 + "focus": 0.5220455825778916, + "gap": 9.614114000679876, + "fixedPoint": null }, "endBinding": { "elementId": "_VXIQppCSNb6MIFQLmDdy", - "focus": -0.040896091175469475, - "gap": 12.037638560264035 + "focus": -0.040896091175469856, + "gap": 12.037636739548553, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -861,19 +797,19 @@ 0 ], [ - 49.778852818030145, - 44.86816430307441 + 51.17463933813707, + 44.41255208744384 ], [ - 219.9931787394372, - 43.27181702781314 + 221.38896708122923, + 42.816204795098 ] ] }, { "type": "arrow", - "version": 2638, - "versionNonce": 2034843580, + "version": 3087, + "versionNonce": 566058089, "index": "aX", "isDeleted": false, "id": "QJHjyYDxam9jq3ifrE6rE", @@ -883,12 +819,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 553.4126684100163, - "y": 172.7898695168439, + "x": 697.4210919436294, + "y": 300.5362697963811, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 88.24899059693328, - "height": 80.70767694042144, + "width": 75.69751607798696, + "height": 8.95566651750147, "seed": 901908284, "groupIds": [], "frameId": null, @@ -896,11 +832,21 @@ "type": 2 }, "boundElements": [], - "updated": 1721898441262, + "updated": 1726050284846, "link": null, "locked": false, - "startBinding": null, - "endBinding": null, + "startBinding": { + "elementId": "tFQW2gbsKLsAOyWilxj8K", + "focus": -0.5307859100334217, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "SI0HtgaAMGQsMr1Y7bXrA", + "focus": -0.27409789074639723, + "gap": 1, + "fixedPoint": null + }, "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow", @@ -910,19 +856,19 @@ 0 ], [ - -87.03045455607186, - 30.651422159720436 + 38.56608047950999, + 8.282718428377393 ], [ - 1.218536040861423, - 80.70767694042144 + 75.69751607798696, + 8.95566651750147 ] ] }, { "type": "text", - "version": 954, - "versionNonce": 1840703408, + "version": 1541, + "versionNonce": 138472711, "index": "aY", "isDeleted": false, "id": "OSTXsQ9rLudhM8FpW1Tmi", @@ -932,34 +878,39 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 237.52793884277344, - "y": 181.43050856817348, + "x": 633.9915232693937, + "y": 154.06076726030597, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 220.76788437366486, + "width": 190.46388244628906, "height": 60, "seed": 1590512260, "groupIds": [], "frameId": null, "roundness": null, - "boundElements": [], - "updated": 1721981417956, + "boundElements": [ + { + "id": "j2LU4pG8RRialcQ5UiLt8", + "type": "arrow" + } + ], + "updated": 1726050249830, "link": null, "locked": false, "fontSize": 16, "fontFamily": 1, - "text": "tx to initialize a registered\nOpt In chain\n(MsgInitializeConsumer)", + "text": "chain contains enough\ninitialization parameters\nto launch", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "tx to initialize a registered\nOpt In chain\n(MsgInitializeConsumer)", + "originalText": "chain contains enough\ninitialization parameters\nto launch", "autoResize": true, "lineHeight": 1.25 }, { "type": "text", - "version": 618, - "versionNonce": 1408338864, + "version": 755, + "versionNonce": 1625918345, "index": "aZ", "isDeleted": false, "id": "YfLjGiz8pwcgaeYLbqk17", @@ -969,158 +920,27 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 1046.5860595703125, - "y": 407.42009190150674, + "x": 1305.145518981793, + "y": 382.6808246707136, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 198.86389088630676, + "width": 155.67990905046463, "height": 40, "seed": 200186756, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721977871422, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "MsgRemoveConsumer for\nTop N and Opt In chains", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "MsgRemoveConsumer for\nTop N and Opt In chains", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 1258, - "versionNonce": 1493934000, - "index": "aa", - "isDeleted": false, - "id": "NssF2iYfl_Bnw_ExbSTN9", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 5.903783783236146, - "x": 738.4366388875179, - "y": 102.0454511378703, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 188.03873574733734, - "height": 38.94856770833333, - "seed": 1513132976, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1721979493173, - "link": null, - "locked": false, - "fontSize": 15.579427083333332, - "fontFamily": 1, - "text": "If proposal submitted,\nthen owner = gov module", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "If proposal submitted,\nthen owner = gov module", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 3860, - "versionNonce": 1375313744, - "index": "ab", - "isDeleted": false, - "id": "SP-m3QTzlcLoU-_bmfZeN", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 542.8449540584817, - "y": 65.3169816199927, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 107.2195285426966, - "height": 95.35691573040356, - "seed": 1371342672, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1721979518514, - "link": null, - "locked": false, - "startBinding": { - "elementId": "_VXIQppCSNb6MIFQLmDdy", - "focus": -1.0544694371314034, - "gap": 3.5954323396749857 - }, - "endBinding": { - "elementId": "_VXIQppCSNb6MIFQLmDdy", - "focus": 0.31663537700287836, - "gap": 1.9911615284421913 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 107.2195285426966, - -95.35691573040356 - ], - [ - 82.94381595386449, - -7.418196168042471 - ] - ] - }, - { - "type": "text", - "version": 1314, - "versionNonce": 863552848, - "index": "ac", - "isDeleted": false, - "id": "apwBA2F8OsZLAT7p6l1JS", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 609.4229227304459, - "y": -79.25318690708701, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 569.839707493782, - "height": 40, - "seed": 1979332528, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1721979490056, + "updated": 1726050249751, "link": null, "locked": false, "fontSize": 16, "fontFamily": 1, - "text": "If proposal fails,\nthen owner = previous owner (the one that signed MsgRegisterConsumer)", + "text": "MsgRemoveConsumer\nto stop a chain", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "If proposal fails,\nthen owner = previous owner (the one that signed MsgRegisterConsumer)", + "originalText": "MsgRemoveConsumer\nto stop a chain", "autoResize": true, "lineHeight": 1.25 }, @@ -1388,8 +1208,8 @@ }, { "type": "text", - "version": 653, - "versionNonce": 1503490480, + "version": 709, + "versionNonce": 1951456457, "index": "ak", "isDeleted": false, "id": "cJmAKusziodsDR6vwTHJd", @@ -1399,34 +1219,34 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 213.76562500000006, + "x": 213.38419313328615, "y": 1198.4617585681735, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 227.99981439113617, + "width": 240.23981308937073, "height": 50, "seed": 844025168, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980422671, + "updated": 1726142256123, "link": null, "locked": false, "fontSize": 20, "fontFamily": 1, - "text": "MsgRegisterConsumer\nto get the consumer id", + "text": "MsgCreateConsumer with\njust ConsumerMetadata", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "MsgRegisterConsumer\nto get the consumer id", + "originalText": "MsgCreateConsumer with\njust ConsumerMetadata", "autoResize": true, "lineHeight": 1.25 }, { "type": "text", - "version": 717, - "versionNonce": 40090544, + "version": 735, + "versionNonce": 1847629097, "index": "al", "isDeleted": false, "id": "GastODl-l38mFb5oaAEbj", @@ -1440,23 +1260,23 @@ "y": 1198.011929466611, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 210.61980283260345, + "width": 200.2798309326172, "height": 50, "seed": 44005200, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980422671, + "updated": 1726142242293, "link": null, "locked": false, "fontSize": 20, "fontFamily": 1, - "text": "MsgInitializeConsumer\nwith spawnTime, etc.", + "text": "MsgUpdateConsumer\nwith spawnTime, etc.", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "MsgInitializeConsumer\nwith spawnTime, etc.", + "originalText": "MsgUpdateConsumer\nwith spawnTime, etc.", "autoResize": true, "lineHeight": 1.25 }, @@ -1499,8 +1319,8 @@ }, { "type": "text", - "version": 966, - "versionNonce": 1057787824, + "version": 1005, + "versionNonce": 530080297, "index": "an", "isDeleted": false, "id": "E1QM7dtsigeuyGX9zwvE0", @@ -1514,23 +1334,23 @@ "y": 1202.250210716611, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 242.3997710943222, + "width": 227.83980405330658, "height": 50, "seed": 608854864, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980422671, + "updated": 1726142270395, "link": null, "locked": false, "fontSize": 20, "fontFamily": 1, - "text": "MsgInitializeConsumer to\nmodify spawnTime", + "text": "MsgUpdateConsumer to\nmodify spawnTime", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "MsgInitializeConsumer to\nmodify spawnTime", + "originalText": "MsgUpdateConsumer to\nmodify spawnTime", "autoResize": true, "lineHeight": 1.25 }, @@ -1960,83 +1780,155 @@ "lineHeight": 1.25 }, { - "type": "line", - "version": 771, - "versionNonce": 1263014832, - "index": "b01", + "type": "rectangle", + "version": 1364, + "versionNonce": 59020905, + "index": "b0E", "isDeleted": false, - "id": "7Bq_OzmNwUc0GxjMxTYNY", + "id": "o16fHdthOp80uqAN-KkL2", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 100, + "opacity": 60, "angle": 0, - "x": 265.25883719345677, - "y": 1666.5525788806733, + "x": 1012.839615028641, + "y": 1730.7979952143219, "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 1658.3805338541667, - "height": 0.078125, - "seed": 255347024, + "backgroundColor": "#ffec99", + "width": 415.0227864583335, + "height": 81.1279296875, + "seed": 1877485392, "groupIds": [], "frameId": null, "roundness": { - "type": 2 + "type": 3 }, - "boundElements": [], - "updated": 1721980676778, + "boundElements": [ + { + "type": "text", + "id": "348R4_XQcWAs6CAl4OV_w" + } + ], + "updated": 1726142384886, "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1658.3805338541667, - 0.078125 - ] - ] + "locked": false }, { - "type": "line", - "version": 400, - "versionNonce": 1785339312, - "index": "b02", + "type": "text", + "version": 1143, + "versionNonce": 156754249, + "index": "b0F", "isDeleted": false, - "id": "OvebgcABs_rLQivf-TBk2", + "id": "348R4_XQcWAs6CAl4OV_w", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 100, + "opacity": 60, "angle": 0, - "x": 278.3545403184568, - "y": 1610.3123445056733, + "x": 1138.9710787599697, + "y": 1758.8619600580719, "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 0, - "height": 124.8681640625, - "seed": 1510121296, + "backgroundColor": "#a5d8ff", + "width": 162.75985899567604, + "height": 25, + "seed": 352763216, "groupIds": [], "frameId": null, - "roundness": { - "type": 2 - }, + "roundness": null, "boundElements": [], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, + "fontSize": 20, + "fontFamily": 1, + "text": "Initialized phase", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "o16fHdthOp80uqAN-KkL2", + "originalText": "Initialized phase", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 938, + "versionNonce": 1346293801, + "index": "b0M", + "isDeleted": false, + "id": "jAITNaSlDtSPpvQwpBfRJ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 265.0176643494107, + "y": 1726.0264701492179, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1658.3805338541667, + "height": 0.078125, + "seed": 124954448, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1726142384886, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1658.3805338541667, + 0.078125 + ] + ] + }, + { + "type": "line", + "version": 545, + "versionNonce": 1042604809, + "index": "b0N", + "isDeleted": false, + "id": "akYH8jPOSYYHRJ0kHn6SF", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 278.11336747441084, + "y": 1669.7862357742179, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 1463893328, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1726142384886, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, "endArrowhead": null, "points": [ [ @@ -2051,31 +1943,31 @@ }, { "type": "line", - "version": 573, - "versionNonce": 750446512, - "index": "b03", + "version": 757, + "versionNonce": 1871026665, + "index": "b0O", "isDeleted": false, - "id": "4C8GcmxoE4N2CEFpbetdn", + "id": "Qds67yg8nIFlUKrTZNb8v", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 769.7332140571524, - "y": 1606.5971383768026, + "x": 541.1581716240864, + "y": 1676.6698331548605, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 0, "height": 124.8681640625, - "seed": 1158821200, + "seed": 483201872, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false, "startBinding": null, @@ -2096,31 +1988,31 @@ }, { "type": "line", - "version": 856, - "versionNonce": 1046639024, - "index": "b04", + "version": 1001, + "versionNonce": 1701606601, + "index": "b0P", "isDeleted": false, - "id": "nHS8CykAzRlhhatMaNhMu", + "id": "jtzT1eH8RZn8QwNepmt_H", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 1011.3251419415867, - "y": 1618.931674524432, + "x": 1011.0839690975406, + "y": 1678.4055657929766, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 0, "height": 124.8681640625, - "seed": 364841808, + "seed": 778971472, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false, "startBinding": null, @@ -2141,31 +2033,31 @@ }, { "type": "arrow", - "version": 626, - "versionNonce": 109624240, - "index": "b05", + "version": 793, + "versionNonce": 1937044393, + "index": "b0Q", "isDeleted": false, - "id": "Fs9vTDdorvwlcYw_ubAa_", + "id": "8lhkFCwtbNTRFlmWeRE4n", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 1833.3903476101234, - "y": 1646.4256257556733, + "x": 1833.149174766077, + "y": 1705.8995170242179, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 88.623046875, "height": 0, - "seed": 643899728, + "seed": 1467776848, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false, "startBinding": null, @@ -2186,29 +2078,29 @@ }, { "type": "text", - "version": 715, - "versionNonce": 1196803504, - "index": "b06", + "version": 860, + "versionNonce": 1841993353, + "index": "b0R", "isDeleted": false, - "id": "l3WpHc1Tm8DmkYOar2yuc", + "id": "CsZ965_KJ8mkVhd3JJHe6", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 1854.7819491726234, - "y": 1622.5682038806733, + "x": 1854.540776328577, + "y": 1682.0420951492179, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 40.63996636867523, "height": 25, - "seed": 1179678544, + "seed": 944772432, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false, "fontSize": 20, @@ -2223,135 +2115,135 @@ }, { "type": "text", - "version": 674, - "versionNonce": 1039241136, - "index": "b07", + "version": 870, + "versionNonce": 388554089, + "index": "b0S", "isDeleted": false, - "id": "HVWEVkdCna3gjxJRN-dCZ", + "id": "VptrXV13wo5wjJkN_HnlZ", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 222.7653476101235, - "y": 1547.7488679431735, + "x": 222.52417476607746, + "y": 1607.2227592117183, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 227.99981439113617, + "width": 240.23981308937073, "height": 50, - "seed": 434441552, + "seed": 641788752, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false, "fontSize": 20, "fontFamily": 1, - "text": "MsgRegisterConsumer\nto get the consumer id", + "text": "MsgCreateConsumer with\njust ConsumerMetadata", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "MsgRegisterConsumer\nto get the consumer id", + "originalText": "MsgCreateConsumer with\njust ConsumerMetadata", "autoResize": true, "lineHeight": 1.25 }, { "type": "text", - "version": 877, - "versionNonce": 1115953584, - "index": "b08", + "version": 1165, + "versionNonce": 1322993737, + "index": "b0T", "isDeleted": false, - "id": "jpeMZ5SS2jgAqO9FZB17B", + "id": "i7B5C0pGmcgSuCqx5vRQP", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 672.7954074245766, - "y": 1496.999559674944, + "x": 500.4034030640637, + "y": 1569.1232323592678, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 237.25982177257538, + "width": 226.35983031988144, "height": 100, - "seed": 2054611792, + "seed": 195494224, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false, "fontSize": 20, "fontFamily": 1, - "text": "issue governance\nproposal with\nMsgInitializeConsumer\nand MsgUpdateconsumer", + "text": "MsgUpdateConsumer\nto change the owner\nof the chain to be the\ngov module", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "issue governance\nproposal with\nMsgInitializeConsumer\nand MsgUpdateconsumer", + "originalText": "MsgUpdateConsumer\nto change the owner\nof the chain to be the\ngov module", "autoResize": true, "lineHeight": 1.25 }, { "type": "text", - "version": 907, - "versionNonce": 1748329392, - "index": "b09", + "version": 1058, + "versionNonce": 2126337833, + "index": "b0U", "isDeleted": false, - "id": "zmw1PyM5vZzw3eZp9f19w", + "id": "KtxOQmQoRm5cuPDQBNvU5", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 936.9607592922523, - "y": 1583.112840924944, - "strokeColor": "#e03131", + "x": 936.7195864482062, + "y": 1642.5867321934888, + "strokeColor": "#2f9e44", "backgroundColor": "transparent", - "width": 170.7798352241516, + "width": 156.959858417511, "height": 25, - "seed": 1448999248, + "seed": 1205491536, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false, "fontSize": 20, "fontFamily": 1, - "text": "proposal rejected", + "text": "proposal passes", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "proposal rejected", + "originalText": "proposal passes", "autoResize": true, "lineHeight": 1.25 }, { "type": "rectangle", - "version": 1152, - "versionNonce": 489516464, - "index": "b0C", + "version": 1311, + "versionNonce": 1228573193, + "index": "b0X", "isDeleted": false, - "id": "ajHAAKi9tSoXcIkv3aA4L", + "id": "aqECH_oHGd4F7Pq9jBCpa", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 60, "angle": 0, - "x": 277.09965750595677, - "y": 1665.9562654041108, + "x": 276.8584846619107, + "y": 1725.4301566726554, "strokeColor": "#1e1e1e", "backgroundColor": "#e7f5ff", - "width": 1646.6975911458337, + "width": 731.2353515625001, "height": 81.1279296875, - "seed": 948091728, + "seed": 2041829712, "groupIds": [], "frameId": null, "roundness": { @@ -2360,38 +2252,38 @@ "boundElements": [ { "type": "text", - "id": "2HQsEKAeWiKi5szJa8Io6" + "id": "J8GsOJGu4wkpH9e3dq06b" } ], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false }, { "type": "text", - "version": 916, - "versionNonce": 1251227568, - "index": "b0D", + "version": 1075, + "versionNonce": 2001625321, + "index": "b0Y", "isDeleted": false, - "id": "2HQsEKAeWiKi5szJa8Io6", + "id": "J8GsOJGu4wkpH9e3dq06b", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 60, "angle": 0, - "x": 1016.0985287529306, - "y": 1694.0202302478608, + "x": 558.1262361172178, + "y": 1753.4941215164054, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", "width": 168.699848651886, "height": 25, - "seed": 355389776, + "seed": 244068176, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false, "fontSize": 20, @@ -2399,155 +2291,157 @@ "text": "Registered phase", "textAlign": "center", "verticalAlign": "middle", - "containerId": "ajHAAKi9tSoXcIkv3aA4L", + "containerId": "aqECH_oHGd4F7Pq9jBCpa", "originalText": "Registered phase", "autoResize": true, "lineHeight": 1.25 }, { - "type": "rectangle", - "version": 1323, - "versionNonce": 515241808, - "index": "b0E", + "type": "line", + "version": 1032, + "versionNonce": 646208457, + "index": "b0Z", "isDeleted": false, - "id": "o16fHdthOp80uqAN-KkL2", + "id": "jepmnNxu-8rBXJjZKYZKQ", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, "angle": 0, - "x": 1015.8097812038734, - "y": 2025.532274518694, + "x": 1431.8448974523938, + "y": 1727.2155663313893, "strokeColor": "#1e1e1e", - "backgroundColor": "#ffec99", - "width": 415.0227864583335, - "height": 81.1279296875, - "seed": 1877485392, + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 1374274896, "groupIds": [], "frameId": null, "roundness": { - "type": 3 + "type": 2 }, - "boundElements": [ - { - "type": "text", - "id": "348R4_XQcWAs6CAl4OV_w" - } - ], - "updated": 1721980415621, + "boundElements": [], + "updated": 1726142384886, "link": null, - "locked": false + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] }, { "type": "text", - "version": 1102, - "versionNonce": 1234865488, - "index": "b0F", + "version": 1270, + "versionNonce": 922221225, + "index": "b0a", "isDeleted": false, - "id": "348R4_XQcWAs6CAl4OV_w", + "id": "prbzcGXJPRqkOVsHpdbs4", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, "angle": 0, - "x": 1141.9412449352021, - "y": 2053.596239362444, + "x": 1318.6117241147497, + "y": 1856.1251436518219, "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", - "width": 162.75985899567604, + "backgroundColor": "transparent", + "width": 176.8798370361328, "height": 25, - "seed": 352763216, + "seed": 1092918096, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980415621, + "updated": 1726142384886, "link": null, "locked": false, "fontSize": 20, "fontFamily": 1, - "text": "Initialized phase", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "o16fHdthOp80uqAN-KkL2", - "originalText": "Initialized phase", + "text": "spawnTime passed", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "spawnTime passed", "autoResize": true, "lineHeight": 1.25 }, { - "type": "line", - "version": 897, - "versionNonce": 394027856, - "index": "b0M", + "type": "text", + "version": 1368, + "versionNonce": 2035596681, + "index": "b0b", "isDeleted": false, - "id": "jAITNaSlDtSPpvQwpBfRJ", + "id": "4_i6jup_6Cze3xommPSgL", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 267.98783052464313, - "y": 2020.76074945359, + "x": 1491.9969873987973, + "y": 1621.7615368809888, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 1658.3805338541667, - "height": 0.078125, - "seed": 124954448, + "width": 231.69981133937836, + "height": 50, + "seed": 1855238480, "groupIds": [], "frameId": null, - "roundness": { - "type": 2 - }, + "roundness": null, "boundElements": [], - "updated": 1721980415621, + "updated": 1726142384886, "link": null, "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1658.3805338541667, - 0.078125 - ] - ] + "fontSize": 20, + "fontFamily": 1, + "text": "MsgUpdateConsumer\nto change denylist, etc.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgUpdateConsumer\nto change denylist, etc.", + "autoResize": true, + "lineHeight": 1.25 }, { "type": "line", - "version": 504, - "versionNonce": 917731664, - "index": "b0N", + "version": 1291, + "versionNonce": 483796073, + "index": "b0c", "isDeleted": false, - "id": "akYH8jPOSYYHRJ0kHn6SF", + "id": "G9GGcs9_A9FENDJhK85f5", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 281.08353364964324, - "y": 1964.52051507859, + "x": 1578.2945162864125, + "y": 1679.785207369585, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 0, "height": 124.8681640625, - "seed": 1463893328, + "seed": 1636960080, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1721980415621, + "updated": 1726142384886, "link": null, "locked": false, "startBinding": null, @@ -2567,710 +2461,704 @@ ] }, { - "type": "line", - "version": 677, - "versionNonce": 1251462992, - "index": "b0O", + "type": "rectangle", + "version": 1182, + "versionNonce": 1564979017, + "index": "b0d", "isDeleted": false, - "id": "Qds67yg8nIFlUKrTZNb8v", + "id": "TuSGExogIwVLdWKpZuLEE", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 100, + "opacity": 60, "angle": 0, - "x": 772.4622073883388, - "y": 1960.8053089497193, + "x": 1434.5692594014943, + "y": 1729.1703957702748, "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 0, - "height": 124.8681640625, - "seed": 483201872, + "backgroundColor": "#b2f2bb", + "width": 475.03417968750034, + "height": 79.30663117976157, + "seed": 1987353936, "groupIds": [], "frameId": null, "roundness": { - "type": 2 + "type": 3 }, - "boundElements": [], - "updated": 1721980415621, + "boundElements": [ + { + "type": "text", + "id": "Kha-a5kyL8kweb2LvlPtp" + } + ], + "updated": 1726142384886, "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 124.8681640625 - ] - ] + "locked": false }, { - "type": "line", - "version": 960, - "versionNonce": 1266771280, - "index": "b0P", + "type": "text", + "version": 977, + "versionNonce": 1896144425, + "index": "b0e", "isDeleted": false, - "id": "jtzT1eH8RZn8QwNepmt_H", + "id": "Kha-a5kyL8kweb2LvlPtp", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 100, + "opacity": 60, "angle": 0, - "x": 1014.054135272773, - "y": 1973.1398450973488, + "x": 1596.5223296844306, + "y": 1756.5387362944684, "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 0, - "height": 124.8681640625, - "seed": 778971472, + "backgroundColor": "#a5d8ff", + "width": 151.1280391216278, + "height": 24.569950131374355, + "seed": 1049916240, "groupIds": [], "frameId": null, - "roundness": { - "type": 2 - }, + "roundness": null, "boundElements": [], - "updated": 1721980415621, + "updated": 1726142384886, "link": null, "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 124.8681640625 - ] - ] + "fontSize": 19.655960105099485, + "fontFamily": 1, + "text": "Launched phase", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "TuSGExogIwVLdWKpZuLEE", + "originalText": "Launched phase", + "autoResize": true, + "lineHeight": 1.25 }, { - "type": "arrow", - "version": 752, - "versionNonce": 1724398416, - "index": "b0Q", + "type": "text", + "version": 408, + "versionNonce": 396094800, + "index": "b0f", "isDeleted": false, - "id": "8lhkFCwtbNTRFlmWeRE4n", + "id": "UyHfZ2VJGqV1pDsuTD9cV", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 100, + "opacity": 60, "angle": 0, - "x": 1836.1193409413095, - "y": 2000.63379632859, + "x": -108.94270833333303, + "y": 1338.8350902739019, "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 88.623046875, - "height": 0, - "seed": 1467776848, + "backgroundColor": "#b2f2bb", + "width": 341.5998840332031, + "height": 70, + "seed": 723455312, "groupIds": [], "frameId": null, - "roundness": { - "type": 2 - }, + "roundness": null, "boundElements": [], - "updated": 1721980415621, + "updated": 1721981143713, "link": null, "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 88.623046875, - 0 - ] - ] + "fontSize": 28, + "fontFamily": 1, + "text": "successful launch of an \nOpt In chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "successful launch of an \nOpt In chain", + "autoResize": true, + "lineHeight": 1.25 }, { "type": "text", - "version": 819, - "versionNonce": 1589924176, - "index": "b0R", + "version": 618, + "versionNonce": 922300681, + "index": "b0h", "isDeleted": false, - "id": "CsZ965_KJ8mkVhd3JJHe6", + "id": "vr9GdN-bw_UUQefiVts9a", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 100, + "opacity": 60, "angle": 0, - "x": 1857.5109425038095, - "y": 1976.77637445359, + "x": -86.62386287119591, + "y": 1738.0396130528636, "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 40.63996636867523, - "height": 25, - "seed": 944772432, + "backgroundColor": "#b2f2bb", + "width": 328.5238952636719, + "height": 70, + "seed": 1698232144, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980415621, + "updated": 1726142384886, "link": null, "locked": false, - "fontSize": 20, + "fontSize": 28, "fontFamily": 1, - "text": "time", + "text": "successful launch of a \nTop N chain", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "time", + "originalText": "successful launch of a \nTop N chain", "autoResize": true, "lineHeight": 1.25 }, { - "type": "text", - "version": 778, - "versionNonce": 1791862608, - "index": "b0S", + "type": "arrow", + "version": 3249, + "versionNonce": 650980711, + "index": "b0i", "isDeleted": false, - "id": "VptrXV13wo5wjJkN_HnlZ", + "id": "m_qDO-vi8cZvgdBk4OY4b", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 225.49434094130987, - "y": 1901.9570385160905, + "x": 846.8877269011308, + "y": -46.21798959078784, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 227.99981439113617, - "height": 50, - "seed": 641788752, + "width": 15.316902269117037, + "height": 68.24783716308409, + "seed": 1130514985, "groupIds": [], "frameId": null, - "roundness": null, + "roundness": { + "type": 2 + }, "boundElements": [], - "updated": 1721980415621, + "updated": 1726050249830, "link": null, "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "MsgRegisterConsumer\nto get the consumer id", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "MsgRegisterConsumer\nto get the consumer id", - "autoResize": true, - "lineHeight": 1.25 + "startBinding": null, + "endBinding": { + "elementId": "_VXIQppCSNb6MIFQLmDdy", + "focus": 0.35849365490303703, + "gap": 3.0676600529869305, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 7.549196922259171, + 17.26257820557447 + ], + [ + 15.316902269117037, + 68.24783716308409 + ] + ] }, { "type": "text", - "version": 1003, - "versionNonce": 389823824, - "index": "b0T", + "version": 1353, + "versionNonce": 75562313, + "index": "b0k", "isDeleted": false, - "id": "i7B5C0pGmcgSuCqx5vRQP", + "id": "vcMys1puUDTEODl2EwIsK", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 675.524400755763, - "y": 1851.207730247861, + "x": 753.897412075299, + "y": -91.7575214964049, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 237.25982177257538, - "height": 100, - "seed": 195494224, + "width": 271.15181761980057, + "height": 40, + "seed": 661970569, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980415621, + "updated": 1726050249751, "link": null, "locked": false, - "fontSize": 20, + "fontSize": 16, "fontFamily": 1, - "text": "issue governance\nproposal with\nMsgInitializeConsumer\nand MsgUpdateconsumer", + "text": "MsgUpdateConsumer tx to update\nparameters of the consumer chain", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "issue governance\nproposal with\nMsgInitializeConsumer\nand MsgUpdateconsumer", + "originalText": "MsgUpdateConsumer tx to update\nparameters of the consumer chain", "autoResize": true, "lineHeight": 1.25 }, { "type": "text", - "version": 1017, - "versionNonce": 623782224, - "index": "b0U", + "version": 1458, + "versionNonce": 1071934505, + "index": "b0l", "isDeleted": false, - "id": "KtxOQmQoRm5cuPDQBNvU5", + "id": "tFQW2gbsKLsAOyWilxj8K", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 939.6897526234386, - "y": 1937.321011497861, - "strokeColor": "#2f9e44", + "x": 428.14924403990096, + "y": 277.42012051654547, + "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 156.959858417511, - "height": 25, - "seed": 1205491536, + "width": 268.2718479037285, + "height": 40, + "seed": 1748545481, "groupIds": [], "frameId": null, "roundness": null, - "boundElements": [], - "updated": 1721980635662, + "boundElements": [ + { + "id": "QJHjyYDxam9jq3ifrE6rE", + "type": "arrow" + } + ], + "updated": 1726050249751, "link": null, "locked": false, - "fontSize": 20, + "fontSize": 16, "fontFamily": 1, - "text": "proposal passes", + "text": "MsgUpdateConsumer to update\nparameters of the consumer chain", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "proposal passes", + "originalText": "MsgUpdateConsumer to update\nparameters of the consumer chain", "autoResize": true, "lineHeight": 1.25 }, { - "type": "rectangle", - "version": 1270, - "versionNonce": 1806248272, - "index": "b0X", + "type": "ellipse", + "version": 507, + "versionNonce": 1869886953, + "index": "b0n", "isDeleted": false, - "id": "aqECH_oHGd4F7Pq9jBCpa", + "id": "2-U8686bY9jFXGieWkDR-", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, "angle": 0, - "x": 279.82865083714313, - "y": 2020.1644359770276, + "x": 897.5153405693067, + "y": 503.9058735824079, "strokeColor": "#1e1e1e", - "backgroundColor": "#e7f5ff", - "width": 731.2353515625001, - "height": 81.1279296875, - "seed": 2041829712, + "backgroundColor": "transparent", + "width": 113.27734375, + "height": 113.27734375, + "seed": 165626697, "groupIds": [], "frameId": null, "roundness": { - "type": 3 + "type": 2 }, "boundElements": [ { "type": "text", - "id": "J8GsOJGu4wkpH9e3dq06b" + "id": "KHQGsY7fgsH6sdy3cGaQF" + }, + { + "id": "R77lEhp763M3wxU4R4AUu", + "type": "arrow" } ], - "updated": 1721980415621, + "updated": 1726050249751, "link": null, "locked": false }, { "type": "text", - "version": 1034, - "versionNonce": 894926672, - "index": "b0Y", + "version": 368, + "versionNonce": 623349961, + "index": "b0o", "isDeleted": false, - "id": "J8GsOJGu4wkpH9e3dq06b", + "id": "KHQGsY7fgsH6sdy3cGaQF", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, "angle": 0, - "x": 561.0964022924502, - "y": 2048.2284008207776, + "x": 925.2484435646608, + "y": 550.4949564971956, "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", - "width": 168.699848651886, - "height": 25, - "seed": 244068176, + "backgroundColor": "transparent", + "width": 57.71195983886719, + "height": 20, + "seed": 1300886057, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980415621, + "updated": 1726050249751, "link": null, "locked": false, - "fontSize": 20, + "fontSize": 16, "fontFamily": 1, - "text": "Registered phase", + "text": "deleted", "textAlign": "center", "verticalAlign": "middle", - "containerId": "aqECH_oHGd4F7Pq9jBCpa", - "originalText": "Registered phase", + "containerId": "2-U8686bY9jFXGieWkDR-", + "originalText": "deleted", "autoResize": true, "lineHeight": 1.25 }, { - "type": "line", - "version": 991, - "versionNonce": 2012467536, - "index": "b0Z", + "type": "arrow", + "version": 928, + "versionNonce": 1308078791, + "index": "b0p", "isDeleted": false, - "id": "jepmnNxu-8rBXJjZKYZKQ", + "id": "R77lEhp763M3wxU4R4AUu", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 1434.8150636276262, - "y": 2021.9498456357614, + "x": 1228.94835003748, + "y": 560.4036070443345, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 0, - "height": 124.8681640625, - "seed": 1374274896, + "width": 212.9098669669345, + "height": 0.06095012343837425, + "seed": 377799849, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1721980684670, + "updated": 1726050249830, "link": null, "locked": false, - "startBinding": null, - "endBinding": null, + "startBinding": { + "elementId": "xzn9Qid5DuHXfVeES6XML", + "focus": -1.6125075729555916, + "gap": 12.266880296200611, + "fixedPoint": null + }, + "endBinding": { + "elementId": "2-U8686bY9jFXGieWkDR-", + "focus": -0.0010994696159469046, + "gap": 5.2458504453370125, + "fixedPoint": null + }, "lastCommittedPoint": null, "startArrowhead": null, - "endArrowhead": null, + "endArrowhead": "arrow", "points": [ [ 0, 0 ], [ - 0, - 124.8681640625 + -212.9098669669345, + 0.06095012343837425 ] ] }, { "type": "text", - "version": 1229, - "versionNonce": 57883811, - "index": "b0a", + "version": 982, + "versionNonce": 1454391207, + "index": "b0q", "isDeleted": false, - "id": "prbzcGXJPRqkOVsHpdbs4", + "id": "xzn9Qid5DuHXfVeES6XML", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 1321.581890289982, - "y": 2150.859422956194, + "x": 1038.5910565520608, + "y": 508.1367267481339, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 176.8798370361328, - "height": 25, - "seed": 1092918096, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1721986800613, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "spawnTime passed", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "spawnTime passed", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 1327, - "versionNonce": 1288511920, - "index": "b0b", - "isDeleted": false, - "id": "4_i6jup_6Cze3xommPSgL", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1494.9671535740297, - "y": 1916.495816185361, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 231.69981133937836, - "height": 50, - "seed": 1855238480, + "width": 190.46387976408005, + "height": 40, + "seed": 1596160487, "groupIds": [], "frameId": null, "roundness": null, - "boundElements": [], - "updated": 1721980692762, + "boundElements": [ + { + "id": "R77lEhp763M3wxU4R4AUu", + "type": "arrow" + } + ], + "updated": 1726050249830, "link": null, "locked": false, - "fontSize": 20, + "fontSize": 16, "fontFamily": 1, - "text": "MsgUpdateConsumer\nto change denylist, etc.", + "text": "provider unbonding period\nelapses", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "MsgUpdateConsumer\nto change denylist, etc.", + "originalText": "provider unbonding period\nelapses", "autoResize": true, "lineHeight": 1.25 }, { - "type": "line", - "version": 1250, - "versionNonce": 1557995440, - "index": "b0c", + "type": "arrow", + "version": 3919, + "versionNonce": 1472967719, + "index": "b0r", "isDeleted": false, - "id": "G9GGcs9_A9FENDJhK85f5", + "id": "j2LU4pG8RRialcQ5UiLt8", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 1581.264682461645, - "y": 1974.519486673957, + "x": 846.8190532217034, + "y": 150.38244900733721, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 0, - "height": 124.8681640625, - "seed": 1636960080, + "width": 3.921839226565794, + "height": 70.53165451030857, + "seed": 1614788649, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1721980691478, + "updated": 1726050249830, "link": null, "locked": false, - "startBinding": null, - "endBinding": null, + "startBinding": { + "elementId": "OSTXsQ9rLudhM8FpW1Tmi", + "focus": -1.0859967278851912, + "gap": 8.395430517472732, + "fixedPoint": null + }, + "endBinding": { + "elementId": "OSTXsQ9rLudhM8FpW1Tmi", + "focus": 1.0534275758796827, + "gap": 12.215199762345037, + "fixedPoint": null + }, "lastCommittedPoint": null, "startArrowhead": null, - "endArrowhead": null, + "endArrowhead": "arrow", "points": [ [ - 0, + -13.968216988547823, 0 ], [ - 0, - 124.8681640625 + -14.070286970241341, + 32.862651310234156 + ], + [ + -10.148447743675547, + 70.53165451030857 ] ] }, { - "type": "rectangle", - "version": 1141, - "versionNonce": 1680731472, - "index": "b0d", + "type": "text", + "version": 1327, + "versionNonce": 675072329, + "index": "b0s", "isDeleted": false, - "id": "TuSGExogIwVLdWKpZuLEE", + "id": "Q1md4XcAv126O3dfBiN4f", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, "angle": 0, - "x": 1437.5394255767267, - "y": 2023.904675074647, + "x": 398.65072961980434, + "y": 429.4083943655648, "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "width": 475.03417968750034, - "height": 79.30663117976157, - "seed": 1987353936, + "backgroundColor": "transparent", + "width": 463.80765676498413, + "height": 100, + "seed": 1466313769, "groupIds": [], "frameId": null, - "roundness": { - "type": 3 - }, + "roundness": null, "boundElements": [ { - "type": "text", - "id": "Kha-a5kyL8kweb2LvlPtp" + "id": "JQNfOufG1Sc3Ln1iHc6v8", + "type": "arrow" } ], - "updated": 1721980415621, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 936, - "versionNonce": 1218691920, - "index": "b0e", - "isDeleted": false, - "id": "Kha-a5kyL8kweb2LvlPtp", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 60, - "angle": 0, - "x": 1599.492495859663, - "y": 2051.2730155988406, - "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", - "width": 151.1280391216278, - "height": 24.569950131374355, - "seed": 1049916240, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1721980415621, + "updated": 1726050272067, "link": null, "locked": false, - "fontSize": 19.655960105099485, + "fontSize": 16, "fontFamily": 1, - "text": "Launched phase", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "TuSGExogIwVLdWKpZuLEE", - "originalText": "Launched phase", + "text": "to create a Top N chain, two MsgUpdateConsumer\nmessages have to be submitted:\n1. MsgUpdateConsumer: set the owner = gov module\n2. (in a gov proposal) MsgUpdateConsumer: set Top N > 0\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "to create a Top N chain, two MsgUpdateConsumer\nmessages have to be submitted:\n1. MsgUpdateConsumer: set the owner = gov module\n2. (in a gov proposal) MsgUpdateConsumer: set Top N > 0\n", "autoResize": true, "lineHeight": 1.25 }, { - "type": "text", - "version": 408, - "versionNonce": 396094800, - "index": "b0f", + "type": "arrow", + "version": 5249, + "versionNonce": 697931977, + "index": "b0t", "isDeleted": false, - "id": "UyHfZ2VJGqV1pDsuTD9cV", + "id": "N97DnWZ0c8Ae4DOO-8yVa", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, "angle": 0, - "x": -108.94270833333303, - "y": 1338.8350902739019, + "x": 912.1298439127376, + "y": 261.1390744105784, "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "width": 341.5998840332031, - "height": 70, - "seed": 723455312, + "backgroundColor": "transparent", + "width": 87.23179762593497, + "height": 116.05529009929515, + "seed": 957154823, "groupIds": [], "frameId": null, - "roundness": null, + "roundness": { + "type": 2 + }, "boundElements": [], - "updated": 1721981143713, + "updated": 1726050309252, "link": null, "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "successful launch of an \nOpt In chain", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "successful launch of an \nOpt In chain", - "autoResize": true, - "lineHeight": 1.25 + "startBinding": { + "elementId": "SI0HtgaAMGQsMr1Y7bXrA", + "focus": 0.5897971482166972, + "gap": 4.261005526060927, + "fixedPoint": null + }, + "endBinding": { + "elementId": "_VXIQppCSNb6MIFQLmDdy", + "focus": 0.8224400651501185, + "gap": 8.1682673389045, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 66.42430873874923, + -105.25145845887039 + ], + [ + -20.80748888718574, + -116.05529009929515 + ] + ] }, { - "type": "text", - "version": 510, - "versionNonce": 1955709360, - "index": "b0g", + "type": "line", + "version": 792, + "versionNonce": 614475753, + "index": "b0u", "isDeleted": false, - "id": "4n5NjjKLCJsk7c-7uAWhd", + "id": "Y5dBFtf6yPR4gC7ZozXlC", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, "angle": 0, - "x": -50.64974466959666, - "y": 1661.4197256905686, + "x": 844.3626178599437, + "y": 1675.8880010811863, "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "width": 263.73187255859375, - "height": 70, - "seed": 1223292336, + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 63186633, "groupIds": [], "frameId": null, - "roundness": null, + "roundness": { + "type": 2 + }, "boundElements": [], - "updated": 1721980676778, + "updated": 1726142384886, "link": null, "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "failed launch of a \nTop N chain", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "failed launch of a \nTop N chain", - "autoResize": true, - "lineHeight": 1.25 + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] }, { "type": "text", - "version": 577, - "versionNonce": 2112613712, - "index": "b0h", + "version": 1269, + "versionNonce": 1946501833, + "index": "b0v", "isDeleted": false, - "id": "vr9GdN-bw_UUQefiVts9a", + "id": "anxxLtF7y934-0tc2BXqQ", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, "angle": 0, - "x": -83.6536966959635, - "y": 2032.7738923572358, + "x": 757.3705538915297, + "y": 1581.0641173885695, "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", - "width": 328.5238952636719, - "height": 70, - "seed": 1698232144, + "backgroundColor": "transparent", + "width": 196.05983579158783, + "height": 75, + "seed": 1990825545, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980468104, + "updated": 1726142384886, "link": null, "locked": false, - "fontSize": 28, + "fontSize": 20, "fontFamily": 1, - "text": "successful launch of a \nTop N chain", + "text": "MsgUpdateConsumer\nin a gov proposal\nto set Top N > 0", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "successful launch of a \nTop N chain", + "originalText": "MsgUpdateConsumer\nin a gov proposal\nto set Top N > 0", "autoResize": true, "lineHeight": 1.25 } ], "appState": { - "gridSize": null, + "gridSize": 20, + "gridStep": 5, + "gridModeEnabled": false, "viewBackgroundColor": "#ffffff" }, "files": {} diff --git a/docs/docs/adrs/figures/adr19_flows_of_launching_a_consumer_chain.png b/docs/docs/adrs/figures/adr19_flows_of_launching_a_consumer_chain.png index 72dffb2d67..00f4f4502b 100644 Binary files a/docs/docs/adrs/figures/adr19_flows_of_launching_a_consumer_chain.png and b/docs/docs/adrs/figures/adr19_flows_of_launching_a_consumer_chain.png differ diff --git a/docs/docs/adrs/figures/adr19_phases_of_a_consumer_chain.excalidraw b/docs/docs/adrs/figures/adr19_phases_of_a_consumer_chain.excalidraw index 4c4802ae69..a6c5fa2806 100644 --- a/docs/docs/adrs/figures/adr19_phases_of_a_consumer_chain.excalidraw +++ b/docs/docs/adrs/figures/adr19_phases_of_a_consumer_chain.excalidraw @@ -5,8 +5,8 @@ "elements": [ { "type": "ellipse", - "version": 432, - "versionNonce": 656013628, + "version": 532, + "versionNonce": 2127784039, "index": "a1", "isDeleted": false, "id": "SI0HtgaAMGQsMr1Y7bXrA", @@ -16,8 +16,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 512.4765625, - "y": 248.29980468749991, + "x": 771.7768101892256, + "y": 223.07001548901079, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 143.13281250000014, @@ -38,18 +38,30 @@ "type": "arrow" }, { - "id": "qIMMSItT6zGcYO5ZUPcar", + "id": "QJHjyYDxam9jq3ifrE6rE", + "type": "arrow" + }, + { + "id": "j2LU4pG8RRialcQ5UiLt8", + "type": "arrow" + }, + { + "id": "JQNfOufG1Sc3Ln1iHc6v8", + "type": "arrow" + }, + { + "id": "N97DnWZ0c8Ae4DOO-8yVa", "type": "arrow" } ], - "updated": 1721898441262, + "updated": 1726050284845, "link": null, "locked": false }, { "type": "text", - "version": 772, - "versionNonce": 276787644, + "version": 860, + "versionNonce": 415430025, "index": "a1V", "isDeleted": false, "id": "A97toxLGgigcGTMSLzFRE", @@ -59,8 +71,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 547.7299002905518, - "y": 306.9585237065766, + "x": 807.0301479797774, + "y": 281.7287345080874, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 72.41595458984375, @@ -70,7 +82,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721898441262, + "updated": 1726050284846, "link": null, "locked": false, "fontSize": 16, @@ -85,8 +97,8 @@ }, { "type": "ellipse", - "version": 225, - "versionNonce": 1063465660, + "version": 314, + "versionNonce": 1013605129, "index": "a2", "isDeleted": false, "id": "y5DOCeanki7NLMac-YZU_", @@ -96,8 +108,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 963.30078125, - "y": 252.48730468749994, + "x": 1222.6010289392257, + "y": 227.2575154890108, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 113.27734375, @@ -126,14 +138,14 @@ "type": "arrow" } ], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false }, { "type": "text", - "version": 69, - "versionNonce": 241531708, + "version": 157, + "versionNonce": 152771049, "index": "a2G", "isDeleted": false, "id": "_lR4nCPdco_VXP-hHHxFx", @@ -143,18 +155,18 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 987.2738821091236, - "y": 299.07638760228764, + "x": 1246.102123775419, + "y": 273.8465984037985, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 65.23196411132812, + "width": 66.17597615718842, "height": 20, "seed": 2116710579, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, @@ -169,8 +181,8 @@ }, { "type": "text", - "version": 818, - "versionNonce": 352917936, + "version": 1431, + "versionNonce": 150121895, "index": "a4", "isDeleted": false, "id": "-Ezkh_kc6H-iZ8_N1SUwz", @@ -180,11 +192,11 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 728.4853515625, - "y": 18.888671874999943, + "x": 983.386778835841, + "y": 108.79742731097753, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 462.22369116544724, + "width": 235.31186291575432, "height": 40, "seed": 176740147, "groupIds": [], @@ -192,27 +204,27 @@ "roundness": null, "boundElements": [ { - "id": "JQNfOufG1Sc3Ln1iHc6v8", + "id": "N97DnWZ0c8Ae4DOO-8yVa", "type": "arrow" } ], - "updated": 1721977797787, + "updated": 1726050312788, "link": null, "locked": false, "fontSize": 16, "fontFamily": 1, - "text": "proposal with MsgInitializeConsumer & MsgUpdateConsumer\nto start a Top N chain", + "text": "MsgUpdateConsumer\nwith spawnTime equal to zero", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "proposal with MsgInitializeConsumer & MsgUpdateConsumer\nto start a Top N chain", + "originalText": "MsgUpdateConsumer\nwith spawnTime equal to zero", "autoResize": true, "lineHeight": 1.25 }, { "type": "arrow", - "version": 3380, - "versionNonce": 1334694320, + "version": 4622, + "versionNonce": 814212937, "index": "a5", "isDeleted": false, "id": "JQNfOufG1Sc3Ln1iHc6v8", @@ -222,12 +234,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 863.2801567822762, - "y": 66.26969410176584, + "x": 648.7370047256345, + "y": 424.1658784400093, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 208.7131111905685, - "height": 55.219229040456455, + "width": 141.93009003618454, + "height": 78.07171803211321, "seed": 428750077, "groupIds": [], "frameId": null, @@ -235,18 +247,20 @@ "type": 2 }, "boundElements": [], - "updated": 1721977807991, + "updated": 1726050284846, "link": null, "locked": false, "startBinding": { - "elementId": "-Ezkh_kc6H-iZ8_N1SUwz", - "focus": 0.14349370214591656, - "gap": 7.381022226765893 + "elementId": "Q1md4XcAv126O3dfBiN4f", + "focus": -0.2038346885415893, + "gap": 5.242515925555523, + "fixedPoint": null }, "endBinding": { - "elementId": "_VXIQppCSNb6MIFQLmDdy", - "focus": 0.1824872496377905, - "gap": 2.2713741813428783 + "elementId": "SI0HtgaAMGQsMr1Y7bXrA", + "focus": -0.39568912311860743, + "gap": 5.4589315614547615, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -257,19 +271,19 @@ 0 ], [ - -106.6058242763097, - 51.06445336557442 + 57.26497357228686, + -39.415334062629256 ], [ - -208.7131111905685, - 55.219229040456455 + 141.93009003618454, + -78.07171803211321 ] ] }, { "type": "text", - "version": 1068, - "versionNonce": 1922126672, + "version": 1228, + "versionNonce": 167774729, "index": "a6", "isDeleted": false, "id": "9NwhWEx9olM4fARFt5hZe", @@ -279,11 +293,11 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 189.74827575683594, - "y": -17.066406250000057, + "x": 448.8316259773526, + "y": -41.84058323285862, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 308.01581835746765, + "width": 297.9358012676239, "height": 80, "seed": 304812115, "groupIds": [], @@ -295,23 +309,23 @@ "type": "arrow" } ], - "updated": 1721977650326, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, "fontFamily": 1, - "text": "tx to register\nan Opt In or Top N consumer chain\n(MsgRegisterConsumer)\nowner = signer of MsgRegisterConsumer", + "text": "MsgCreateConsumer tx to create\na consumer chain\nreturns consumer id and sets\nowner = signer of MsgCreateConsumer", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "tx to register\nan Opt In or Top N consumer chain\n(MsgRegisterConsumer)\nowner = signer of MsgRegisterConsumer", + "originalText": "MsgCreateConsumer tx to create\na consumer chain\nreturns consumer id and sets\nowner = signer of MsgCreateConsumer", "autoResize": true, "lineHeight": 1.25 }, { "type": "arrow", - "version": 331, - "versionNonce": 1834637060, + "version": 599, + "versionNonce": 528975175, "index": "a7", "isDeleted": false, "id": "zeENeKW4p1ce_DWzf-29f", @@ -321,12 +335,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 663.2551165518071, - "y": 319.75738423211857, + "x": 922.3425612452737, + "y": 294.52759503362944, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 299.31331302963645, - "height": 5.083241028410356, + "width": 299.52611602539537, + "height": 5.0832410284103275, "seed": 783684445, "groupIds": [], "frameId": null, @@ -334,18 +348,20 @@ "type": 2 }, "boundElements": [], - "updated": 1721898441294, + "updated": 1726050249829, "link": null, "locked": false, "startBinding": { "elementId": "9VJjnsFNvss8g8B_wchEr", - "focus": -1.1953607235764194, - "gap": 6.181092330381375 + "focus": -1.1953598980155133, + "gap": 6.181092330381375, + "fixedPoint": null }, "endBinding": { "elementId": "y5DOCeanki7NLMac-YZU_", - "focus": -0.08074296871041202, - "gap": 1.0000000000000995 + "focus": -0.08075520534393367, + "gap": 1.0000000000000995, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -356,15 +372,15 @@ 0 ], [ - 299.31331302963645, - -5.083241028410356 + 299.52611602539537, + -5.0832410284103275 ] ] }, { "type": "text", - "version": 418, - "versionNonce": 1250834364, + "version": 507, + "versionNonce": 1538095785, "index": "a8", "isDeleted": false, "id": "9VJjnsFNvss8g8B_wchEr", @@ -374,11 +390,11 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 669.0216369628906, - "y": 325.93847656249994, + "x": 928.0956739608208, + "y": 300.7086873640108, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 252.0958709716797, + "width": 252.1118765771389, "height": 60, "seed": 1053753011, "groupIds": [], @@ -390,7 +406,7 @@ "type": "arrow" } ], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, @@ -405,8 +421,8 @@ }, { "type": "text", - "version": 417, - "versionNonce": 7026096, + "version": 717, + "versionNonce": 841720937, "index": "aF", "isDeleted": false, "id": "FgsFB8OrGtx1-nlYRY0Uz", @@ -416,12 +432,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 1100.889877319336, - "y": 155.14941406249994, + "x": 1351.7906070419108, + "y": 95.33423008674612, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 229.75984984636307, - "height": 40, + "width": 256.6558837890625, + "height": 80, "seed": 51301117, "groupIds": [], "frameId": null, @@ -432,23 +448,23 @@ "type": "arrow" } ], - "updated": 1721979486389, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, "fontFamily": 1, - "text": "MsgUpdateConsumer for both\nTop N and Opt In chains", + "text": "MsgUpdateConsumer for both\nTop N and Opt In chains\n(initialization parameters cannot\nbe updated at this phase)", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "MsgUpdateConsumer for both\nTop N and Opt In chains", + "originalText": "MsgUpdateConsumer for both\nTop N and Opt In chains\n(initialization parameters cannot\nbe updated at this phase)", "autoResize": true, "lineHeight": 1.25 }, { "type": "arrow", - "version": 936, - "versionNonce": 1806394884, + "version": 1116, + "versionNonce": 148774791, "index": "aG", "isDeleted": false, "id": "hoUATc742qsSXGtb3zXhk", @@ -458,8 +474,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 1043.1909748738744, - "y": 254.20084659464027, + "x": 1302.4912225631, + "y": 228.97105739615114, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 81.51926732005495, @@ -471,18 +487,20 @@ "type": 2 }, "boundElements": [], - "updated": 1721898441295, + "updated": 1726050249829, "link": null, "locked": false, "startBinding": { "elementId": "y5DOCeanki7NLMac-YZU_", "focus": -0.6276577497929622, - "gap": 3.005298194275724 + "gap": 3.005298194275724, + "fixedPoint": null }, "endBinding": { "elementId": "y5DOCeanki7NLMac-YZU_", "focus": 0.6500438788511836, - "gap": 6.714013400352123 + "gap": 6.714013400352123, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -504,8 +522,8 @@ }, { "type": "ellipse", - "version": 356, - "versionNonce": 411466172, + "version": 405, + "versionNonce": 1325030953, "index": "aK", "isDeleted": false, "id": "U2EhanfFFSg1GNh4uQ9Xo", @@ -515,8 +533,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 973.2587890625, - "y": 528.0859375, + "x": 1232.5590367517257, + "y": 502.85614830151087, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 113.27734375, @@ -535,16 +553,20 @@ { "id": "6m4pEWBrlMrOpXdR2qMdd", "type": "arrow" + }, + { + "id": "R77lEhp763M3wxU4R4AUu", + "type": "arrow" } ], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false }, { "type": "text", - "version": 209, - "versionNonce": 294117948, + "version": 257, + "versionNonce": 977187081, "index": "aL", "isDeleted": false, "id": "RfEXevpkB5rowEFa4mHDD", @@ -554,8 +576,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 999.7359029831471, - "y": 574.6750204147877, + "x": 1259.0361506723725, + "y": 549.4452312162986, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 60.22393798828125, @@ -565,7 +587,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, @@ -580,8 +602,8 @@ }, { "type": "arrow", - "version": 518, - "versionNonce": 1178907908, + "version": 745, + "versionNonce": 142813639, "index": "aM", "isDeleted": false, "id": "6m4pEWBrlMrOpXdR2qMdd", @@ -591,8 +613,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 1027.530607098985, - "y": 367.313746063125, + "x": 1286.8308547882107, + "y": 342.08395686463587, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 1.0811756614666592, @@ -604,18 +626,20 @@ "type": 2 }, "boundElements": [], - "updated": 1721898441295, + "updated": 1726050249830, "link": null, "locked": false, "startBinding": { "elementId": "y5DOCeanki7NLMac-YZU_", "focus": -0.1267451224869414, - "gap": 2.042177966448442 + "gap": 2.042177966448442, + "fixedPoint": null }, "endBinding": { "elementId": "U2EhanfFFSg1GNh4uQ9Xo", "focus": -0.014589591451189068, - "gap": 8.198352788681127 + "gap": 8.198352788681127, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -633,8 +657,8 @@ }, { "type": "ellipse", - "version": 1043, - "versionNonce": 1743463856, + "version": 1155, + "versionNonce": 1589189255, "index": "aP", "isDeleted": false, "id": "_VXIQppCSNb6MIFQLmDdy", @@ -644,8 +668,8 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 527.1933593750001, - "y": 49.049845487915945, + "x": 786.4936070642257, + "y": 23.820056289426816, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "width": 125.71093750000004, @@ -662,7 +686,7 @@ "id": "ND9wpVssAkaXAtA1CWR-j" }, { - "id": "qIMMSItT6zGcYO5ZUPcar", + "id": "NAUT1CeeaW6ntAtOKbXGS", "type": "arrow" }, { @@ -670,22 +694,26 @@ "type": "arrow" }, { - "id": "NAUT1CeeaW6ntAtOKbXGS", + "id": "m_qDO-vi8cZvgdBk4OY4b", + "type": "arrow" + }, + { + "id": "j2LU4pG8RRialcQ5UiLt8", "type": "arrow" }, { - "id": "SP-m3QTzlcLoU-_bmfZeN", + "id": "N97DnWZ0c8Ae4DOO-8yVa", "type": "arrow" } ], - "updated": 1721977737205, + "updated": 1726050304509, "link": null, "locked": false }, { "type": "text", - "version": 1438, - "versionNonce": 303490108, + "version": 1530, + "versionNonce": 56748905, "index": "aQ", "isDeleted": false, "id": "ND9wpVssAkaXAtA1CWR-j", @@ -695,18 +723,18 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 550.919332346884, - "y": 102.6403917713115, + "x": 810.1715739932714, + "y": 77.41060257282237, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 78.36793518066406, + "width": 78.46394726634026, "height": 20, "seed": 704059075, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721898441262, + "updated": 1726050249750, "link": null, "locked": false, "fontSize": 16, @@ -721,102 +749,8 @@ }, { "type": "arrow", - "version": 2498, - "versionNonce": 1811695536, - "index": "aR", - "isDeleted": false, - "id": "qIMMSItT6zGcYO5ZUPcar", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 598.616944950635, - "y": 175.68190954353736, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 95.2174182195338, - "height": 71.14063431860131, - "seed": 711212803, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1721977823250, - "link": null, - "locked": false, - "startBinding": { - "elementId": "_VXIQppCSNb6MIFQLmDdy", - "focus": 0.7831196417981204, - "gap": 1 - }, - "endBinding": { - "elementId": "SI0HtgaAMGQsMr1Y7bXrA", - "focus": -0.9808503194655256, - "gap": 2.5866858268130386 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 93.66378808277591, - 56.75434794509022 - ], - [ - -1.5536301367578846, - 71.14063431860131 - ] - ] - }, - { - "type": "text", - "version": 894, - "versionNonce": 1163437392, - "index": "aS", - "isDeleted": false, - "id": "tONaGSodwA-i1Tr_ZvpZf", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 703.2325744628906, - "y": 211.6659109933036, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 63.951934814453125, - "height": 40, - "seed": 1173975117, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1721977821204, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "proposal\npasses", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "proposal\npasses", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 2698, - "versionNonce": 1501320528, + "version": 3037, + "versionNonce": 1369089031, "index": "aW", "isDeleted": false, "id": "NAUT1CeeaW6ntAtOKbXGS", @@ -826,12 +760,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 295.2339916085824, - "y": 72.54770775067982, + "x": 553.1384527777011, + "y": 47.773530767821256, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 219.9931787394372, - "height": 44.86816430307441, + "width": 221.38896708122923, + "height": 44.41255208744384, "seed": 713565901, "groupIds": [], "frameId": null, @@ -839,18 +773,20 @@ "type": 2 }, "boundElements": [], - "updated": 1721977650641, + "updated": 1726050249830, "link": null, "locked": false, "startBinding": { "elementId": "9NwhWEx9olM4fARFt5hZe", - "focus": 0.5220455825778929, - "gap": 9.614114000679876 + "focus": 0.5220455825778916, + "gap": 9.614114000679876, + "fixedPoint": null }, "endBinding": { "elementId": "_VXIQppCSNb6MIFQLmDdy", - "focus": -0.040896091175469475, - "gap": 12.037638560264035 + "focus": -0.040896091175469856, + "gap": 12.037636739548553, + "fixedPoint": null }, "lastCommittedPoint": null, "startArrowhead": null, @@ -861,19 +797,19 @@ 0 ], [ - 49.778852818030145, - 44.86816430307441 + 51.17463933813707, + 44.41255208744384 ], [ - 219.9931787394372, - 43.27181702781314 + 221.38896708122923, + 42.816204795098 ] ] }, { "type": "arrow", - "version": 2638, - "versionNonce": 2034843580, + "version": 3087, + "versionNonce": 566058089, "index": "aX", "isDeleted": false, "id": "QJHjyYDxam9jq3ifrE6rE", @@ -883,12 +819,12 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 553.4126684100163, - "y": 172.7898695168439, + "x": 697.4210919436294, + "y": 300.5362697963811, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 88.24899059693328, - "height": 80.70767694042144, + "width": 75.69751607798696, + "height": 8.95566651750147, "seed": 901908284, "groupIds": [], "frameId": null, @@ -896,11 +832,21 @@ "type": 2 }, "boundElements": [], - "updated": 1721898441262, + "updated": 1726050284846, "link": null, "locked": false, - "startBinding": null, - "endBinding": null, + "startBinding": { + "elementId": "tFQW2gbsKLsAOyWilxj8K", + "focus": -0.5307859100334217, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "SI0HtgaAMGQsMr1Y7bXrA", + "focus": -0.27409789074639723, + "gap": 1, + "fixedPoint": null + }, "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow", @@ -910,19 +856,19 @@ 0 ], [ - -87.03045455607186, - 30.651422159720436 + 38.56608047950999, + 8.282718428377393 ], [ - 1.218536040861423, - 80.70767694042144 + 75.69751607798696, + 8.95566651750147 ] ] }, { "type": "text", - "version": 954, - "versionNonce": 1840703408, + "version": 1541, + "versionNonce": 138472711, "index": "aY", "isDeleted": false, "id": "OSTXsQ9rLudhM8FpW1Tmi", @@ -932,34 +878,39 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 237.52793884277344, - "y": 181.43050856817348, + "x": 633.9915232693937, + "y": 154.06076726030597, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 220.76788437366486, + "width": 190.46388244628906, "height": 60, "seed": 1590512260, "groupIds": [], "frameId": null, "roundness": null, - "boundElements": [], - "updated": 1721981417956, + "boundElements": [ + { + "id": "j2LU4pG8RRialcQ5UiLt8", + "type": "arrow" + } + ], + "updated": 1726050249830, "link": null, "locked": false, "fontSize": 16, "fontFamily": 1, - "text": "tx to initialize a registered\nOpt In chain\n(MsgInitializeConsumer)", + "text": "chain contains enough\ninitialization parameters\nto launch", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "tx to initialize a registered\nOpt In chain\n(MsgInitializeConsumer)", + "originalText": "chain contains enough\ninitialization parameters\nto launch", "autoResize": true, "lineHeight": 1.25 }, { "type": "text", - "version": 618, - "versionNonce": 1408338864, + "version": 755, + "versionNonce": 1625918345, "index": "aZ", "isDeleted": false, "id": "YfLjGiz8pwcgaeYLbqk17", @@ -969,235 +920,109 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 1046.5860595703125, - "y": 407.42009190150674, + "x": 1305.145518981793, + "y": 382.6808246707136, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 198.86389088630676, + "width": 155.67990905046463, "height": 40, "seed": 200186756, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721977871422, + "updated": 1726050249751, "link": null, "locked": false, "fontSize": 16, "fontFamily": 1, - "text": "MsgRemoveConsumer for\nTop N and Opt In chains", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "MsgRemoveConsumer for\nTop N and Opt In chains", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 1258, - "versionNonce": 1493934000, - "index": "aa", - "isDeleted": false, - "id": "NssF2iYfl_Bnw_ExbSTN9", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 5.903783783236146, - "x": 738.4366388875179, - "y": 102.0454511378703, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 188.03873574733734, - "height": 38.94856770833333, - "seed": 1513132976, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1721979493173, - "link": null, - "locked": false, - "fontSize": 15.579427083333332, - "fontFamily": 1, - "text": "If proposal submitted,\nthen owner = gov module", + "text": "MsgRemoveConsumer\nto stop a chain", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "If proposal submitted,\nthen owner = gov module", + "originalText": "MsgRemoveConsumer\nto stop a chain", "autoResize": true, "lineHeight": 1.25 }, { - "type": "arrow", - "version": 3860, - "versionNonce": 1375313744, - "index": "ab", + "type": "line", + "version": 772, + "versionNonce": 266696112, + "index": "ae", "isDeleted": false, - "id": "SP-m3QTzlcLoU-_bmfZeN", + "id": "pwlxDMNk9SimSRoZRuyV3", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 542.8449540584817, - "y": 65.3169816199927, + "x": 256.2591145833333, + "y": 1317.2654695056733, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 107.2195285426966, - "height": 95.35691573040356, - "seed": 1371342672, + "width": 1658.3805338541667, + "height": 0.078125, + "seed": 1129032624, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1721979518514, + "updated": 1721980422671, "link": null, "locked": false, - "startBinding": { - "elementId": "_VXIQppCSNb6MIFQLmDdy", - "focus": -1.0544694371314034, - "gap": 3.5954323396749857 - }, - "endBinding": { - "elementId": "_VXIQppCSNb6MIFQLmDdy", - "focus": 0.31663537700287836, - "gap": 1.9911615284421913 - }, + "startBinding": null, + "endBinding": null, "lastCommittedPoint": null, "startArrowhead": null, - "endArrowhead": "arrow", + "endArrowhead": null, "points": [ [ 0, 0 ], [ - 107.2195285426966, - -95.35691573040356 - ], - [ - 82.94381595386449, - -7.418196168042471 + 1658.3805338541667, + 0.078125 ] ] }, { - "type": "text", - "version": 1314, - "versionNonce": 863552848, - "index": "ac", + "type": "line", + "version": 379, + "versionNonce": 957038512, + "index": "af", "isDeleted": false, - "id": "apwBA2F8OsZLAT7p6l1JS", + "id": "-xwyxjAJM89xAkUi-pWLB", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "angle": 0, - "x": 609.4229227304459, - "y": -79.25318690708701, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 569.839707493782, - "height": 40, - "seed": 1979332528, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1721979490056, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "If proposal fails,\nthen owner = previous owner (the one that signed MsgRegisterConsumer)", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "If proposal fails,\nthen owner = previous owner (the one that signed MsgRegisterConsumer)", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "pwlxDMNk9SimSRoZRuyV3", - "type": "line", - "x": 256.2591145833333, - "y": 1317.2654695056733, - "width": 1658.3805338541667, - "height": 0.078125, - "angle": 0, + "x": 269.35481770833337, + "y": 1261.0252351306735, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, + "width": 0, + "height": 124.8681640625, + "seed": 659246416, "groupIds": [], "frameId": null, - "index": "ae", "roundness": { "type": 2 }, - "seed": 1129032624, - "version": 772, - "versionNonce": 266696112, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1721980422671, "link": null, "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 1658.3805338541667, - 0.078125 - ] - ], - "lastCommittedPoint": null, "startBinding": null, "endBinding": null, + "lastCommittedPoint": null, "startArrowhead": null, - "endArrowhead": null - }, - { - "id": "-xwyxjAJM89xAkUi-pWLB", - "type": "line", - "x": 269.35481770833337, - "y": 1261.0252351306735, - "width": 0, - "height": 124.8681640625, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "af", - "roundness": { - "type": 2 - }, - "seed": 659246416, - "version": 379, - "versionNonce": 957038512, - "isDeleted": false, - "boundElements": null, - "updated": 1721980422671, - "link": null, - "locked": false, + "endArrowhead": null, "points": [ [ 0, @@ -1207,12 +1032,7 @@ 0, 124.8681640625 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { "type": "line", @@ -1305,34 +1125,39 @@ ] }, { - "id": "5RtUeYj4dxxweAu88pxEc", "type": "arrow", - "x": 1824.390625, - "y": 1297.1385163806735, - "width": 88.623046875, - "height": 0, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 627, + "versionNonce": 140844464, + "index": "ai", + "isDeleted": false, + "id": "5RtUeYj4dxxweAu88pxEc", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1824.390625, + "y": 1297.1385163806735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 88.623046875, + "height": 0, + "seed": 557184848, "groupIds": [], "frameId": null, - "index": "ai", "roundness": { "type": 2 }, - "seed": 557184848, - "version": 627, - "versionNonce": 140844464, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1721980422671, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", "points": [ [ 0, @@ -1342,43 +1167,38 @@ 88.623046875, 0 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" + ] }, { - "id": "TCPMJfrcd92gSR4Q6cE6S", "type": "text", - "x": 1845.7822265625, - "y": 1273.2810945056735, - "width": 40.63996636867523, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 694, + "versionNonce": 1398138800, + "index": "aj", + "isDeleted": false, + "id": "TCPMJfrcd92gSR4Q6cE6S", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 1845.7822265625, + "y": 1273.2810945056735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 40.63996636867523, + "height": 25, + "seed": 1234376112, "groupIds": [], "frameId": null, - "index": "aj", "roundness": null, - "seed": 1234376112, - "version": 694, - "versionNonce": 1398138800, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1721980422671, "link": null, "locked": false, - "text": "time", "fontSize": 20, "fontFamily": 1, + "text": "time", "textAlign": "left", "verticalAlign": "top", "containerId": null, @@ -1387,35 +1207,35 @@ "lineHeight": 1.25 }, { - "id": "cJmAKusziodsDR6vwTHJd", "type": "text", - "x": 213.76562500000006, - "y": 1198.4617585681735, - "width": 227.99981439113617, - "height": 50, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", + "version": 653, + "versionNonce": 1503490480, + "index": "ak", + "isDeleted": false, + "id": "cJmAKusziodsDR6vwTHJd", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 213.76562500000006, + "y": 1198.4617585681735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 227.99981439113617, + "height": 50, + "seed": 844025168, "groupIds": [], "frameId": null, - "index": "ak", "roundness": null, - "seed": 844025168, - "version": 653, - "versionNonce": 1503490480, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1721980422671, "link": null, "locked": false, - "text": "MsgRegisterConsumer\nto get the consumer id", "fontSize": 20, "fontFamily": 1, + "text": "MsgRegisterConsumer\nto get the consumer id", "textAlign": "left", "verticalAlign": "top", "containerId": null, @@ -1580,30 +1400,30 @@ ] }, { - "id": "pfUxn633PL7PLmo5UBP83", "type": "rectangle", - "x": 273.84472656250006, - "y": 1317.1248851957778, - "width": 480.92285156250006, - "height": 81.1279296875, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#e7f5ff", + "version": 657, + "versionNonce": 512779184, + "index": "ap", + "isDeleted": false, + "id": "pfUxn633PL7PLmo5UBP83", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 60, + "angle": 0, + "x": 273.84472656250006, + "y": 1317.1248851957778, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 480.92285156250006, + "height": 81.1279296875, + "seed": 394410832, "groupIds": [], "frameId": null, - "index": "ap", "roundness": { "type": 3 }, - "seed": 394410832, - "version": 657, - "versionNonce": 512779184, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -1615,35 +1435,35 @@ "locked": false }, { - "id": "ZxRHa3OTec0AyDpAifqQw", "type": "text", - "x": 429.95622801780706, - "y": 1345.1888500395278, - "width": 168.699848651886, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", + "version": 421, + "versionNonce": 1344826800, + "index": "aq", + "isDeleted": false, + "id": "ZxRHa3OTec0AyDpAifqQw", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 60, + "angle": 0, + "x": 429.95622801780706, + "y": 1345.1888500395278, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 168.699848651886, + "height": 25, + "seed": 1250610096, "groupIds": [], "frameId": null, - "index": "aq", "roundness": null, - "seed": 1250610096, - "version": 421, - "versionNonce": 1344826800, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1721980422671, "link": null, "locked": false, - "text": "Registered phase", "fontSize": 20, "fontFamily": 1, + "text": "Registered phase", "textAlign": "center", "verticalAlign": "middle", "containerId": "pfUxn633PL7PLmo5UBP83", @@ -2968,8 +2788,8 @@ }, { "type": "text", - "version": 1224, - "versionNonce": 550960976, + "version": 1229, + "versionNonce": 57883811, "index": "b0a", "isDeleted": false, "id": "prbzcGXJPRqkOVsHpdbs4", @@ -2979,27 +2799,27 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 1320.214702789982, - "y": 2151.3216625395276, + "x": 1321.581890289982, + "y": 2150.859422956194, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", - "width": 177.4198455810547, - "height": 75, + "width": 176.8798370361328, + "height": 25, "seed": 1092918096, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1721980686051, + "updated": 1721986800613, "link": null, "locked": false, "fontSize": 20, "fontFamily": 1, - "text": "spawnTime passed\nand at least one\nvalidator opted in", + "text": "spawnTime passed", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "spawnTime passed\nand at least one\nvalidator opted in", + "originalText": "spawnTime passed", "autoResize": true, "lineHeight": 1.25 }, @@ -3158,35 +2978,35 @@ "lineHeight": 1.25 }, { - "id": "UyHfZ2VJGqV1pDsuTD9cV", "type": "text", - "x": -108.94270833333303, - "y": 1338.8350902739019, - "width": 341.5998840332031, - "height": 70, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#b2f2bb", + "version": 408, + "versionNonce": 396094800, + "index": "b0f", + "isDeleted": false, + "id": "UyHfZ2VJGqV1pDsuTD9cV", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 60, + "angle": 0, + "x": -108.94270833333303, + "y": 1338.8350902739019, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 341.5998840332031, + "height": 70, + "seed": 723455312, "groupIds": [], "frameId": null, - "index": "b0f", "roundness": null, - "seed": 723455312, - "version": 408, - "versionNonce": 396094800, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1721981143713, "link": null, "locked": false, - "text": "successful launch of an \nOpt In chain", "fontSize": 28, "fontFamily": 1, + "text": "successful launch of an \nOpt In chain", "textAlign": "left", "verticalAlign": "top", "containerId": null, @@ -3269,135 +3089,476 @@ "lineHeight": 1.25 }, { - "id": "udO72dQy2VH8wQm_dcFbx", - "type": "line", - "x": 290.74479166666686, - "y": 2111.0854564848396, - "width": 156.04817708333314, - "height": 104.58333333333394, + "type": "arrow", + "version": 3249, + "versionNonce": 650980711, + "index": "b0i", + "isDeleted": false, + "id": "m_qDO-vi8cZvgdBk4OY4b", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#b2f2bb", + "x": 846.8877269011308, + "y": -46.21798959078784, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 15.316902269117037, + "height": 68.24783716308409, + "seed": 1130514985, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1726050249830, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "_VXIQppCSNb6MIFQLmDdy", + "focus": 0.35849365490303703, + "gap": 3.0676600529869305, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 7.549196922259171, + 17.26257820557447 + ], + [ + 15.316902269117037, + 68.24783716308409 + ] + ] + }, + { + "type": "text", + "version": 1353, + "versionNonce": 75562313, + "index": "b0k", + "isDeleted": false, + "id": "vcMys1puUDTEODl2EwIsK", "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "dashed", + "strokeWidth": 2, + "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, + "angle": 0, + "x": 753.897412075299, + "y": -91.7575214964049, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 271.15181761980057, + "height": 40, + "seed": 661970569, "groupIds": [], "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726050249751, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "MsgUpdateConsumer tx to update\nparameters of the consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgUpdateConsumer tx to update\nparameters of the consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1458, + "versionNonce": 1071934505, "index": "b0l", + "isDeleted": false, + "id": "tFQW2gbsKLsAOyWilxj8K", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 428.14924403990096, + "y": 277.42012051654547, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 268.2718479037285, + "height": 40, + "seed": 1748545481, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "QJHjyYDxam9jq3ifrE6rE", + "type": "arrow" + } + ], + "updated": 1726050249751, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "MsgUpdateConsumer to update\nparameters of the consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgUpdateConsumer to update\nparameters of the consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "version": 507, + "versionNonce": 1869886953, + "index": "b0n", + "isDeleted": false, + "id": "2-U8686bY9jFXGieWkDR-", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 897.5153405693067, + "y": 503.9058735824079, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.27734375, + "height": 113.27734375, + "seed": 165626697, + "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, - "seed": 1863593392, - "version": 301, - "versionNonce": 1529007952, + "boundElements": [ + { + "type": "text", + "id": "KHQGsY7fgsH6sdy3cGaQF" + }, + { + "id": "R77lEhp763M3wxU4R4AUu", + "type": "arrow" + } + ], + "updated": 1726050249751, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 368, + "versionNonce": 623349961, + "index": "b0o", "isDeleted": false, - "boundElements": null, - "updated": 1721981217963, + "id": "KHQGsY7fgsH6sdy3cGaQF", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 925.2484435646608, + "y": 550.4949564971956, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 57.71195983886719, + "height": 20, + "seed": 1300886057, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726050249751, "link": null, "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "deleted", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "2-U8686bY9jFXGieWkDR-", + "originalText": "deleted", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 928, + "versionNonce": 1308078791, + "index": "b0p", + "isDeleted": false, + "id": "R77lEhp763M3wxU4R4AUu", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1228.94835003748, + "y": 560.4036070443345, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 212.9098669669345, + "height": 0.06095012343837425, + "seed": 377799849, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1726050249830, + "link": null, + "locked": false, + "startBinding": { + "elementId": "xzn9Qid5DuHXfVeES6XML", + "focus": -1.6125075729555916, + "gap": 12.266880296200611, + "fixedPoint": null + }, + "endBinding": { + "elementId": "2-U8686bY9jFXGieWkDR-", + "focus": -0.0010994696159469046, + "gap": 5.2458504453370125, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", "points": [ [ 0, 0 ], [ - 156.04817708333314, - 104.58333333333394 + -212.9098669669345, + 0.06095012343837425 ] + ] + }, + { + "type": "text", + "version": 982, + "versionNonce": 1454391207, + "index": "b0q", + "isDeleted": false, + "id": "xzn9Qid5DuHXfVeES6XML", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1038.5910565520608, + "y": 508.1367267481339, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 190.46387976408005, + "height": 40, + "seed": 1596160487, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "R77lEhp763M3wxU4R4AUu", + "type": "arrow" + } ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + "updated": 1726050249830, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "provider unbonding period\nelapses", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider unbonding period\nelapses", + "autoResize": true, + "lineHeight": 1.25 }, { - "type": "line", - "version": 598, - "versionNonce": 1734852016, - "index": "b0m", + "type": "arrow", + "version": 3919, + "versionNonce": 1472967719, + "index": "b0r", "isDeleted": false, - "id": "zHhFHMZyTd9z3sepnFUy8", + "id": "j2LU4pG8RRialcQ5UiLt8", "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "dashed", + "strokeWidth": 2, + "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, "angle": 0, - "x": 1012.4072684983414, - "y": 2107.4292076232887, - "strokeColor": "#e03131", - "backgroundColor": "#b2f2bb", - "width": 205.91796875000023, - "height": 134.21875, - "seed": 1304021840, + "x": 846.8190532217034, + "y": 150.38244900733721, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 3.921839226565794, + "height": 70.53165451030857, + "seed": 1614788649, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1721981220095, + "updated": 1726050249830, "link": null, "locked": false, - "startBinding": null, - "endBinding": null, + "startBinding": { + "elementId": "OSTXsQ9rLudhM8FpW1Tmi", + "focus": -1.0859967278851912, + "gap": 8.395430517472732, + "fixedPoint": null + }, + "endBinding": { + "elementId": "OSTXsQ9rLudhM8FpW1Tmi", + "focus": 1.0534275758796827, + "gap": 12.215199762345037, + "fixedPoint": null + }, "lastCommittedPoint": null, "startArrowhead": null, - "endArrowhead": null, + "endArrowhead": "arrow", "points": [ [ - 0, + -13.968216988547823, 0 ], [ - -205.91796875000023, - 134.21875 + -14.070286970241341, + 32.862651310234156 + ], + [ + -10.148447743675547, + 70.53165451030857 ] ] }, { - "id": "0kk2QokOsQCRZigvw5I2z", "type": "text", - "x": 460.60807291666663, - "y": 2199.17139398484, - "width": 395.6397705078125, - "height": 140, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#b2f2bb", + "version": 1327, + "versionNonce": 675072329, + "index": "b0s", + "isDeleted": false, + "id": "Q1md4XcAv126O3dfBiN4f", "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "dashed", + "strokeWidth": 2, + "strokeStyle": "solid", "roughness": 1, - "opacity": 60, + "opacity": 100, + "angle": 0, + "x": 398.65072961980434, + "y": 429.4083943655648, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 463.80765676498413, + "height": 100, + "seed": 1466313769, "groupIds": [], "frameId": null, - "index": "b0n", "roundness": null, - "seed": 1799721904, - "version": 219, - "versionNonce": 205377456, - "isDeleted": false, - "boundElements": null, - "updated": 1721981246158, + "boundElements": [ + { + "id": "JQNfOufG1Sc3Ln1iHc6v8", + "type": "arrow" + } + ], + "updated": 1726050272067, "link": null, "locked": false, - "text": "NO MsgInitializeConsumer\nor MsgUpdateConsumer\nshould be executed as \ntransactions during this time", - "fontSize": 28, - "fontFamily": 5, + "fontSize": 16, + "fontFamily": 1, + "text": "to create a Top N chain, two MsgUpdateConsumer\nmessages have to be submitted:\n1. MsgUpdateConsumer: set the owner = gov module\n2. (in a gov proposal) MsgUpdateConsumer: set Top N > 0\n", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "NO MsgInitializeConsumer\nor MsgUpdateConsumer\nshould be executed as \ntransactions during this time", + "originalText": "to create a Top N chain, two MsgUpdateConsumer\nmessages have to be submitted:\n1. MsgUpdateConsumer: set the owner = gov module\n2. (in a gov proposal) MsgUpdateConsumer: set Top N > 0\n", "autoResize": true, "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 5249, + "versionNonce": 697931977, + "index": "b0t", + "isDeleted": false, + "id": "N97DnWZ0c8Ae4DOO-8yVa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 912.1298439127376, + "y": 261.1390744105784, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 87.23179762593497, + "height": 116.05529009929515, + "seed": 957154823, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1726050309252, + "link": null, + "locked": false, + "startBinding": { + "elementId": "SI0HtgaAMGQsMr1Y7bXrA", + "focus": 0.5897971482166972, + "gap": 4.261005526060927, + "fixedPoint": null + }, + "endBinding": { + "elementId": "_VXIQppCSNb6MIFQLmDdy", + "focus": 0.8224400651501185, + "gap": 8.1682673389045, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 66.42430873874923, + -105.25145845887039 + ], + [ + -20.80748888718574, + -116.05529009929515 + ] + ] } ], "appState": { - "gridSize": null, + "gridSize": 20, + "gridStep": 5, + "gridModeEnabled": false, "viewBackgroundColor": "#ffffff" }, "files": {} diff --git a/docs/docs/adrs/figures/adr19_phases_of_a_consumer_chain.png b/docs/docs/adrs/figures/adr19_phases_of_a_consumer_chain.png index ce6eb8c451..a99e36aaf6 100644 Binary files a/docs/docs/adrs/figures/adr19_phases_of_a_consumer_chain.png and b/docs/docs/adrs/figures/adr19_phases_of_a_consumer_chain.png differ