From 9acd9c89a585a560a3ab16a9b4487ef5b7a292b7 Mon Sep 17 00:00:00 2001 From: mpoke Date: Mon, 26 Aug 2024 19:58:30 +0200 Subject: [PATCH 01/32] add docs/build folder --- .gitignore | 2 +- docs/docs/build/_category_.json | 4 ++++ docs/docs/build/modules/01-overview.md | 20 +++++++++++++++++++ docs/docs/build/modules/02-provider.md | 7 +++++++ docs/docs/build/modules/03-consumer.md | 7 +++++++ docs/docs/build/modules/04-democracy.md | 7 +++++++ docs/docs/build/modules/_category_.json | 4 ++++ .../{ => build}/upgrading/_category_.json | 0 .../{ => build}/upgrading/migrate_v4_v5.md | 0 docs/docs/features/_category_.json | 2 +- docs/docs/frequently-asked-questions.md | 2 +- docs/docs/integrators/_category_.json | 2 +- docs/docs/introduction/_category_.json | 2 +- docs/docs/validators/_category_.json | 2 +- 14 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 docs/docs/build/_category_.json create mode 100644 docs/docs/build/modules/01-overview.md create mode 100644 docs/docs/build/modules/02-provider.md create mode 100644 docs/docs/build/modules/03-consumer.md create mode 100644 docs/docs/build/modules/04-democracy.md create mode 100644 docs/docs/build/modules/_category_.json rename docs/docs/{ => build}/upgrading/_category_.json (100%) rename docs/docs/{ => build}/upgrading/migrate_v4_v5.md (100%) diff --git a/.gitignore b/.gitignore index d93ff09e5a..5575d76998 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ release/ docs/tla/states/ *.out vendor/ -build/ +/build/ .vscode .idea __debug_* diff --git a/docs/docs/build/_category_.json b/docs/docs/build/_category_.json new file mode 100644 index 0000000000..947929f840 --- /dev/null +++ b/docs/docs/build/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Build", + "position": 3 +} diff --git a/docs/docs/build/modules/01-overview.md b/docs/docs/build/modules/01-overview.md new file mode 100644 index 0000000000..d525ef1c2f --- /dev/null +++ b/docs/docs/build/modules/01-overview.md @@ -0,0 +1,20 @@ +--- +sidebar_position: 1 +--- + +# Overview + +ICS consists of two main modules: + +* [x/provider](./02-provider.md) + * Provides to consumer chains updated information of opted in validators. + * Distributes ICS rewards to opted in validators. + * Jails and slashes validators that misbehave on consumer chains. +* [x/consumer](./03-consumer.md) + * Sends to the consensus engine the validator sets received from the provider chain. + * Splits consumer block rewards and sends ICS rewards to the provider chain. + * Notifies the provider chain of downtime infractions. + +In addition, the following modules are added to ICS to extend its functionality: + +* [x/democracy](04-democracy.md) \ No newline at end of file diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md new file mode 100644 index 0000000000..0e68eba4f6 --- /dev/null +++ b/docs/docs/build/modules/02-provider.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 2 +--- + +# x/provider + +TBA \ No newline at end of file diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md new file mode 100644 index 0000000000..118c96c7f1 --- /dev/null +++ b/docs/docs/build/modules/03-consumer.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 3 +--- + +# x/consumer + +TBA \ No newline at end of file diff --git a/docs/docs/build/modules/04-democracy.md b/docs/docs/build/modules/04-democracy.md new file mode 100644 index 0000000000..b5d101c4ff --- /dev/null +++ b/docs/docs/build/modules/04-democracy.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 4 +--- + +# x/democracy + +TBA \ No newline at end of file diff --git a/docs/docs/build/modules/_category_.json b/docs/docs/build/modules/_category_.json new file mode 100644 index 0000000000..2536f423ff --- /dev/null +++ b/docs/docs/build/modules/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Modules", + "position": 1 +} diff --git a/docs/docs/upgrading/_category_.json b/docs/docs/build/upgrading/_category_.json similarity index 100% rename from docs/docs/upgrading/_category_.json rename to docs/docs/build/upgrading/_category_.json diff --git a/docs/docs/upgrading/migrate_v4_v5.md b/docs/docs/build/upgrading/migrate_v4_v5.md similarity index 100% rename from docs/docs/upgrading/migrate_v4_v5.md rename to docs/docs/build/upgrading/migrate_v4_v5.md diff --git a/docs/docs/features/_category_.json b/docs/docs/features/_category_.json index 4aaeb07417..e456a6a85c 100644 --- a/docs/docs/features/_category_.json +++ b/docs/docs/features/_category_.json @@ -1,4 +1,4 @@ { "label": "Features", - "position": 3 + "position": 2 } diff --git a/docs/docs/frequently-asked-questions.md b/docs/docs/frequently-asked-questions.md index 379e0ecef2..5fc842939f 100644 --- a/docs/docs/frequently-asked-questions.md +++ b/docs/docs/frequently-asked-questions.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 8 title: "Frequently Asked Questions" slug: /faq --- diff --git a/docs/docs/integrators/_category_.json b/docs/docs/integrators/_category_.json index 88e78bd99d..38c3cf5b47 100644 --- a/docs/docs/integrators/_category_.json +++ b/docs/docs/integrators/_category_.json @@ -1,4 +1,4 @@ { "label": "Integrators Guide", - "position": 5 + "position": 6 } diff --git a/docs/docs/introduction/_category_.json b/docs/docs/introduction/_category_.json index 34d319ff6a..fa1c06ac80 100644 --- a/docs/docs/introduction/_category_.json +++ b/docs/docs/introduction/_category_.json @@ -1,4 +1,4 @@ { "label": "Introduction", - "position": 2 + "position": 1 } diff --git a/docs/docs/validators/_category_.json b/docs/docs/validators/_category_.json index 4fb7fbe69d..e4a84fad30 100644 --- a/docs/docs/validators/_category_.json +++ b/docs/docs/validators/_category_.json @@ -1,4 +1,4 @@ { "label": "Validators Guide", - "position": 4 + "position": 5 } From cf12abc8205f779f59833fa82d09f1239b5117dc Mon Sep 17 00:00:00 2001 From: mpoke Date: Thu, 5 Sep 2024 20:12:56 +0200 Subject: [PATCH 02/32] add module structure --- .gitignore | 2 +- docs/docs/build/modules/02-provider.md | 20 +++++++++++++++++++- docs/docs/build/modules/03-consumer.md | 20 +++++++++++++++++++- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 5575d76998..d93ff09e5a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ release/ docs/tla/states/ *.out vendor/ -/build/ +build/ .vscode .idea __debug_* diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 0e68eba4f6..feb6ec1cb8 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -4,4 +4,22 @@ sidebar_position: 2 # x/provider -TBA \ No newline at end of file +## Overview + +## State + +## State Transitions + +## Messages + +## Begin-Block + +## End-Block + +## Hooks + +## Events + +## Parameters + +## Client \ No newline at end of file diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 118c96c7f1..0cc668af4b 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -4,4 +4,22 @@ sidebar_position: 3 # x/consumer -TBA \ No newline at end of file +## Overview + +## State + +## State Transitions + +## Messages + +## Begin-Block + +## End-Block + +## Hooks + +## Events + +## Parameters + +## Client \ No newline at end of file From aad44663ed693bc0831a3a8f5d0234f88bd0d74e Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 11 Sep 2024 17:58:37 +0200 Subject: [PATCH 03/32] add provider messages to docs -- wip --- docs/docs/build/modules/01-overview.md | 2 + docs/docs/build/modules/02-provider.md | 119 +++++++++++++++++++++++++ 2 files changed, 121 insertions(+) diff --git a/docs/docs/build/modules/01-overview.md b/docs/docs/build/modules/01-overview.md index d525ef1c2f..4377496390 100644 --- a/docs/docs/build/modules/01-overview.md +++ b/docs/docs/build/modules/01-overview.md @@ -15,6 +15,8 @@ ICS consists of two main modules: * Splits consumer block rewards and sends ICS rewards to the provider chain. * Notifies the provider chain of downtime infractions. +Note that `x/types` contains types shared by both modules. + In addition, the following modules are added to ICS to extend its functionality: * [x/democracy](04-democracy.md) \ No newline at end of file diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index feb6ec1cb8..bdd246321b 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -12,6 +12,125 @@ sidebar_position: 2 ## Messages +### MsgUpdateParams + +`MsgUpdateParams` updates the [provider module parameters](#parameters). +The params are updated through a governance proposal where the signer is the gov module account address. + +```proto +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address of the governance account. + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // params defines the x/provider parameters to update. + Params params = 2 [(gogoproto.nullable) = false]; +} +``` + +### ChangeRewardDenomsProposal + +`MsgChangeRewardDenoms` updates the list of whitelisted denoms accepted by the provider as ICS rewards. +The list of accepted denoms is updated through a governance proposal where the signer is the gov module account address. + +Note that this message replaces `ChangeRewardDenomsProposal`, which is deprecated. + +```proto +message MsgChangeRewardDenoms { + option (cosmos.msg.v1.signer) = "authority"; + + // the list of consumer reward denoms to add + repeated string denoms_to_add = 1; + // the list of consumer reward denoms to remove + repeated string denoms_to_remove = 2; + // signer address + string authority = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; +} +``` + +### MsgCreateConsumer + +`MsgCreateConsumer` enables a user to create a consumer chain. + +Both the `chain_id` and `metadata` fields are mandatory. +Both the `initialization_parameters` and `power_shaping_parameters` fields are optional. +The parameters not provided are set to their zero value. + +The owner of the created consumer chain is the submitter of the message. +This message cannot be submitted as part of a governance proposal, i.e., the submitter cannot be the gov module account address. +As a result, if the `power_shaping_parameters` are provided, then `power_shaping_parameters.top_N` must be set to zero (i.e., opt-in consumer chain). + +To create a top-n consumer chain, the following steps are require: + +- Create a opt-in consumer chain (via `MsgCreateConsumer`). +- Change the ownership of the consuemr chain to the gov module account address (via `MsgUpdateConsumer`). +- Change `power_shaping_parameters.top_N` to a value in `[50, 100]` trough a governance proposal with a `MsgUpdateConsumer` message. + +If the `initialization_parameters` field is set and `initialization_parameters.spawn_time > 0`, then the consumer chain will be scheduled to launch at `spawn_time`. + +```proto +message MsgCreateConsumer { + option (cosmos.msg.v1.signer) = "submitter"; + + // 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"]; + + // the chain id of the new consumer chain + string chain_id = 2; + + ConsumerMetadata metadata = 3 [ (gogoproto.nullable) = false ]; + + ConsumerInitializationParameters initialization_parameters = 4; + + PowerShapingParameters power_shaping_parameters = 5; +} +``` + +### MsgUpdateConsumer + +`MsgUpdateConsumer` enables the owner of a consumer chain to update its parameters (e.g., set a new owner). + +Note that only the `owner` (i.e., signer) and `consumer_id` fields are mandatory. +The others field are optional. Not providing one of them will leave the existing values unchanged. +Providing one of `metadata`, `initialization_parameters` or `power_shaping_parameters`, +will update all the containing fields. +If one of the containing fields is missing, it will be set to its zero value. +For example, updating the `initialization_parameters` without specifying the `spawn_time`, will set the `spawn_time` to zero. + +If the `initialization_parameters` field is set and `initialization_parameters.spawn_time > 0`, then the consumer chain will be scheduled to launch at `spawn_time`. +Updating the `spawn_time` from a positive value to zero will remove the consumer chain from the list of scheduled to launch chains. +If the consumer chain is already launched, updating the `initialization_parameters` is no longer possible. + +If the `power_shaping_parameters` field is set and `power_shaping_parameters.top_N` is possitive, then the owner needs to be the gov module account address. + +If the `new_owner_address` field is set to a value different than the gov module account address, then `top_N` needs to be zero. + +```proto +message MsgUpdateConsumer { + option (cosmos.msg.v1.signer) = "owner"; + + // 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; +} +``` + ## Begin-Block ## End-Block From b73bbcfe893dac2e4b91b6dfec09f130adeb05d1 Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 10:00:45 +0200 Subject: [PATCH 04/32] add message description to docs --- docs/docs/build/modules/02-provider.md | 245 +++++++++++++++++++++++++ 1 file changed, 245 insertions(+) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index bdd246321b..747d53ee2b 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -131,6 +131,251 @@ message MsgUpdateConsumer { } ``` +### MsgRemoveConsumer + +`MsgRemoveConsumer` enables the owner of a _launched_ consumer chain to remove it from the provider chain. +The message will first stop the consumer chain, which means the provider will stop sending it validator updates over IBC. +Then, once the unbonding period elapses, the consumer chain is removed from the provider state. + +```proto +message MsgRemoveConsumer { + 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"]; +} +``` + +### MsgOptIn + +`MsgOptIn` enables a validator to opt in to validate a consumer chain. +Note that _validators can opt in to validate consumer chains that are not launched yet_. +The signer of the message needs to match the validator address on the provider. + +Note that opting in doesn't guarantee a spot in the consumer chain's validator set. +Use the `has-to-validate` query to check if the validator is part of the consumer chain's validator set. +For more details, check out the [validator guide to Partial Set Security](../../validators/partial-set-security-for-validators.md). + +Note that since the introduction of the +[Permissionless ICS feature](https://cosmos.github.io/interchain-security/adrs/adr-019-permissionless-ics) +the `chain_id` field is deprecated. +Users should use `consumer_id` instead. +You can use the `list-consumer-chains` query to get the list of all consumer chains and their consumer IDs. + +The `consumer_key` field is optional. +It enables the validator to set the consensus public key to use on the consumer chain. +The validator can assing (or re-assing) this key also later via [MsgAssignConsumerKey](#msgassignconsumerkey). + +:::warning +Validators are strongly recommended to assign a separate key for each consumer chain +and **not** reuse the provider key across consumer chains for security reasons. + +This is especially important since the introduction of the +[Permissionless ICS feature](https://cosmos.github.io/interchain-security/adrs/adr-019-permissionless-ics) +that allows multiple consumer chains to have the same chain ID. +A validator using the same consensus key to validate on two chains with the same chain ID might get slashed for double signing. +::: + +```proto +message MsgOptIn { + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + option (cosmos.msg.v1.signer) = "signer"; + + // [DEPRECATED] use `consumer_id` instead + string chain_id = 1 [deprecated = true]; + // the validator address on the provider + string provider_addr = 2 [ (gogoproto.moretags) = "yaml:\"address\"" ]; + // (optional) The consensus public key to use on the consumer in json string format corresponding to proto-any, + // for example `{"@type":"/cosmos.crypto.ed25519.PubKey","key":"Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is="}`. + // This field is optional and can remain empty (i.e., `consumer_key = ""`). A validator can always change the + // consumer public key at a later stage by issuing a `MsgAssignConsumerKey` message. + string consumer_key = 3; + // submitter address + string signer = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // the consumer id of the consumer chain to opt in to + string consumer_id = 5; +} +``` + +### MsgAssignConsumerKey + +`MsgAssignConsumerKey` enables a validator to assign the consensus public key to use on a consumer chain. +Without assigning a specific key, the validator will need to use the same key as on the provider chain. + +:::warning +Validators are strongly recommended to assign a separate key for each consumer chain +and **not** reuse the provider key across consumer chains for security reasons. + +This is especially important since the introduction of the +[Permissionless ICS feature](https://cosmos.github.io/interchain-security/adrs/adr-019-permissionless-ics) +that allows multiple consumer chains to have the same chain ID. +A validator using the same consensus key to validate on two chains with the same chain ID might get slashed for double signing. +::: + +The signer of the message needs to match the validator address on the provider. + +Note that since the introduction of the +[Permissionless ICS feature](https://cosmos.github.io/interchain-security/adrs/adr-019-permissionless-ics) +the `chain_id` field is deprecated. +Users should use `consumer_id` instead. +You can use the `list-consumer-chains` query to get the list of all consumer chains and their consumer IDs. + +For more details, check out the [description of the Key Assignment feature](../../features/key-assignment.md). + +```proto +message MsgAssignConsumerKey { + option (cosmos.msg.v1.signer) = "signer"; + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + + // [DEPRECATED] use `consumer_id` instead + string chain_id = 1 [deprecated = true]; + // The validator address on the provider + string provider_addr = 2 [ (gogoproto.moretags) = "yaml:\"address\"" ]; + // The consensus public key to use on the consumer. + // in json string format corresponding to proto-any, ex: + // `{"@type":"/cosmos.crypto.ed25519.PubKey","key":"Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is="}` + string consumer_key = 3; + + string signer = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // the consumer id of the consumer chain to assign a consensus public key to + string consumer_id = 5; +} +``` +### MsgOptOut + +`MsgOptOut` enables a validator to opt out from validating a launched consumer chain. +The signer of the message needs to match the validator address on the provider. + +Note that since the introduction of the +[Permissionless ICS feature](https://cosmos.github.io/interchain-security/adrs/adr-019-permissionless-ics) +the `chain_id` field is deprecated. +Users should use `consumer_id` instead. +You can use the `list-consumer-chains` query to get the list of all consumer chains and their consumer IDs. + +For more details on optin out, check out the [validator guide to Partial Set Security](../../validators/partial-set-security-for-validators.md). + +```proto +message MsgOptOut { + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + option (cosmos.msg.v1.signer) = "signer"; + + // [DEPRECATED] use `consumer_id` instead + string chain_id = 1 [deprecated = true]; + // the validator address on the provider + string provider_addr = 2 [ (gogoproto.moretags) = "yaml:\"address\"" ]; + // submitter address + string signer = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // the consumer id of the consumer chain to opt out from + string consumer_id = 4; +} +``` + +### MsgSetConsumerCommissionRate + +`MsgSetConsumerCommissionRate` enables validators to set a per-consumer chain commission rate. +The `rate` is a decimal in `[minRate, 1]`, with `minRate` corresponding to the minimum commission rate set on the +provider chain (see `min_commission_rate` in `interchain-security-pd query staking params`). + +The signer of the message needs to match the validator address on the provider. + +Note that since the introduction of the +[Permissionless ICS feature](https://cosmos.github.io/interchain-security/adrs/adr-019-permissionless-ics) +the `chain_id` field is deprecated. +Users should use `consumer_id` instead. +You can use the `list-consumer-chains` query to get the list of all consumer chains and their consumer IDs. + +For more details on setting per-consumer chain commission rates, check out the [validator guide to Partial Set Security](../../validators/partial-set-security-for-validators.md). + +```proto +message MsgSetConsumerCommissionRate { + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + option (cosmos.msg.v1.signer) = "signer"; + + // The validator address on the provider + string provider_addr = 1 [ (gogoproto.moretags) = "yaml:\"address\"" ]; + // [DEPRECATED] use `consumer_id` instead + string chain_id = 2 [deprecated = true]; + // The rate to charge delegators on the consumer chain, as a fraction + string rate = 3 [ + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (gogoproto.nullable) = false + ]; + // submitter address + string signer = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // the consumer id of the consumer chain to set the commission rate + string consumer_id = 5; +} +``` + +### MsgSubmitConsumerMisbehaviour + +`MsgSubmitConsumerMisbehaviour` enables users to submit to the provider evidence of a light client attack that occured on a consumer chain. +This message can be submitted directly by users, e.g., via the CLI command `tx provider submit-consumer-misbehaviour`, +or by a relayer that can be set to automatically detect consumer chain misbehaviors, e.g., [Hermes](https://github.com/informalsystems/hermes). + +Note that since the introduction of the +[Permissionless ICS feature](https://cosmos.github.io/interchain-security/adrs/adr-019-permissionless-ics) +the `chain_id` field is deprecated. +Users should use `consumer_id` instead. +You can use the `list-consumer-chains` query to get the list of all consumer chains and their consumer IDs. + +For more details on reporting light client attacks that occured on consumer chains, check out the [guide on equivocation infractions](../../features/slashing.md#equivocation-infractions). + +```proto +message MsgSubmitConsumerMisbehaviour { + option (cosmos.msg.v1.signer) = "submitter"; + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string submitter = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // The Misbehaviour of the consumer chain wrapping + // two conflicting IBC headers + ibc.lightclients.tendermint.v1.Misbehaviour misbehaviour = 2; + // the consumer id of the consumer chain where the misbehaviour occurred + string consumer_id = 3; +} +``` + +### MsgSubmitConsumerDoubleVoting + +`MsgSubmitConsumerDoubleVoting` enables users to submit to the provider evidence of a double signing infraction that occured on a consumer chain. +This message can be submitted directly by users, e.g., via the CLI command `tx provider submit-consumer-double-voting`, +or by a relayer that can be set to automatically detect consumer chain misbehaviors, e.g., [Hermes](https://github.com/informalsystems/hermes). + +Note that since the introduction of the +[Permissionless ICS feature](https://cosmos.github.io/interchain-security/adrs/adr-019-permissionless-ics) +the `chain_id` field is deprecated. +Users should use `consumer_id` instead. +You can use the `list-consumer-chains` query to get the list of all consumer chains and their consumer IDs. + +For more details on reporting double signing infractions that occured on consumer chains, check out the [guide on equivocation infractions](../../features/slashing.md#equivocation-infractions). + +```proto +message MsgSubmitConsumerDoubleVoting { + option (cosmos.msg.v1.signer) = "submitter"; + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string submitter = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // The equivocation of the consumer chain wrapping + // an evidence of a validator that signed two conflicting votes + tendermint.types.DuplicateVoteEvidence duplicate_vote_evidence = 2; + // The light client header of the infraction block + ibc.lightclients.tendermint.v1.Header infraction_block_header = 3; + // the consumer id of the consumer chain where the double-voting took place + string consumer_id = 4; +} +``` + ## Begin-Block ## End-Block From 01321eb2a99719709d2ed469e87081aea1e9068d Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 11:01:04 +0200 Subject: [PATCH 05/32] add provider params --- docs/docs/build/modules/02-provider.md | 95 ++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 747d53ee2b..4205935e82 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -386,4 +386,99 @@ message MsgSubmitConsumerDoubleVoting { ## Parameters +The provider module contains the following parameters. + +### `TemplateClient` + +`TemplateClient` is a template of an IBC `ClientState` used for launching consumer chains. + +### TrustingPeriodFraction + +| Type | Default value | +| ------ | ------------- | +| string | "0.66" | + +`TrustingPeriodFraction` is used to used to compute the trusting period of IBC clients (for both provider and consumer chains) as `UnbondingPeriod / TrustingPeriodFraction`. + +The param is set as a string, and converted to a `sdk.Dec` when used. + +### CcvTimeoutPeriod + +| Type | Default value | +| ------------- | ------------------ | +| time.Duration | 2419200s (4 weeks) | + +`CcvTimeoutPeriod` is the period used to compute the timeout timestamp when sending IBC packets. +For more details, see the [IBC specification of Channel & Packet Semantics](https://github.com/cosmos/ibc/blob/main/spec/core/ics-004-channel-and-packet-semantics/README.md#sending-packets). + +:::warning +If a sent packet is not relayed within this period, then the packet times out. The CCV channel used by the interchain security protocol is closed, and the corresponding consumer is removed. +::: + +`CcvTimeoutPeriod` may have different values on the provider and consumer chains. +`CcvTimeoutPeriod` on the provider **must** be larger than consumer unbonding period. + +### SlashMeterReplenishPeriod + +| Type | Default value | +| ------------- | -------------- | +| time.Duration | 3600s (1 hour) | + +`SlashMeterReplenishPeriod` is the time interval at which the meter for [jail throttling](https://cosmos.github.io/interchain-security/adrs/adr-008-throttle-retries) is replenished. +The meter is replenished to an amount equal to the allowance for that block, or `SlashMeterReplenishFraction * CurrentTotalVotingPower`. + +### SlashMeterReplenishFraction + +| Type | Default value | +| ------ | ------------- | +| string | "0.05" | + +`SlashMeterReplenishFraction` is the fraction (in range `[0, 1]`) of total voting power that is replenished to the slash meter when a replenishment occurs. +This param also serves as a maximum fraction of total voting power that the slash meter can hold. + +The param is set as a string, and converted to a `sdk.Dec` when used. + +### ConsumerRewardDenomRegistrationFee + +`ConsumerRewardDenomRegistrationFee` is deprecated. + +### BlocksPerEpoch + +| Type | Default value | +| ----- | ------------- | +| int64 | 600 | + +`BlocksPerEpoch` is the number of blocks in an ICS epoch. +The provider sends validator updates to the consumer chains only once per epoch. + +:::warning +It is recommended for the length of an ICS epoch to not exceed a day. +Large epochs would lead to delays in validator updates sent to the consumer chains, +which might impact the security of the consumer chains. +::: + +### NumberOfEpochsToStartReceivingRewards + +| Type | Default value | +| ----- | ------------- | +| int64 | 24 | + +`NumberOfEpochsToStartReceivingRewards` is the number of ICS epochs that a validator +needs to wait after opting in on a consumer chain before being eligible to ICS reawards +from that consumer. + +### MaxProviderConsensusValidators + +| Type | Default value | +| ----- | ------------- | +| int64 | 180 | + +`MaxProviderConsensusValidators` is the maximum number of validators sent to +the provider consensus enginer. +This was introduced with the [Inactive Provider Validators feature](https://cosmos.github.io/interchain-security/adrs/adr-017-allowing-inactive-validators) +and it replaces the `MaxValidators` staking module parameter. +As a result, the provider chain can differentiate between +_bonded validators_, i.e., validators that have stake locked on the provider chain, +and _active validator_, i.e., validators that participate actively in the provider chain's consensus. + ## Client \ No newline at end of file From 4d1d03a97f40631eeec136ed0b349606e69a7252 Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 12:37:03 +0200 Subject: [PATCH 06/32] add consumer params --- docs/docs/build/modules/03-consumer.md | 115 +++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 0cc668af4b..f3c9eac2b5 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -22,4 +22,119 @@ sidebar_position: 3 ## Parameters +:::warning +The consumer module parameters are set by the provider when creating the consumer genesis (i.e., when launching the consumer chain). +As a result, changes of these parameters might results in incompatibilities between different versions of consumers and providers. +::: + +The consumer module contains the following parameters. + +### Enabled + +`Enabled` is deprecated. + +### BlocksPerDistributionTransmission + + +| Type | Default value | +| ----- | ------------- | +| int64 | 1000 | + +`BlocksPerDistributionTransmission` is the number of blocks between rewards transfers from the consumer to the provider. + +### DistributionTransmissionChannel + +| Type | Default value | +| ------ | ------------- | +| string | "" | + +`DistributionTransmissionChannel` is the provider chain IBC channel used for receiving consumer chain reward distribution token transfers. This is automatically set during the consumer-provider handshake procedure. + +Providing an IBC transfer channel enables a consumer chain to re-use one of the existing channels to the provider for consumer chain rewards distribution. +This will preserve the `ibc denom` that may already be in use. +This is especially important for standalone chains transitioning to become consumer chains. +For more details, see the [changeover procedure](../consumer-development/changeover-procedure.md). + +### ProviderFeePoolAddrStr + +| Type | Default value | +| ------ | ------------- | +| string | "" | + +`ProviderFeePoolAddrStr` is the provider chain fee pool address used for receiving consumer chain reward distribution token transfers. This is automatically set during the consumer-provider handshake procedure. + +### CcvTimeoutPeriod + +| Type | Default value | +| ------------- | ------------------ | +| time.Duration | 2419200s (4 weeks) | + +`CcvTimeoutPeriod` is the period used to compute the timeout timestamp when sending IBC packets. +`CcvTimeoutPeriod` may have different values on the provider and consumer chains. + +### TransferTimeoutPeriod + +| Type | Default value | +| ------------- | -------------- | +| time.Duration | 3600s (1 hour) | + +`TransferTimeoutPeriod` is the timeout period for consumer chain reward distribution IBC packets. + +### ConsumerRedistributionFraction + +| Type | Default value | +| ------ | ------------- | +| string | "0.75" | + +`ConsumerRedistributionFraction` is 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%`. +For example, a consumer with `ConsumerRedistributionFraction` set to `"0.75"` would send `75%` of its block rewards and accumulated fees to the consumer redistribution address, and the remaining `25%` to the provider chain every `BlocksPerDistributionTransmission` blocks. + +### HistoricalEntries + +| Type | Default value | +| ----- | ------------- | +| int64 | 10000 | + +`HistoricalEntries` is the number of historical info entries to persist in store (see the staking module parameter with the same name for details). +`HistoricalEntries` is needed since the consumer module acts as a staking module on the consumer chain. + +### UnbondingPeriod + +| Type | Default value | +| ------------- | ------------------ | +| time.Duration | 1209600s (2 weeks) | + +`UnbondingPeriod` is the unbonding period on the consumer chain. +It is recommended that every consumer chain set and unbonding period shorter than provider unbonding period, e.g., one week shorter. + +### SoftOptOutThreshold + +`SoftOptOutThreshold` is deprecated. + +### RewardDenoms + +| Type | Default value | +| -------- | ------------- | +| []string | []string{} | + +`RewardDenoms` are the denominations which are allowed to be sent to the provider as ICS rewards. + +### ProviderRewardDenoms + +| Type | Default value | +| -------- | ------------- | +| []string | []string{} | + +`ProviderRewardDenoms` are the denominations coming from the provider which are allowed to be used as ICS rewards. e.g. "uatom". + +### RetryDelayPeriod + +| Type | Default value | +| ------------- | -------------- | +| time.Duration | 3600s (1 hour) | + +`RetryDelayPeriod` is the period at which the consumer retries to send a `SlashPacket` that was rejected by the provider. +For more details, see [ADR-008](../adrs/adr-008-throttle-retries.md). + ## Client \ No newline at end of file From 521a70d44a6353c59df4506b92a5f21439c1f61c Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 12:39:35 +0200 Subject: [PATCH 07/32] remove params.md --- docs/docs/build/modules/02-provider.md | 4 +- docs/docs/introduction/params.md | 148 ------------------------- 2 files changed, 3 insertions(+), 149 deletions(-) delete mode 100644 docs/docs/introduction/params.md diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 4205935e82..05d653730a 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -398,7 +398,9 @@ The provider module contains the following parameters. | ------ | ------------- | | string | "0.66" | -`TrustingPeriodFraction` is used to used to compute the trusting period of IBC clients (for both provider and consumer chains) as `UnbondingPeriod / TrustingPeriodFraction`. +`TrustingPeriodFraction` is used to used to compute the trusting period of IBC clients +(for both provider and consumer chains) as `UnbondingPeriod / TrustingPeriodFraction`. +Note that a light clients must be updated within the trusting period in order to avoid being frozen. The param is set as a string, and converted to a `sdk.Dec` when used. diff --git a/docs/docs/introduction/params.md b/docs/docs/introduction/params.md deleted file mode 100644 index 3b52e772ab..0000000000 --- a/docs/docs/introduction/params.md +++ /dev/null @@ -1,148 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Interchain Security Parameters - -The parameters necessary for Interchain Security (ICS) are defined in - -- the `Params` structure in `proto/interchain_security/ccv/provider/v1/provider.proto` for the provider; -- the `Params` structure in `proto/interchain_security/ccv/consumer/v1/consumer.proto` for the consumer. - -## Time-Based Parameters - -ICS relies on the following time-based parameters. - -### ProviderUnbondingPeriod -`ProviderUnbondingPeriod` is the unbonding period on the provider chain as configured during chain genesis. This parameter can later be changed via governance. - -### ConsumerUnbondingPeriod -`ConsumerUnbondingPeriod` is the unbonding period on the consumer chain. - -:::info -`ConsumerUnbondingPeriod` is set via the `ConsumerAdditionProposal` governance proposal to add a new consumer chain. -It is recommended that every consumer chain set and unbonding period shorter than `ProviderUnbondingPeriod` -

- -Example: -``` -ConsumerUnbondingPeriod = ProviderUnbondingPeriod - one day -``` -::: - -Unbonding operations (such as undelegations) are completed on the provider only after the unbonding period elapses on every consumer. - - -### TrustingPeriodFraction -`TrustingPeriodFraction` is used to calculate the `TrustingPeriod` of created IBC clients on both provider and consumer chains. - - -Setting `TrustingPeriodFraction` to `0.5` would result in the following: -``` -TrustingPeriodFraction = 0.5 -ProviderClientOnConsumerTrustingPeriod = ProviderUnbondingPeriod * 0.5 -ConsumerClientOnProviderTrustingPeriod = ConsumerUnbondingPeriod * 0.5 -``` - -Note that a light clients must be updated within the `TrustingPeriod` in order to avoid being frozen. - -For more details, see the [IBC specification of Tendermint clients](https://github.com/cosmos/ibc/blob/main/spec/client/ics-007-tendermint-client/README.md). - -### CCVTimeoutPeriod -`CCVTimeoutPeriod` is the period used to compute the timeout timestamp when sending IBC packets. - -For more details, see the [IBC specification of Channel & Packet Semantics](https://github.com/cosmos/ibc/blob/main/spec/core/ics-004-channel-and-packet-semantics/README.md#sending-packets). - -:::warning -If a sent packet is not relayed within this period, then the packet times out. The CCV channel used by the interchain security protocol is closed, and the corresponding consumer is removed. -::: - -CCVTimeoutPeriod may have different values on the provider and consumer chains. -- `CCVTimeoutPeriod` on the provider **must** be larger than `ConsumerUnbondingPeriod` -- `CCVTimeoutPeriod` on the consumer is initial set via the `ConsumerAdditionProposal` - -### BlocksPerDistributionTransmission -`BlocksPerDistributionTransmission` is the number of blocks between rewards transfers from the consumer to the provider. - -### TransferPeriodTimeout -`TransferPeriodTimeout` is the period used to compute the timeout timestamp when sending IBC transfer packets from a consumer to the provider. - -If this timeout expires, then the transfer is attempted again after `BlocksPerDistributionTransmission` blocks. -- `TransferPeriodTimeout` on the consumer is initial set via the `ConsumerAdditionProposal` gov proposal to add the consumer -- `TransferPeriodTimeout` should be smaller than `BlocksPerDistributionTransmission x avg_block_time` - - -## Reward Distribution Parameters - -:::tip -The following chain parameters dictate consumer chain distribution amount and frequency. -They are set at consumer genesis and `BlocksPerDistributionTransmission`, `ConsumerRedistributionFraction` -`TransferTimeoutPeriod` must be provided in every `ConsumerChainAddition` proposal. -::: - - -### ConsumerRedistributionFraction - -`ConsumerRedistributionFraction` is 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%`. - -:::tip -Example: - -With `ConsumerRedistributionFraction` set to `"0.75"` the consumer chain would send `75%` of its block rewards and accumulated fees to the consumer redistribution address, and the remaining `25%` to the provider chain every `BlocksPerDistributionTransmission` blocks. -::: - -### BlocksPerDistributionTransmission - -`BlocksPerDistributionTransmission` is the number of blocks between IBC token transfers from the consumer chain to the provider chain. - -### TransferTimeoutPeriod - -`TransferTimeoutPeriod` is the timeout period for consumer chain reward distribution IBC packets. - -### DistributionTransmissionChannel - -`DistributionTransmissionChannel` is the provider chain IBC channel used for receiving consumer chain reward distribution token transfers. This is automatically set during the consumer-provider handshake procedure. - -### ProviderFeePoolAddrStr - -`ProviderFeePoolAddrStr` is the provider chain fee pool address used for receiving consumer chain reward distribution token transfers. This is automatically set during the consumer-provider handshake procedure. - - -## Slash Throttle Parameters - -### SlashMeterReplenishPeriod -`SlashMeterReplenishPeriod` exists on the provider such that once the slash meter becomes not-full, the slash meter is replenished after this period has elapsed. - -The meter is replenished to an amount equal to the slash meter allowance for that block, or `SlashMeterReplenishFraction * CurrentTotalVotingPower`. - -### SlashMeterReplenishFraction -`SlashMeterReplenishFraction` exists on the provider as the portion (in range [0, 1]) of total voting power that is replenished to the slash meter when a replenishment occurs. - -This param also serves as a maximum fraction of total voting power that the slash meter can hold. The param is set/persisted as a string, and converted to a `sdk.Dec` when used. - -### MaxThrottledPackets - -`MaxThrottledPackets` exists on the provider as the maximum amount of throttled slash or vsc matured packets that can be queued from a single consumer before the provider chain halts, it should be set to a large value. - -This param would allow provider binaries to panic deterministically in the event that packet throttling results in a large amount of state-bloat. In such a scenario, packet throttling could prevent a violation of safety caused by a malicious consumer, at the cost of provider liveness. - -:::info -`MaxThrottledPackets` was deprecated in ICS versions >= v3.2.0 due to the implementation of [ADR-008](../adrs/adr-008-throttle-retries.md). -::: - -### RetryDelayPeriod - -`RetryDelayPeriod` exists on the consumer for **ICS versions >= v3.2.0** (introduced by the implementation of [ADR-008](../adrs/adr-008-throttle-retries.md)) and is the period at which the consumer retries to send a `SlashPacket` that was rejected by the provider. - - -## Epoch Parameters - -### BlocksPerEpoch -`BlocksPerEpoch` exists on the provider for **ICS versions >= 3.3.0** (introduced by the implementation of [ADR-014](../adrs/adr-014-epochs.md)) -and corresponds to the number of blocks that constitute an epoch. This param is set to 600 by default. Assuming we need 6 seconds to -commit a block, the duration of an epoch corresponds to 1 hour. This means that a `VSCPacket` would be sent to a consumer -chain once at the end of every epoch, so once every 600 blocks. This parameter can be adjusted via a governance proposal, -however careful consideration is needed so that `BlocksPerEpoch` is not too large. A large `BlocksPerEpoch` could lead to a delay -of `VSCPacket`s and hence potentially lead to [unbonding pausing](https://informal.systems/blog/learning-to-live-with-unbonding-pausing). -For setting `BlocksPerEpoch`, we also need to consider potential slow chain upgrades that could delay the sending of a -`VSCPacket`, as well as potential increases in the time it takes to commit a block (e.g., from 6 seconds to 30 seconds). \ No newline at end of file From f1470b9804dcdc632d197b27c4fc3a2fb1fae009 Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 12:42:49 +0200 Subject: [PATCH 08/32] fix links --- docs/docs/features/democracy-modules.md | 2 +- docs/docs/features/reward-distribution.md | 4 ++-- docs/docs/frequently-asked-questions.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/docs/features/democracy-modules.md b/docs/docs/features/democracy-modules.md index 2c3ea2b2d5..f6ce1c8aa2 100644 --- a/docs/docs/features/democracy-modules.md +++ b/docs/docs/features/democracy-modules.md @@ -32,7 +32,7 @@ However, governators retain a subset of the validator properties: - new governators can be created (via `MsgCreateValidator`) - governators can accept delegations - governators can vote on governance proposals (with their self stake and delegations) -- governators earn block rewards -- the block rewards kept on the consumer (see the [ConsumerRedistributionFraction param](../introduction/params.md#consumerredistributionfraction)) are distributed to all governators and their delegators. +- governators earn block rewards -- the block rewards kept on the consumer (see the [ConsumerRedistributionFraction param](../build/modules/03-consumer.md#consumerredistributionfraction)) are distributed to all governators and their delegators. With these changes, governators can become community advocates that can specialize in chain governance and they get rewarded for their participation the same way the validators do. Additionally, governators can choose to provide additional infrastructure such as RPC/API access points, archive nodes, indexers and similar software. diff --git a/docs/docs/features/reward-distribution.md b/docs/docs/features/reward-distribution.md index 8535ebaca1..cce5948221 100644 --- a/docs/docs/features/reward-distribution.md +++ b/docs/docs/features/reward-distribution.md @@ -8,8 +8,8 @@ sidebar_position: 2 Sending and distributing rewards from consumer chains to the provider chain is handled by the [Reward Distribution sub-protocol](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/overview_and_basic_concepts.md#reward-distribution). Consumer chains have the option of sharing _a portion of_ their block rewards (inflation tokens and fees) with the provider chain as ICS rewards. -These rewards are periodically sent from the consumer to the provider according to [consumer chain parameters](../introduction/params.md#reward-distribution-parameters) using an IBC transfer channel. -This channel is created during consumer chain initialization, unless it is provided when creating a new consumer chain (see the [DistributionTransmissionChannel param](../introduction/params.md#distributiontransmissionchannel)). +These rewards are periodically sent from the consumer to the provider according to [consumer chain parameters](../build/modules/03-consumer.md#parameters) using an IBC transfer channel. +This channel is created during consumer chain initialization, unless it is provided when creating a new consumer chain (see the [DistributionTransmissionChannel param](../build/modules/03-consumer.md#distributiontransmissionchannel)). Providing an IBC transfer channel enables a consumer chain to re-use one of the existing channels to the provider for consumer chain rewards distribution. This will preserve the `ibc denom` that may already be in use. diff --git a/docs/docs/frequently-asked-questions.md b/docs/docs/frequently-asked-questions.md index 5fc842939f..106254b5c0 100644 --- a/docs/docs/frequently-asked-questions.md +++ b/docs/docs/frequently-asked-questions.md @@ -49,7 +49,7 @@ In case the provider chain halts or experiences difficulties, the consumer chain As the validators run separate infrastructure on these networks, **_the provider chain liveness does not impact the liveness of consumer chains_**. Every consumer chain communicates with the provider chain via a CCV channel -- an IBC ordered channel. -If any of the packets sent over the CCV channel timeout (see the [CCVTimeoutPeriod param](./introduction/params.md#ccvtimeoutperiod)), then the channel is closed and, consequently, the consumer chain transitions to a Proof of Authority (PoA) chain. +If any of the packets sent over the CCV channel timeout (see the [CCVTimeoutPeriod param](./build/modules/03-consumer.md#ccvtimeoutperiod)), then the channel is closed and, consequently, the consumer chain transitions to a Proof of Authority (PoA) chain. This means that the validator set on the consumer will no longer be updated with information from the provider. ### What happens to provider if any of the consumers are down? @@ -109,7 +109,7 @@ Also note that validators can assign consensus keys before a consumer chain is l ### What are the benefits for validators running consumer chains? -The consumer chains sends a portion of its block rewards (e.g., transaction fees and inflation) to the provider chain as defined by the [ConsumerRedistributionFraction param](./introduction/params.md#consumerredistributionfraction). +The consumer chains sends a portion of its block rewards (e.g., transaction fees and inflation) to the provider chain as defined by the [ConsumerRedistributionFraction param](./build/modules/03-consumer.md#consumerredistributionfraction). These rewards are sent periodically to the provider (via IBC transfers), where they are distributed **ONLY** to the _opted in_ validators and their delegators. For more details, see the [Reward Distribution feature](./features/reward-distribution.md). ### Can validators set per consumer chain commission rates? From 1773376869f317bd2ed1c4a91953203727a04452 Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 13:10:21 +0200 Subject: [PATCH 09/32] add overview --- docs/docs/build/modules/02-provider.md | 19 +++++++++++++++ docs/docs/build/modules/03-consumer.md | 32 ++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 05d653730a..70a3b62d90 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -6,10 +6,29 @@ sidebar_position: 2 ## Overview +The ICS provider module enables a proof-of-stake chain (known as the provider chain) +to share (parts of) its security with other chains (known as consumer chains). +This basically mean that consumer chains can run as proof-of-stake chains using +(parts of) the stake locked on the provider as collateral. + +The provider module has the following functionalities: + +- The permissionless creation of consumer chains. +- The customization of the consumer chains validator sets. +- The option for validators to opt in to validate the consumer chains they want. +- The distribution of rewards from consumer chains to the opted in validators. +- The slashing and jailing of validators commiting infractions on consumer chains based on cryptographic evidence. + ## State ## State Transitions +### Consumer chain phases + +The following diagram describes the phases of a consumer chain from the perspective of the provider module: + +![Phases of a consumer chain](../../adrs/figures/adr19_phases_of_a_consumer_chain.png) + ## Messages ### MsgUpdateParams diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index f3c9eac2b5..4af0b3d0cc 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -6,12 +6,44 @@ sidebar_position: 3 ## Overview +The ICS consumer module enables consumer chains to use stake locked on a provider chain +as collateral for their own proof-of-stake based block production. + +The consumer module established a IBC ordered channel to the provider chain. +This channel is used by the provider chain to regularly sent validator updates the the consumer chain. +The consumer sends these updates to its own consensus engine. +This means that the consumer module acts as a staking module of the consumer chain. + +Regularly, the consumer module sends a part of the consumer chain's block rewards +to the provider chain as ICS rewards. + +If one of the validators in the consumer chain's validator set is missing enough blocks (i.e., downtime infraction), +the consumer module notifies the provider chain by sending an IBC packet to the provider module. +As a result, the misbehaving validator is punished on the provider chain. + ## State ## State Transitions ## Messages +### MsgUpdateParams + +`MsgUpdateParams` updates the [consumer module parameters](#parameters). +The params are updated through a governance proposal where the signer is the gov module account address. + +```proto +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + + // signer is the address of the governance account. + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // params defines the x/consumer parameters to update. + interchain_security.ccv.v1.ConsumerParams params = 2 [(gogoproto.nullable) = false]; +} +``` + ## Begin-Block ## End-Block From 8cc933d2c0444adfadd6c0a9cebeb5f64f9e26b9 Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 14:24:19 +0200 Subject: [PATCH 10/32] add IBC channel handshake --- .gitignore | 2 +- docs/docs/build/modules/02-provider.md | 54 ++++++++++++++++++++++- docs/docs/build/modules/03-consumer.md | 60 +++++++++++++++++++++++++- 3 files changed, 113 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index d93ff09e5a..5575d76998 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ release/ docs/tla/states/ *.out vendor/ -build/ +/build/ .vscode .idea __debug_* diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 70a3b62d90..f95139aeff 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -29,6 +29,48 @@ The following diagram describes the phases of a consumer chain from the perspect ![Phases of a consumer chain](../../adrs/figures/adr19_phases_of_a_consumer_chain.png) +## IBC Callbacks + +The consumer module is an IBC application that implements the [IBC module callback](https://ibc.cosmos.network/v8/ibc/apps/apps/#create-a-custom-ibc-application-module). + +### OnChanOpenInit + +`OnChanOpenInit` returns an error. `MsgChannelOpenInit` should be sent to the consumer. + +### OnChanOpenTry + +`OnChanOpenTry` validates the parameters of the _CCV channel_ -- an ordered IBC channel connected on the `provider` port +and with the counterparty port set to `consumer` -- and asserts that the counterparty version matches the expected version +(only verions `1` is supported). + +If the validation passes, the provider module verifies that the underlying client is the expected client of the consumer chain +(i.e., the client created during the consumer chain launch) and that no other CCV channel exists for this consumer chain. + +Finally, it sets the [ProviderFeePoolAddr](./03-consumer.md#providerfeepooladdrstr) as part of the metadata. + +### OnChanOpenAck + +`OnChanOpenAck` returns an error. `MsgChannelOpenAck` should be sent to the consumer. + +### OnChanOpenConfirm + +`OnChanOpenConfirm` first verifies that no other CCV channel exists for this consumer chain. Note that this is a sanity check. +Then, it sets the channel mapping in the state. + +### OnChanCloseInit + +`OnChanCloseInit` returns an error. `MsgChannelCloseInit` should be sent to the consumer. + +### OnChanCloseConfirm + +`OnChanCloseConfirm` is a no-op. + +### OnRecvPacket + +### OnAcknowledgementPacket + +### OnTimeoutPacket + ## Messages ### MsgUpdateParams @@ -401,8 +443,12 @@ message MsgSubmitConsumerDoubleVoting { ## Hooks +> TBA + ## Events +> TBA + ## Parameters The provider module contains the following parameters. @@ -502,4 +548,10 @@ As a result, the provider chain can differentiate between _bonded validators_, i.e., validators that have stake locked on the provider chain, and _active validator_, i.e., validators that participate actively in the provider chain's consensus. -## Client \ No newline at end of file +## Client + +### CLI + +### gRPC + +### REST \ No newline at end of file diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 4af0b3d0cc..5e89941ca9 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -25,6 +25,54 @@ As a result, the misbehaving validator is punished on the provider chain. ## State Transitions +## IBC Callbacks + +The consumer module is an IBC application that implements the [IBC module callback](https://ibc.cosmos.network/v8/ibc/apps/apps/#create-a-custom-ibc-application-module). + +### OnChanOpenInit + +`OnChanOpenInit` first verifies that the CCV channel was not already created. +Then, it validates the channel parameters -- an ordered IBC channel connected on the `consumer` port +and with the counterparty port set to `provider` -- and asserts that the version matches the expected version +(only verions `1` is supported). + +Finally, it verifies that the underlying client is the expected client of the provider chain +(i.e., provided in the consumer module genesis state). + +### OnChanOpenTry + +`OnChanOpenTry` returns an error. `MsgChannelOpenTry` should be sent to the provider. + +### OnChanOpenAck + +`OnChanOpenAck` first verifies that the CCV channel was not already created. +Then it verifies that the counterparty version matches the expected version +(only verions `1` is supported). + +If the verification passes, it stores the [ProviderFeePoolAddr](#providerfeepooladdrstr) in the state. + +Finally, if the [DistributionTransmissionChannel](#distributiontransmissionchannel) parameter is not set, +it initiate the opening handshake for a token transfer channel over the same connection as the CCV channel +by calling the `ChannelOpenInit` method of the IBC module. + +### OnChanOpenConfirm + +`OnChanOpenConfirm` returns an error. `MsgChanOpenConfirm` should be sent to the provider. + +### OnChanCloseInit + +`OnChanCloseInit` allow relayers to close duplicate OPEN channels, if the channel handshake is completed. + +### OnChanCloseConfirm + +`OnChanCloseConfirm` is a no-op. + +### OnRecvPacket + +### OnAcknowledgementPacket + +### OnTimeoutPacket + ## Messages ### MsgUpdateParams @@ -50,8 +98,12 @@ message MsgUpdateParams { ## Hooks +> TBA + ## Events +> TBA + ## Parameters :::warning @@ -169,4 +221,10 @@ It is recommended that every consumer chain set and unbonding period shorter tha `RetryDelayPeriod` is the period at which the consumer retries to send a `SlashPacket` that was rejected by the provider. For more details, see [ADR-008](../adrs/adr-008-throttle-retries.md). -## Client \ No newline at end of file +## Client + +### CLI + +### gRPC + +### REST \ No newline at end of file From e6007594d7b4f8b14ea0e0eabe83e80add29b942 Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 15:24:49 +0200 Subject: [PATCH 11/32] add OnRecvPacket --- docs/docs/build/modules/02-provider.md | 33 ++++++++++++++++++++++++++ docs/docs/build/modules/03-consumer.md | 27 +++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index f95139aeff..c403b9afe2 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -67,10 +67,43 @@ Then, it sets the channel mapping in the state. ### OnRecvPacket +`OnRecvPacket` unmarshals the IBC packet data into a `SlashPacketData` struct (see below) and executes the handling logic. + +- Validate the fields in `SlashPacketData`: + - `validator` has a valid address and a non-zero power; + - `infraction` is either downtime or double-singing; + - the provider has in state a mapping from `valset_update_id` to a block height. +- If it is a double-signing infraction, then just log it and return. +- Verify that the consumer chain is launched and the validator is opted in. +- Update the meter used for jail throttling. +- Jail the validator on the provider chain. +- Store in state the ACK that the downtime infraction was handled. + This will be sent to the consumer with the next validator updates to enable it + to send other downtime infractions for this validator. + +```proto +message SlashPacketData { + tendermint.abci.Validator validator = 1 [ + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"validator\"" + ]; + // map to the infraction block height on the provider + uint64 valset_update_id = 2; + // tell if the slashing is for a downtime or a double-signing infraction + cosmos.staking.v1beta1.Infraction infraction = 3; +} +``` + +Note that IBC packets with `VSCMaturedPacketData` data are dropped. For more details, check out [ADR 018](../../adrs/adr-018-remove-vscmatured.md). + ### OnAcknowledgementPacket +`OnAcknowledgementPacket` stops and eventually removes the consumer chain associated with the channel on which the `MsgAcknowledgement` message was received. + ### OnTimeoutPacket +`OnTimeoutPacket` stops and eventually removes the consumer chain associated with the channel on which the `MsgTimeout` message was received. + ## Messages ### MsgUpdateParams diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 5e89941ca9..4e36dc3142 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -69,10 +69,37 @@ by calling the `ChannelOpenInit` method of the IBC module. ### OnRecvPacket +`OnRecvPacket` unmarshals the IBC packet data into a `ValidatorSetChangePacketData` struct (see below) and executes the handling logic. + +- If it is the first packet received, sets the underlying IBC channel as the canonical CCV channel. +- Collects validator updates to be sent to the consensus engine at the end of the block. +- Store in state the block height to VSC id (i.e., `valset_update_id`) mapping. +- Removed the outstanding downtime flags from the validator for which the jailing + for downtime infractions was acknowledged by the provider chain (see the `slash_acks` field in `ValidatorSetChangePacketData`). + +```proto +message ValidatorSetChangePacketData { + repeated .tendermint.abci.ValidatorUpdate validator_updates = 1 [ + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"validator_updates\"" + ]; + uint64 valset_update_id = 2; + // consensus address of consumer chain validators + // successfully jailed on the provider chain + repeated string slash_acks = 3; +} +``` + ### OnAcknowledgementPacket +`OnAcknowledgementPacket` enables the consumer module to confirm that the provider module received +the previously sent `SlashPacket` and it unblocks the sending of the next `SlashPacket`. +This functionality is needed for throttling jailing on the provider chain. For more details, see [ADR-008](../../adrs/adr-008-throttle-retries.md). + ### OnTimeoutPacket +`OnTimeoutPacket` is a no-op. + ## Messages ### MsgUpdateParams From e8be1a5fe39fcdbc485dfea096922dbd558081b6 Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 15:47:49 +0200 Subject: [PATCH 12/32] move democracy module to build/modules --- docs/docs/build/modules/02-provider.md | 6 +- docs/docs/build/modules/03-consumer.md | 6 +- docs/docs/build/modules/04-democracy.md | 497 +++++++++++++++++++++++- docs/docs/frequently-asked-questions.md | 4 +- 4 files changed, 507 insertions(+), 6 deletions(-) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index c403b9afe2..d5dc6dbd27 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -2,7 +2,7 @@ sidebar_position: 2 --- -# x/provider +# x/ccv/provider ## Overview @@ -472,8 +472,12 @@ message MsgSubmitConsumerDoubleVoting { ## Begin-Block +> TBA + ## End-Block +> TBA + ## Hooks > TBA diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 4e36dc3142..b1a4759ac4 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -2,7 +2,7 @@ sidebar_position: 3 --- -# x/consumer +# x/ccv/consumer ## Overview @@ -121,8 +121,12 @@ message MsgUpdateParams { ## Begin-Block +> TBA + ## End-Block +> TBA + ## Hooks > TBA diff --git a/docs/docs/build/modules/04-democracy.md b/docs/docs/build/modules/04-democracy.md index b5d101c4ff..01f6fdef26 100644 --- a/docs/docs/build/modules/04-democracy.md +++ b/docs/docs/build/modules/04-democracy.md @@ -2,6 +2,499 @@ sidebar_position: 4 --- -# x/democracy +# x/ccv/democracy -TBA \ No newline at end of file +The democracy modules comprise `x/ccv/democracy/staking`, `x/ccv/democracy/distribution` and `x/ccv/democracy/governance` with overrides and extensions required for normal operation when participating in ICS. + +The modules are plug-and-play and only require small wiring changes to be enabled. + +For a full integration check the `consumer-democracy` [example app](https://github.com/cosmos/interchain-security/blob/main/app/consumer-democracy/app.go). + +## Staking + +The `x/ccv/democracy/staking` module allows the cosmos-sdk `x/staking` module to be used alongside the interchain security `consumer` module. + +The module uses overrides that allow the full `x/staking` functionality with one notable difference - the staking module will no longer be used to provide the validator set to the consensus engine. + +### Implications for consumer chains + +The `x/ccv/democracy/staking` allows consumer chains to **_separate governance from block production_**. +The validator set coming from the provider chain does not need to participate in governance - they only provide infrastructure (create blocks and maintain consensus). + +#### Governators (aka. Governors) + +Validators registered with the `x/ccv/democracy/staking` module become __Governators__. +Unlike validators, governators are not required to run any chain infrastructure since they are not signing any blocks. +However, governators retain a subset of the validator properties: + +- new governators can be created (via `MsgCreateValidator`) +- governators can accept delegations +- governators can vote on governance proposals (with their self stake and delegations) +- governators earn block rewards -- the block rewards kept on the consumer (see the [ConsumerRedistributionFraction param](../build/modules/03-consumer.md#consumerredistributionfraction)) are distributed to all governators and their delegators. + +With these changes, governators can become community advocates that can specialize in chain governance and they get rewarded for their participation the same way the validators do. +Additionally, governators can choose to provide additional infrastructure such as RPC/API access points, archive nodes, indexers and similar software. + +#### Tokenomics + +The consumer chain's token will remain a governance token. The token's parameters (inflation, max supply, burn rate) are completely under the control of the consumer chain. + +### Integration + +The `x/ccv/democracy/staking` module provides these `x/staking` overrides: + +```golang + +// InitGenesis delegates the InitGenesis call to the underlying x/staking module, +// however, it returns no validator updates as validators are tracked via the +// consumer chain's x/cvv/consumer module and so this module is not responsible for returning the initial validator set. +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { + var genesisState types.GenesisState + + cdc.MustUnmarshalJSON(data, &genesisState) + _ = am.keeper.InitGenesis(ctx, &genesisState) // run staking InitGenesis + + return []abci.ValidatorUpdate{} // do not return validator updates +} + +// EndBlock delegates the EndBlock call to the underlying x/staking module. +// However, no validator updates are returned as validators are tracked via the +// consumer chain's x/cvv/consumer module. +func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { + _ = am.keeper.BlockValidatorUpdates(ctx) // perform staking BlockValidatorUpdates + return []abci.ValidatorUpdate{} // do not return validator updates +} +``` + +To integrate the `democracy/staking` follow this guide: + +#### 1. confirm that no modules are returning validator updates + +:::warning +Only the `x/ccv/consumer` module should be returning validator updates. +::: + +If some of your modules are returning validator updates please disable them while maintaining your business logic: + +```diff +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { + var genesisState types.GenesisState + + cdc.MustUnmarshalJSON(data, &genesisState) +- return am.keeper.InitGenesis(ctx, &genesisState) ++ _ = am.keeper.InitGenesis(ctx, &genesisState) // run InitGenesis but drop the result ++ return []abci.ValidatorUpdate{} // return empty validator updates +} + + +func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { +- return am.keeper.BlockValidatorUpdates(ctx) ++ _ = am.keeper.BlockValidatorUpdates(ctx) // perform staking BlockValidatorUpdates ++ return []abci.ValidatorUpdate{} // return empty validator updates +} +``` + +#### 2. wire the module in app.go + +You **do not need to remove** the cosmos-sdk `StakingKeeper` from your wiring. + +```diff +import ( + ... ++ ccvstaking "github.com/cosmos/interchain-security/v4/x/ccv/democracy/staking" +) + +var ( + // replace the staking.AppModuleBasic + ModuleBasics = module.NewBasicManager( + auth.AppModuleBasic{}, + genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), + bank.AppModuleBasic{}, + capability.AppModuleBasic{}, +- sdkstaking.AppModuleBasic{}, ++ ccvstaking.AppModuleBasic{}, // replace sdkstaking + ... + ) +) + + +func NewApp(...) { + ... + + // use sdk StakingKeepeer + app.StakingKeeper = stakingkeeper.NewKeeper( + appCodec, + keys[stakingtypes.StoreKey], + app.AccountKeeper, + app.BankKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + app.MintKeeper = mintkeeper.NewKeeper( + appCodec, + keys[minttypes.StoreKey], + app.StakingKeeper, + app.AccountKeeper, + app.BankKeeper, + authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + // no changes required for the distribution keeper + app.DistrKeeper = distrkeeper.NewKeeper( + appCodec, + keys[distrtypes.StoreKey], + app.AccountKeeper, + app.BankKeeper, + app.StakingKeeper, // keep StakingKeeper! + authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + ++ // pre-initialize ConsumerKeeper to satsfy ibckeeper.NewKeeper ++ app.ConsumerKeeper = consumerkeeper.NewNonZeroKeeper( ++ appCodec, ++ keys[consumertypes.StoreKey], ++ app.GetSubspace(consumertypes.ModuleName), ++ ) ++ ++ app.IBCKeeper = ibckeeper.NewKeeper( ++ appCodec, ++ keys[ibchost.StoreKey], ++ app.GetSubspace(ibchost.ModuleName), ++ &app.ConsumerKeeper, ++ app.UpgradeKeeper, ++ scopedIBCKeeper, ++ ) ++ ++ // Create CCV consumer and modules ++ app.ConsumerKeeper = consumerkeeper.NewKeeper( ++ appCodec, ++ keys[consumertypes.StoreKey], ++ app.GetSubspace(consumertypes.ModuleName), ++ scopedIBCConsumerKeeper, ++ app.IBCKeeper.ChannelKeeper, ++ &app.IBCKeeper.PortKeeper, ++ app.IBCKeeper.ConnectionKeeper, ++ app.IBCKeeper.ClientKeeper, ++ app.SlashingKeeper, ++ app.BankKeeper, ++ app.AccountKeeper, ++ &app.TransferKeeper, ++ app.IBCKeeper, ++ authtypes.FeeCollectorName, ++ ) ++ ++ // Setting the standalone staking keeper is only needed for standalone to consumer changeover chains ++ // New chains using the democracy/staking do not need to set this ++ app.ConsumerKeeper.SetStandaloneStakingKeeper(app.StakingKeeper) + + + + // change the slashing keeper dependency + app.SlashingKeeper = slashingkeeper.NewKeeper( + appCodec, + legacyAmino, + keys[slashingtypes.StoreKey], +- app.StakingKeeper, ++ &app.ConsumerKeeper, // ConsumerKeeper implements StakingKeeper interface + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + // register slashing module StakingHooks to the consumer keeper ++ app.ConsumerKeeper = *app.ConsumerKeeper.SetHooks(app.SlashingKeeper.Hooks()) ++ consumerModule := consumer.NewAppModule(app.ConsumerKeeper, app.GetSubspace(consumertypes.ModuleName)) + + // register the module with module manager + // replace the x/staking module + app.MM = module.NewManager( + ... +- sdkstaking.NewAppModule(appCodec, &app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), ++ ccvstaking.NewAppModule(appCodec, *app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), + ... + ) +} +``` + +## Governance + +The `x/ccv/democracy/governance` module extends the `x/governance` module with the functionality to filter proposals. +The module uses `AnteHandler` to limit the types of proposals that can be executed. +As a result, consumer chains can limit the types of governance proposals that can be executed on chain to avoid inadvertent changes to the ICS protocol that could affect security properties. + +### Integration + +Add new `AnteHandler` to your `app`. + +```go + +// app/ante/forbidden_proposals.go +package ante + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + + "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "github.com/cosmos/cosmos-sdk/x/params/types/proposal" +) + +type ForbiddenProposalsDecorator struct { + isLegacyProposalWhitelisted func(govv1beta1.Content) bool + isModuleWhiteList func(string) bool +} + +func NewForbiddenProposalsDecorator( + whiteListFn func(govv1beta1.Content) bool, + isModuleWhiteList func(string) bool, +) ForbiddenProposalsDecorator { + return ForbiddenProposalsDecorator{ + isLegacyProposalWhitelisted: whiteListFn, + isModuleWhiteList: isModuleWhiteList, + } +} + +func (decorator ForbiddenProposalsDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { + currHeight := ctx.BlockHeight() + + for _, msg := range tx.GetMsgs() { + // if the message is MsgSubmitProposal, check if proposal is whitelisted + submitProposalMgs, ok := msg.(*govv1.MsgSubmitProposal) + if !ok { + continue + } + + messages := submitProposalMgs.GetMessages() + for _, message := range messages { + if sdkMsg, isLegacyProposal := message.GetCachedValue().(*govv1.MsgExecLegacyContent); isLegacyProposal { + // legacy gov proposal content + content, err := govv1.LegacyContentFromMessage(sdkMsg) + if err != nil { + return ctx, fmt.Errorf("tx contains invalid LegacyContent") + } + if !decorator.isLegacyProposalWhitelisted(content) { + return ctx, fmt.Errorf("tx contains unsupported proposal message types at height %d", currHeight) + } + continue + } + // not legacy gov proposal content and not whitelisted + if !decorator.isModuleWhiteList(message.TypeUrl) { + return ctx, fmt.Errorf("tx contains unsupported proposal message types at height %d", currHeight) + } + } + } + + return next(ctx, tx, simulate) +} + +func IsProposalWhitelisted(content v1beta1.Content) bool { + switch c := content.(type) { + case *proposal.ParameterChangeProposal: + return isLegacyParamChangeWhitelisted(c.Changes) + + default: + return false + } +} + +func isLegacyParamChangeWhitelisted(paramChanges []proposal.ParamChange) bool { + for _, paramChange := range paramChanges { + _, found := LegacyWhitelistedParams[legacyParamChangeKey{Subspace: paramChange.Subspace, Key: paramChange.Key}] + if !found { + return false + } + } + return true +} + +type legacyParamChangeKey struct { + Subspace, Key string +} + +// Legacy params can be whitelisted +var LegacyWhitelistedParams = map[legacyParamChangeKey]struct{}{ + {Subspace: ibctransfertypes.ModuleName, Key: "SendEnabled"}: {}, + {Subspace: ibctransfertypes.ModuleName, Key: "ReceiveEnabled"}: {}, +} + +// New proposal types can be whitelisted +var WhiteListModule = map[string]struct{}{ + "/cosmos.gov.v1.MsgUpdateParams": {}, + "/cosmos.bank.v1beta1.MsgUpdateParams": {}, + "/cosmos.staking.v1beta1.MsgUpdateParams": {}, + "/cosmos.distribution.v1beta1.MsgUpdateParams": {}, + "/cosmos.mint.v1beta1.MsgUpdateParams": {}, +} + +func IsModuleWhiteList(typeUrl string) bool { + _, found := WhiteListModule[typeUrl] + return found +} +``` + +Add the `AnteHandler` to the list of supported antehandlers: + +```diff +// app/ante_handler.go +package app + +import ( + ... + ++ democracyante "github.com/cosmos/interchain-security/v4/app/consumer-democracy/ante" ++ consumerante "github.com/cosmos/interchain-security/v4/app/consumer/ante" ++ icsconsumerkeeper "github.com/cosmos/interchain-security/v4/x/ccv/consumer/keeper" +) + +type HandlerOptions struct { + ante.HandlerOptions + + IBCKeeper *ibckeeper.Keeper ++ ConsumerKeeper ibcconsumerkeeper.Keeper +} + +func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { + .... + + anteDecorators := []sdk.AnteDecorator{ + ... ++ consumerante.NewMsgFilterDecorator(options.ConsumerKeeper), ++ consumerante.NewDisabledModulesDecorator("/cosmos.evidence", "/cosmos.slashing"), ++ democracyante.NewForbiddenProposalsDecorator(IsProposalWhitelisted, IsModuleWhiteList), + ... + } + + return sdk.ChainAnteDecorators(anteDecorators...), nil +} +``` + +Wire the module in `app.go`. + +```diff +// app/app.go +package app +import ( + ... + sdkgov "github.com/cosmos/cosmos-sdk/x/gov" + govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + ++ ccvgov "github.com/cosmos/interchain-security/v4/x/ccv/democracy/governance" +) + +var ( + + // use sdk governance module + ModuleBasics = module.NewBasicManager( + ... + sdkgov.NewAppModuleBasic( + []govclient.ProposalHandler{ + paramsclient.ProposalHandler, + upgradeclient.LegacyProposalHandler, + upgradeclient.LegacyCancelProposalHandler, + }, + ), + ) +) + +func NewApp(...) { + // retain sdk gov router and keeper registrations + sdkgovRouter := govv1beta1.NewRouter() + sdkgovRouter. + AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler). + AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). + AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(&app.UpgradeKeeper)) + govConfig := govtypes.DefaultConfig() + + app.GovKeeper = *govkeeper.NewKeeper( + appCodec, + keys[govtypes.StoreKey], + app.AccountKeeper, + app.BankKeeper, + app.StakingKeeper, + app.MsgServiceRouter(), + govConfig, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + app.GovKeeper.SetLegacyRouter(sdkgovRouter) + + + // register the module with module manager + // replace the x/gov module + app.MM = module.NewManager( +- sdkgov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper, IsProposalWhitelisted, app.GetSubspace(govtypes.ModuleName), IsModuleWhiteList), ++ ccvgov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper, IsProposalWhitelisted, app.GetSubspace(govtypes.ModuleName), IsModuleWhiteList), + ... + ) +} +``` + +## Distribution + +The `x/ccv/democracy/distribution` module allows the consumer chain to send rewards to the provider chain while retaining the logic of the `x/distribution` module for internal reward distribution to governators and their delegators. + +### How it works + +First, a percentage of the block rewards is sent to the provider chain, where is distributed only to opted-in validators and their delegators. +Second, the remaining rewards get distributed to the consumer chain's governators and their delegators. +The percentage that is sent to the provider chain corresponds to `1 - ConsumerRedistributionFraction`. +For example, `ConsumerRedistributionFraction = "0.75"` means that the consumer chain retains 75% of the rewards, while 25% gets sent to the provider chain + +### Integration + +Change the wiring in `app.go` + +```diff +import ( + ... + distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + sdkdistr "github.com/cosmos/cosmos-sdk/x/distribution" + ++ ccvdistr "github.com/cosmos/interchain-security/v4/x/ccv/democracy/distribution" +) + +var ( + // replace sdk distribution AppModuleBasic + ModuleBasics = module.NewBasicManager( + auth.AppModuleBasic{}, + genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), + bank.AppModuleBasic{}, + capability.AppModuleBasic{}, + ccvstaking.AppModuleBasic{}, // make sure you first swap the staking keeper + mint.AppModuleBasic{}, +- sdkdistr.AppModuleBasic{}, ++ ccvdistr.AppModuleBasic{}, + ) +) + +func NewApp(...) { + .... + + app.DistrKeeper = distrkeeper.NewKeeper( + appCodec, + keys[distrtypes.StoreKey], + app.AccountKeeper, + app.BankKeeper, + app.StakingKeeper, // connect to sdk StakingKeeper + consumertypes.ConsumerRedistributeName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + // register with the module manager + app.MM = module.NewManager( + ... +- sdkdistr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, *app.StakingKeeper, authtypes.FeeCollectorName, app.GetSubspace(distrtypes.ModuleName)), + ++ ccvdistr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, *app.StakingKeeper, authtypes.FeeCollectorName, app.GetSubspace(distrtypes.ModuleName)), + ccvstaking.NewAppModule(appCodec, *app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), + ... + ) +} +``` diff --git a/docs/docs/frequently-asked-questions.md b/docs/docs/frequently-asked-questions.md index 106254b5c0..3af79086c5 100644 --- a/docs/docs/frequently-asked-questions.md +++ b/docs/docs/frequently-asked-questions.md @@ -62,13 +62,13 @@ The ICS protocol is concerned only with validator set management, and the only c As any other Cosmos SDK chains, **_consumer chains can issue their own token_** and manage inflation parameters. Note that the ICS protocol does not impact the transaction fee system on the consumer chains. This means consumer chains can use any token (including their own token) to pay gas fees. -For more details, see the [democracy modules](./features/democracy-modules.md#tokenomics). +For more details, see the [democracy modules](./build/modules/04-democracy.md#tokenomics). ### Can consumer chains have their own governance? Yes. ICS allows consumer chains to **_separate governance from block production_**. Validator operators (with their stake locked on the provider) are responsible for block production, while _representatives_ (aka governators, governors) are responsible for on-chain governance. -For more details, see the [democracy modules](./features/democracy-modules.md). +For more details, see the [democracy modules](./build/modules/04-democracy.md). ### Can a consumer chain modify its power shaping parameters? From 99ce5a418506a6b4201cf63d40c8dcb27181eea5 Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 15:53:08 +0200 Subject: [PATCH 13/32] remove duplicate democracy module page --- docs/docs/features/democracy-modules.md | 502 ------------------------ 1 file changed, 502 deletions(-) delete mode 100644 docs/docs/features/democracy-modules.md diff --git a/docs/docs/features/democracy-modules.md b/docs/docs/features/democracy-modules.md deleted file mode 100644 index f6ce1c8aa2..0000000000 --- a/docs/docs/features/democracy-modules.md +++ /dev/null @@ -1,502 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Democracy modules - -This section is relevant for chains transitioning from a standalone chain and new consumer chains that require some functionality from the `x/staking` module. - -The democracy modules comprise `x/staking`, `x/distribution` and `x/governance` with overrides and extensions required for normal operation when participating in ICS. - -The modules are plug-and-play and only require small wiring changes to be enabled. - -For a full integration check the `consumer-democracy` [example app](https://github.com/cosmos/interchain-security/blob/main/app/consumer-democracy/app.go). - -## Staking - -The democracy staking module allows the cosmos-sdk `x/staking` module to be used alongside the interchain security `consumer` module. - -The module uses overrides that allow the full `x/staking` functionality with one notable difference - the staking module will no longer be used to provide the validator set to the consensus engine. - -### Implications for consumer chains - -The `x/ccv/democracy/staking` allows consumer chains to **_separate governance from block production_**. -The validator set coming from the provider chain does not need to participate in governance - they only provide infrastructure (create blocks and maintain consensus). - -#### Governators (aka. Governors) - -Validators registered with the `x/staking` module become __Governators__. -Unlike validators, governators are not required to run any chain infrastructure since they are not signing any blocks. -However, governators retain a subset of the validator properties: - -- new governators can be created (via `MsgCreateValidator`) -- governators can accept delegations -- governators can vote on governance proposals (with their self stake and delegations) -- governators earn block rewards -- the block rewards kept on the consumer (see the [ConsumerRedistributionFraction param](../build/modules/03-consumer.md#consumerredistributionfraction)) are distributed to all governators and their delegators. - -With these changes, governators can become community advocates that can specialize in chain governance and they get rewarded for their participation the same way the validators do. -Additionally, governators can choose to provide additional infrastructure such as RPC/API access points, archive nodes, indexers and similar software. - -#### Tokenomics - -The consumer chain's token will remain a governance token. The token's parameters (inflation, max supply, burn rate) are completely under the control of the consumer chain. - -### Integration - -The `x/ccv/democracy/staking` module provides these `x/staking` overrides: - -```golang - -// InitGenesis delegates the InitGenesis call to the underlying x/staking module, -// however, it returns no validator updates as validators are tracked via the -// consumer chain's x/cvv/consumer module and so this module is not responsible for returning the initial validator set. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { - var genesisState types.GenesisState - - cdc.MustUnmarshalJSON(data, &genesisState) - _ = am.keeper.InitGenesis(ctx, &genesisState) // run staking InitGenesis - - return []abci.ValidatorUpdate{} // do not return validator updates -} - -// EndBlock delegates the EndBlock call to the underlying x/staking module. -// However, no validator updates are returned as validators are tracked via the -// consumer chain's x/cvv/consumer module. -func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - _ = am.keeper.BlockValidatorUpdates(ctx) // perform staking BlockValidatorUpdates - return []abci.ValidatorUpdate{} // do not return validator updates -} -``` - -To integrate the `democracy/staking` follow this guide: - -#### 1. confirm that no modules are returning validator updates - -:::warning -Only the `x/ccv/consumer` module should be returning validator updates. -::: - -If some of your modules are returning validator updates please disable them while maintaining your business logic: - -```diff -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { - var genesisState types.GenesisState - - cdc.MustUnmarshalJSON(data, &genesisState) -- return am.keeper.InitGenesis(ctx, &genesisState) -+ _ = am.keeper.InitGenesis(ctx, &genesisState) // run InitGenesis but drop the result -+ return []abci.ValidatorUpdate{} // return empty validator updates -} - - -func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { -- return am.keeper.BlockValidatorUpdates(ctx) -+ _ = am.keeper.BlockValidatorUpdates(ctx) // perform staking BlockValidatorUpdates -+ return []abci.ValidatorUpdate{} // return empty validator updates -} -``` - -#### 2. wire the module in app.go - -You **do not need to remove** the cosmos-sdk `StakingKeeper` from your wiring. - -```diff -import ( - ... -+ ccvstaking "github.com/cosmos/interchain-security/v4/x/ccv/democracy/staking" -) - -var ( - // replace the staking.AppModuleBasic - ModuleBasics = module.NewBasicManager( - auth.AppModuleBasic{}, - genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), - bank.AppModuleBasic{}, - capability.AppModuleBasic{}, -- sdkstaking.AppModuleBasic{}, -+ ccvstaking.AppModuleBasic{}, // replace sdkstaking - ... - ) -) - - -func NewApp(...) { - ... - - // use sdk StakingKeepeer - app.StakingKeeper = stakingkeeper.NewKeeper( - appCodec, - keys[stakingtypes.StoreKey], - app.AccountKeeper, - app.BankKeeper, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - app.MintKeeper = mintkeeper.NewKeeper( - appCodec, - keys[minttypes.StoreKey], - app.StakingKeeper, - app.AccountKeeper, - app.BankKeeper, - authtypes.FeeCollectorName, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - // no changes required for the distribution keeper - app.DistrKeeper = distrkeeper.NewKeeper( - appCodec, - keys[distrtypes.StoreKey], - app.AccountKeeper, - app.BankKeeper, - app.StakingKeeper, // keep StakingKeeper! - authtypes.FeeCollectorName, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - -+ // pre-initialize ConsumerKeeper to satsfy ibckeeper.NewKeeper -+ app.ConsumerKeeper = consumerkeeper.NewNonZeroKeeper( -+ appCodec, -+ keys[consumertypes.StoreKey], -+ app.GetSubspace(consumertypes.ModuleName), -+ ) -+ -+ app.IBCKeeper = ibckeeper.NewKeeper( -+ appCodec, -+ keys[ibchost.StoreKey], -+ app.GetSubspace(ibchost.ModuleName), -+ &app.ConsumerKeeper, -+ app.UpgradeKeeper, -+ scopedIBCKeeper, -+ ) -+ -+ // Create CCV consumer and modules -+ app.ConsumerKeeper = consumerkeeper.NewKeeper( -+ appCodec, -+ keys[consumertypes.StoreKey], -+ app.GetSubspace(consumertypes.ModuleName), -+ scopedIBCConsumerKeeper, -+ app.IBCKeeper.ChannelKeeper, -+ &app.IBCKeeper.PortKeeper, -+ app.IBCKeeper.ConnectionKeeper, -+ app.IBCKeeper.ClientKeeper, -+ app.SlashingKeeper, -+ app.BankKeeper, -+ app.AccountKeeper, -+ &app.TransferKeeper, -+ app.IBCKeeper, -+ authtypes.FeeCollectorName, -+ ) -+ -+ // Setting the standalone staking keeper is only needed for standalone to consumer changeover chains -+ // New chains using the democracy/staking do not need to set this -+ app.ConsumerKeeper.SetStandaloneStakingKeeper(app.StakingKeeper) - - - - // change the slashing keeper dependency - app.SlashingKeeper = slashingkeeper.NewKeeper( - appCodec, - legacyAmino, - keys[slashingtypes.StoreKey], -- app.StakingKeeper, -+ &app.ConsumerKeeper, // ConsumerKeeper implements StakingKeeper interface - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - // register slashing module StakingHooks to the consumer keeper -+ app.ConsumerKeeper = *app.ConsumerKeeper.SetHooks(app.SlashingKeeper.Hooks()) -+ consumerModule := consumer.NewAppModule(app.ConsumerKeeper, app.GetSubspace(consumertypes.ModuleName)) - - // register the module with module manager - // replace the x/staking module - app.MM = module.NewManager( - ... -- sdkstaking.NewAppModule(appCodec, &app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), -+ ccvstaking.NewAppModule(appCodec, *app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), - ... - ) -} -``` - -## Governance - -The `x/ccv/democracy/governance` module extends the `x/governance` module with the functionality to filter proposals. -The module uses `AnteHandler` to limit the types of proposals that can be executed. -As a result, consumer chains can limit the types of governance proposals that can be executed on chain to avoid inadvertent changes to the ICS protocol that could affect security properties. - -### Integration - -Add new `AnteHandler` to your `app`. - -```go - -// app/ante/forbidden_proposals.go -package ante - -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - - "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/cosmos/cosmos-sdk/x/params/types/proposal" -) - -type ForbiddenProposalsDecorator struct { - isLegacyProposalWhitelisted func(govv1beta1.Content) bool - isModuleWhiteList func(string) bool -} - -func NewForbiddenProposalsDecorator( - whiteListFn func(govv1beta1.Content) bool, - isModuleWhiteList func(string) bool, -) ForbiddenProposalsDecorator { - return ForbiddenProposalsDecorator{ - isLegacyProposalWhitelisted: whiteListFn, - isModuleWhiteList: isModuleWhiteList, - } -} - -func (decorator ForbiddenProposalsDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { - currHeight := ctx.BlockHeight() - - for _, msg := range tx.GetMsgs() { - // if the message is MsgSubmitProposal, check if proposal is whitelisted - submitProposalMgs, ok := msg.(*govv1.MsgSubmitProposal) - if !ok { - continue - } - - messages := submitProposalMgs.GetMessages() - for _, message := range messages { - if sdkMsg, isLegacyProposal := message.GetCachedValue().(*govv1.MsgExecLegacyContent); isLegacyProposal { - // legacy gov proposal content - content, err := govv1.LegacyContentFromMessage(sdkMsg) - if err != nil { - return ctx, fmt.Errorf("tx contains invalid LegacyContent") - } - if !decorator.isLegacyProposalWhitelisted(content) { - return ctx, fmt.Errorf("tx contains unsupported proposal message types at height %d", currHeight) - } - continue - } - // not legacy gov proposal content and not whitelisted - if !decorator.isModuleWhiteList(message.TypeUrl) { - return ctx, fmt.Errorf("tx contains unsupported proposal message types at height %d", currHeight) - } - } - } - - return next(ctx, tx, simulate) -} - -func IsProposalWhitelisted(content v1beta1.Content) bool { - switch c := content.(type) { - case *proposal.ParameterChangeProposal: - return isLegacyParamChangeWhitelisted(c.Changes) - - default: - return false - } -} - -func isLegacyParamChangeWhitelisted(paramChanges []proposal.ParamChange) bool { - for _, paramChange := range paramChanges { - _, found := LegacyWhitelistedParams[legacyParamChangeKey{Subspace: paramChange.Subspace, Key: paramChange.Key}] - if !found { - return false - } - } - return true -} - -type legacyParamChangeKey struct { - Subspace, Key string -} - -// Legacy params can be whitelisted -var LegacyWhitelistedParams = map[legacyParamChangeKey]struct{}{ - {Subspace: ibctransfertypes.ModuleName, Key: "SendEnabled"}: {}, - {Subspace: ibctransfertypes.ModuleName, Key: "ReceiveEnabled"}: {}, -} - -// New proposal types can be whitelisted -var WhiteListModule = map[string]struct{}{ - "/cosmos.gov.v1.MsgUpdateParams": {}, - "/cosmos.bank.v1beta1.MsgUpdateParams": {}, - "/cosmos.staking.v1beta1.MsgUpdateParams": {}, - "/cosmos.distribution.v1beta1.MsgUpdateParams": {}, - "/cosmos.mint.v1beta1.MsgUpdateParams": {}, -} - -func IsModuleWhiteList(typeUrl string) bool { - _, found := WhiteListModule[typeUrl] - return found -} -``` - -Add the `AnteHandler` to the list of supported antehandlers: - -```diff -// app/ante_handler.go -package app - -import ( - ... - -+ democracyante "github.com/cosmos/interchain-security/v4/app/consumer-democracy/ante" -+ consumerante "github.com/cosmos/interchain-security/v4/app/consumer/ante" -+ icsconsumerkeeper "github.com/cosmos/interchain-security/v4/x/ccv/consumer/keeper" -) - -type HandlerOptions struct { - ante.HandlerOptions - - IBCKeeper *ibckeeper.Keeper -+ ConsumerKeeper ibcconsumerkeeper.Keeper -} - -func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { - .... - - anteDecorators := []sdk.AnteDecorator{ - ... -+ consumerante.NewMsgFilterDecorator(options.ConsumerKeeper), -+ consumerante.NewDisabledModulesDecorator("/cosmos.evidence", "/cosmos.slashing"), -+ democracyante.NewForbiddenProposalsDecorator(IsProposalWhitelisted, IsModuleWhiteList), - ... - } - - return sdk.ChainAnteDecorators(anteDecorators...), nil -} -``` - -Wire the module in `app.go`. - -```diff -// app/app.go -package app -import ( - ... - sdkgov "github.com/cosmos/cosmos-sdk/x/gov" - govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - -+ ccvgov "github.com/cosmos/interchain-security/v4/x/ccv/democracy/governance" -) - -var ( - - // use sdk governance module - ModuleBasics = module.NewBasicManager( - ... - sdkgov.NewAppModuleBasic( - []govclient.ProposalHandler{ - paramsclient.ProposalHandler, - upgradeclient.LegacyProposalHandler, - upgradeclient.LegacyCancelProposalHandler, - }, - ), - ) -) - -func NewApp(...) { - // retain sdk gov router and keeper registrations - sdkgovRouter := govv1beta1.NewRouter() - sdkgovRouter. - AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler). - AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). - AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(&app.UpgradeKeeper)) - govConfig := govtypes.DefaultConfig() - - app.GovKeeper = *govkeeper.NewKeeper( - appCodec, - keys[govtypes.StoreKey], - app.AccountKeeper, - app.BankKeeper, - app.StakingKeeper, - app.MsgServiceRouter(), - govConfig, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - app.GovKeeper.SetLegacyRouter(sdkgovRouter) - - - // register the module with module manager - // replace the x/gov module - app.MM = module.NewManager( -- sdkgov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper, IsProposalWhitelisted, app.GetSubspace(govtypes.ModuleName), IsModuleWhiteList), -+ ccvgov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper, IsProposalWhitelisted, app.GetSubspace(govtypes.ModuleName), IsModuleWhiteList), - ... - ) -} -``` - -## Distribution - -The `democracy/distribution` module allows the consumer chain to send rewards to the provider chain while retaining the logic of the `x/distribution` module for internal reward distribution to governators and their delegators. - -### How it works - -First, a percentage of the block rewards is sent to the provider chain, where is distributed only to opted-in validators and their delegators. -Second, the remaining rewards get distributed to the consumer chain's governators and their delegators. -The percentage that is sent to the provider chain corresponds to `1 - ConsumerRedistributionFraction`. -For example, `ConsumerRedistributionFraction = "0.75"` means that the consumer chain retains 75% of the rewards, while 25% gets sent to the provider chain - -### Integration - -Change the wiring in `app.go` - -```diff -import ( - ... - distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - sdkdistr "github.com/cosmos/cosmos-sdk/x/distribution" - -+ ccvdistr "github.com/cosmos/interchain-security/v4/x/ccv/democracy/distribution" -) - -var ( - // replace sdk distribution AppModuleBasic - ModuleBasics = module.NewBasicManager( - auth.AppModuleBasic{}, - genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), - bank.AppModuleBasic{}, - capability.AppModuleBasic{}, - ccvstaking.AppModuleBasic{}, // make sure you first swap the staking keeper - mint.AppModuleBasic{}, -- sdkdistr.AppModuleBasic{}, -+ ccvdistr.AppModuleBasic{}, - ) -) - -func NewApp(...) { - .... - - app.DistrKeeper = distrkeeper.NewKeeper( - appCodec, - keys[distrtypes.StoreKey], - app.AccountKeeper, - app.BankKeeper, - app.StakingKeeper, // connect to sdk StakingKeeper - consumertypes.ConsumerRedistributeName, - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - ) - - // register with the module manager - app.MM = module.NewManager( - ... -- sdkdistr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, *app.StakingKeeper, authtypes.FeeCollectorName, app.GetSubspace(distrtypes.ModuleName)), - -+ ccvdistr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, *app.StakingKeeper, authtypes.FeeCollectorName, app.GetSubspace(distrtypes.ModuleName)), - ccvstaking.NewAppModule(appCodec, *app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), - ... - ) -} -``` From ae9c24a89095efbd14c7979134fa12973ff3cfb0 Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 13 Sep 2024 16:36:29 +0200 Subject: [PATCH 14/32] add begin/end-block info --- docs/docs/build/modules/02-provider.md | 32 ++++++++++++++++++++++---- docs/docs/build/modules/03-consumer.md | 18 +++++++++++---- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index d5dc6dbd27..84fb6ca3c1 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -470,13 +470,37 @@ message MsgSubmitConsumerDoubleVoting { } ``` -## Begin-Block +## BeginBlock -> TBA +In the `BeginBlock` of the provider module the following actions are performed: -## End-Block +- Launch every consumer chain that has a spawn time that already passed. + - Compute the initial validator set. + - Create the genesis state for the consumer module. + Note that the genesis state contains the [consumer module parameters](./03-consumer.md#parameters) and + both the client state and consensus state needed for creating a provider client on the consumer chain. + - Create a consumer client. +- Remove every stopped consumer chain for which the removal time has passed. +- Replenish the throttling meter if necessary. +- Distribute ICS rewards to the opted in validators. -> TBA +Note that for every consumer chain, the computation of its initial validator set is based on the consumer's [power shaping parameters](../../features/power-shaping.md) +and the [validators that opted in on that consumer](../../features/partial-set-security.md). + +## EndBlock + +In the `EndBlock` of the provider module the following actions are performed: + +- Store in state the VSC id to block height mapping needed for determining the height of infractions on consumer chains. +- Prune the no-longer needed public keys assigned by validators to use when validating on consumer chains. +- Send validator updates to the consensus engine. + The maximum number of validators is set through the [MaxProviderConsensusValidators](#maxproviderconsensusvalidators) param. +- At the begining of every epoch, + - for every launched consumer chain, compute the next consumer validator set and send it to the consumer chain via an IBC packet; + - increment the VSC id. + +Note that for every consumer chain, the computation of its validator set is based on the consumer's [power shaping parameters](../../features/power-shaping.md) +and the [validators that opted in on that consumer](../../features/partial-set-security.md). ## Hooks diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index b1a4759ac4..f3f7695b1e 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -119,13 +119,23 @@ message MsgUpdateParams { } ``` -## Begin-Block +## BeginBlock -> TBA +In the `BeginBlock` of the consumer module the following actions are performed: -## End-Block +- Store in state the block height to VSC id mapping needed for sending to the provider the height of infractions committed on the consumer chain. +- Track historical entries. This is the same lofic as in the `x/staking` module. -> TBA +## EndBlock + +In the `EndBlock` of the consumer module the following actions are performed: + +- If `PreCCV` state is active, i.e., the consumer chain is a previously standalone chain + that was just upgraded to include the consumer module, then execute the [changeover logic](../../consumer-development/changeover-procedure.md). +- Otherwise, distribute block rewards internally and once every [BlocksPerDistributionTransmission](#blocksperdistributiontransmission) send + ICS rewards to the provider chain. +- Send slash packets to the provider chain reporting infractions validators commited on the consumer chain. +- Send to the consensus engine validator updates reveived from the provider chain. ## Hooks From 1cc95a6e31fad495dc0251bc4729f5aa8ce941cd Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 18 Sep 2024 10:56:27 +0200 Subject: [PATCH 15/32] udpate intro section --- docs/docs/introduction/overview.md | 11 +++++++---- docs/docs/introduction/terminology.md | 20 +++++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/docs/docs/introduction/overview.md b/docs/docs/introduction/overview.md index d8938a70fa..4f7a2daf9d 100644 --- a/docs/docs/introduction/overview.md +++ b/docs/docs/introduction/overview.md @@ -4,9 +4,8 @@ sidebar_position: 1 # Overview -Interchain Security (ICS) is an open source IBC application that allows Cosmos chains to lease their proof-of-stake security to one another. - -ICS allows anyone to launch a _consumer_ chain using a subset, or even the entire, validator set from the _provider_ chain by creating a governance proposal. If the proposal is accepted, provider chain validators start validating the consumer chain as well. Consumer chains will therefore inherit security and decentralization from the provider. +Interchain Security (ICS) is an open source IBC application that allows a Cosmos proof-of-stake chain -- known as the _provider chain_ -- to share (parts of) its economic security with other chains -- known as _consumer chains_ -- that can use the stake locked on the provider as collateral for block production. +Consumer chains will therefore inherit security and decentralization from the provider. ## Why Interchain Security? @@ -16,6 +15,10 @@ ICS allows anyone to launch a _consumer_ chain using a subset, or even the entir Additionally, consumer chains have the power to shape the validator set to their specific requirements by setting allow & deny lists, capping its size, etc. This allows for a wide range of security tradeoffs. For example, it enables emerging projects to deploy on consumer chains that don’t need high level of security. +- **Permissionless deployment.** + Opt-in consumer chains -- consumers that do not compel any validator to participate -- can be launched permissionlessly. + User can create and update opt-in consumer chains by submitting transactions to the provider chain. + Provider validators that are eligible can opt in on any consumer they wish to validate. - **Separation of governance from block production.** Consumer chains can separate their governance mechanism from block production. Block production is handled by provider validators, which means it is an extension of the proof-of-state (PoS) mechanism on the provider chain. @@ -45,7 +48,7 @@ If the opted-in validators misbehave on the consumer chains, then they will be p ICS currently differentiates between two types of infractions -- double signing and downtime. Double signing on consumer chains results in the misbehaving validators having their provider stake slashed and being permanently jailed on the provider, while downtime on consumer chains results in the misbehaving validators being temporarily jailed. -Note that jailing entails removing the validator from the provider active validator set and, consequently, from any of the consumer validato sets. +Note that jailing entails removing the validator from the provider active validator set and, consequently, from any of the consumer validator sets. This entails the validator will miss out on both staking and ICS rewards. **Tokenomics and rewards.** diff --git a/docs/docs/introduction/terminology.md b/docs/docs/introduction/terminology.md index 3ad5a3696a..c5ab3b481c 100644 --- a/docs/docs/introduction/terminology.md +++ b/docs/docs/introduction/terminology.md @@ -15,6 +15,11 @@ Basically, any protocol or technology that can allow one blockchain to lend/shar Interchain Security is the Cosmos-specific category of Shared Security that uses IBC (Inter-Blockchain Communication). +## Consumer Chain + +Chain that is secured by the validator set of the provider, instead of its own. +Interchain Security allows a subset of the provider chain's validator set to validate blocks on the consumer chain. + ## Replicated Security A particular protocol/implementation of Interchain Security that fully replicates the security and decentralization of a validator set across multiple blockchains. @@ -28,14 +33,11 @@ A major feature of Interchain Security (also referred to as "Interchain Security This subset can be determined by the top N% validators by voting power, or by validators opting in to validate the consumer chain. PSS allows for more flexible security tradeoffs than Replicated Security. -## Mesh Security - -A protocol built on IBC that allows delegators on a Cosmos chain to re-delegate their stake to validators in another chain's own validator set, using the original chain's token (which remains bonded on the original chain). For a deeper exploration of Mesh Security, see [Replicated vs. Mesh Security on the Informal Blog](https://informal.systems/blog/replicated-vs-mesh-security). - -## Consumer Chain +### Permissionless ICS -Chain that is secured by the validator set of the provider, instead of its own. -Interchain Security allows a subset of the provider chain's validator set to validate blocks on the consumer chain. +A major feature of Interchain Security that enables users to permissionlessly launch opt-in consumer chains. +Given that validators are free to choose whether they want to run a given opt-in consumer chain, it is only natural to also enable projects to launch as opt-in consumer chains by simply submitting transactions to the provider chain and, thus, avoiding the need to go through the process of governance. +Note that TopN consumer chains will still need to go through governance. ## Standalone Chain @@ -46,3 +48,7 @@ Chain that is secured by its own validator set. This chain does not participate Chains that were not initially launched as consumers of Interchain Security can still participate in the protocol and leverage the economic security of the provider chain. The process where a standalone chain transitions to being a replicated consumer chain is called the **changeover procedure** and is part of the ICS protocol. After the changeover, the new consumer chain will retain all existing state, including the IBC clients, connections and channels already established by the chain. + +## Mesh Security + +A protocol built on IBC that allows delegators on a Cosmos chain to re-delegate their stake to validators in another chain's own validator set, using the original chain's token (which remains bonded on the original chain). For a deeper exploration of Mesh Security, see [Replicated vs. Mesh Security on the Informal Blog](https://informal.systems/blog/replicated-vs-mesh-security). From b54ffcfcd3aa685c54a6015fb213f30f24d45578 Mon Sep 17 00:00:00 2001 From: mpoke Date: Fri, 20 Sep 2024 10:30:21 +0200 Subject: [PATCH 16/32] add info on provider state --- docs/docs/build/modules/02-provider.md | 328 +++++++++++++++++++++++- x/ccv/provider/keeper/permissionless.go | 6 +- 2 files changed, 330 insertions(+), 4 deletions(-) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 84fb6ca3c1..6a434f9cfb 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -21,6 +21,332 @@ The provider module has the following functionalities: ## State +For clarity, the description of the the provider module state is split into features. +For a more accurate description, check out the `x/ccv/provider/types/keys.go` file, which contains the definitions of the keys. + +### Consumer Lifecycle + +#### ConsumerId + +`ConsumerId` is the consumer ID of the next consumer chain to be created. + +Format: `byte(43) -> uint64` + +#### ConsumerIdToChainId + +`ConsumerIdToChainId` is the chain ID of a given consumer chain. + +Format: `byte(44) | len(consumerId) | []byte(consumerId) -> string` + +#### ConsumerIdToOwnerAddress + +`ConsumerIdToOwnerAddress` is the account address of the owner of a given consumer chain. + +Format: `byte(45) | len(consumerId) | []byte(consumerId) -> string` + +#### ConsumerIdToMetadataKey + +`ConsumerIdToMetadataKey` is the metadata of a given consumer chain. + +Format: `byte(46) | len(consumerId) | []byte(consumerId) -> ConsumerMetadata` + +#### ConsumerIdToPhase + +`ConsumerIdToPhase` is the phase of a given consumer chain. + +Format: `byte(49) | len(consumerId) | []byte(consumerId) -> ConsumerPhase`, where `ConsumerPhase` is defined as + +```proto +enum ConsumerPhase { + option (gogoproto.goproto_enum_prefix) = false; + + // UNSPECIFIED defines an empty phase. + CONSUMER_PHASE_UNSPECIFIED = 0; + // REGISTERED defines the phase in which a consumer chain has been assigned a unique consumer id. + // A chain in this phase cannot yet launch. + CONSUMER_PHASE_REGISTERED = 1; + // INITIALIZED defines the phase in which a consumer chain has set all the needed parameters to launch but + // has not yet launched (e.g., because the `spawnTime` of the consumer chain has not yet been reached). + CONSUMER_PHASE_INITIALIZED = 2; + // LAUNCHED defines the phase in which a consumer chain is running and consuming a subset of the validator + // set of the provider. + CONSUMER_PHASE_LAUNCHED = 3; + // STOPPED defines the phase in which a previously-launched chain has stopped. + CONSUMER_PHASE_STOPPED = 4; + // DELETED defines the phase in which the state of a stopped chain has been deleted. + CONSUMER_PHASE_DELETED = 5; +} +``` + +#### ConsumerIdToRemovalTime + +`ConsumerIdToRemovalTime` is the removal time of a given consumer chain in the stopped phase. + +Format: `byte(50) | len(consumerId) | []byte(consumerId) -> time.Time` + +#### SpawnTimeToConsumerIds + +`SpawnTimeToConsumerIds` are the IDs of initialized consumer chains ready to be launched at a timestamp `ts`. + +Format: `byte(51) | ts -> ConsumerIds`, where `ConsumerIds` is defined as + +```proto +message ConsumerIds { + repeated string ids = 1; +} +``` + +#### RemovalTimeToConsumerIds + +`RemovalTimeToConsumerIds` are the IDs of stopped consumer chains ready to be removed at a timestamp `ts`. + +Format: `byte(52) | ts -> ConsumerIds`, where `ConsumerIds` is defined as + +### Consumer Launch + +#### ConsumerIdToInitializationParameters + +`ConsumerIdToInitializationParameters` are the initialization parameters of a given consumer chain. + +Format: `byte(47) | len(consumerId) | []byte(consumerId) -> ConsumerInitializationParameters` + +#### ConsumerIdToChannelId + +`ConsumerIdToChannelId` is the ID of the CCV channel associated with a consumer chain. + +Format: `byte(5) | []byte(consumerId) -> string` + +#### ChannelIdToConsumerId + +`ChannelIdToConsumerId` is the consumer ID associated with a CCV channel. + +Format: `byte(6) | []byte(channelId) -> string` + +#### ConsumerIdToClientId + +`ConsumerIdToClientId` is the ID of the client associated with a consumer chain. +This is the underlying client of the corresponding CCV channel. + +Format: `byte(7) | []byte(consumerId) -> string` + +#### ClientIdToConsumerId + +`ClientIdToConsumerId` is the consumer ID associated with an IBC client (i.e., the underlying client of the corresponding CCV channel). + +Format: `byte(53) | len(clientId) | []byte(clientId) -> string` + +#### ConsumerGenesis + +`ConsumerGenesis` is the genesis state of the consumer module associated with a consumer chain. + +Format: `byte(14) | []byte(consumerId) -> ConsumerGenesisState` + + +### Key Assingment + +#### ConsumerValidators + +> TODO: `ConsumerValidators` and `ConsumerValidator` are too similar. + +`ConsumerValidators` is the public key assigned by a given validator with `addr` as its provider consensus address (i.e., `sdk.ConsAddress`) on a given consumer chain. + +Format: `byte(22) | len(consumerId) | []byte(consumerId) | addr -> crypto.PublicKey`, where `crypto` is `"github.com/cometbft/cometbft/proto/tendermint/crypto"`. + +#### ValidatorsByConsumerAddr + +`ValidatorsByConsumerAddr` is the consensus address on the provider chain of a validator with `addr` as its consensus address on a given consumer chain. + +Format: `byte(23) | len(consumerId) | []byte(consumerId) | addr -> sdk.ConsAddress`. + +#### ConsumerAddrsToPruneV2 + +`ConsumerAddrsToPruneV2` stores the list of consumer consensus addresses that can be prunned at a timestamp `ts` as they are no longer needed. + +Format: `byte(40) | len(consumerId) | []byte(consumerId) | ts -> AddressList`, where `AddressList` is defined as + +```proto +message AddressList { + repeated bytes addresses = 1; +} +``` + +### Power Shaping + +#### ConsumerIdToPowerShapingParameters + +`ConsumerIdToPowerShapingParameters` are the power-shaping parameters of a given consumer chain. + +Format: `byte(48) | len(consumerId) | []byte(consumerId) -> PowerShapingParameters` + +#### ConsumerValidator + +`ConsumerValidator` is the `ConsensusValidator` record of a provider validator on a given consumer chain, i.e., + +```proto +message ConsensusValidator { + // validator's consensus address on the provider chain + bytes provider_cons_addr = 1; + // voting power the validator has during this epoch + int64 power = 2; + // public key the validator uses on the consumer chain during this epoch + tendermint.crypto.PublicKey public_key = 3; + // height the validator had when it FIRST became a consumer validator + int64 join_height = 4; +} +``` + +Format: `byte(31) | len(consumerId) | []byte(consumerId) | addr -> ConsensusValidator`, with `addr` the validator's consensus address on the provider chain. + +#### OptedIn + +`OptedIn` is the list of provider validators that opted in to validate on a given consumer chain. +Note that opting in doesn't guarantee a spot in the consumer validator set. + +Format: `byte(32) | len(consumerId) | []byte(consumerId) | addr -> []byte{}`, with `addr` the validator's consensus address on the provider chain. + +#### Allowlist + +`Allowlist` is the list of provider validators that are eligible to validate a given consumer chain. + +Format: `byte(36) | len(consumerId) | []byte(consumerId) | addr -> []byte{}`, with `addr` the validator's consensus address on the provider chain. + +#### Denylist + +`Denylist` is the list of provider validators that are not eligible to validate a given consumer chain. +Note that validator can opt in regardless of whether they are eligible or not. + +Format: `byte(37) | len(consumerId) | []byte(consumerId) | addr -> []byte{}`, with `addr` the validator's consensus address on the provider chain. + +#### MinimumPowerInTopN + +`MinimumPowerInTopN` is the minimum voting power a provider validator must have to be required to validate a given TopN consumer chain. + +Format: `byte(40) | len(consumerId) | []byte(consumerId) -> uint64` + +### Validator Set Updates + +#### ValidatorSetUpdateId + +`ValidatorSetUpdateId` is an incrementing sequence number that is used as a unique identifier for validator set updates sent to the consumer chains. +The validator set update ID is incremented every epoch. + +Format: `byte(2) -> uint64` + +#### PendingVSCs + +`PendingVSCs` is the list of `VSCPackets` that are queued to be sent to a given consumer chain. + +Format: `byte(17) | []byte(consumerId) -> ValidatorSetChangePackets`, where `ValidatorSetChangePackets` is defined as + +```proto +message ValidatorSetChangePackets { + repeated ValidatorSetChangePacketData list = 1 + [ (gogoproto.nullable) = false ]; +} +``` + +#### LastProviderConsensusVals + +`LastProviderConsensusVals` is the last validator set sent to the consensus engine of the provider chain. + +Format: `byte(42) | addr -> ConsensusValidator`, with `addr` the validator's consensus address on the provider chain and `ConsensusValidator` defined as + +```proto +message ConsensusValidator { + // validator's consensus address on the provider chain + bytes provider_cons_addr = 1; + // voting power the validator has during this epoch + int64 power = 2; + // public key the validator uses on the consumer chain during this epoch + tendermint.crypto.PublicKey public_key = 3; + // height the validator had when it FIRST became a consumer validator + int64 join_height = 4; +} +``` + +### Reward Distribution + +#### ConsumerRewardDenoms + +`ConsumerRewardDenoms` is storing the list of whitelisted denoms that are accepted as ICS rewards. +Note that denoms that are not whitelisted can still be transfer to the `consumer_rewards_pool` account on the provider module, but they will not be distributed to validators and their delegators. + +Format: `byte(27) | []byte(denom) -> []byte{}` + +#### ConsumerRewardsAllocation + +`ConsumerRewardsAllocation` is the allocation of ICS rewards for a given consumer chain. +This is used to distribute ICS rewards only to the validators that are part of the consumer chain validator set. + +Format: `byte(38) | []byte(consumerId) -> ConsumerRewardsAllocation`, where `ConsumerRewardsAllocation` is defined as + +```proto +message ConsumerRewardsAllocation { + repeated cosmos.base.v1beta1.DecCoin rewards = 1 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true, + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins" + ]; +} +``` + +#### ConsumerCommissionRate + +`ConsumerCommissionRate` is the commission rate set by a provider validator for a given consumer chain. + +Format: `byte(39) | len(consumerId) | []byte(consumerId) | addr -> math.LegacyDec`, with `addr` the validator's consensus address on the provider chain and `math` is `"cosmossdk.io/math"`. + +### Consumer Infractions + +#### SlashMeter + +`SlashMeter` is the meter used for the throttling mechanism as the allowance of voting power that can be jailed over time. +It is decremented by the amount of voting power jailed whenever a validator is jailed for downtime, and periodically replenished as decided by on-chain params. +See [ADR 002](../../adrs/adr-002-throttle.md) for more details. + +Format: `byte(3) -> math.Int` + +#### SlashMeterReplenishTimeCandidate + +`SlashMeterReplenishTimeCandidate` is the next UTC time the `SlashMeter` could potentially be replenished. +Note that this value is the next time the `SlashMeter` will be replenished if and only if the `SlashMeter` is not full. +Otherwise this value will be updated in every future block until the slash meter becomes not full. + +Format: `byte(4) -> time.Time` + +#### ValsetUpdateBlockHeight + +`ValsetUpdateBlockHeight` is the block height associated with a validator set update ID `vscId`. +This is used for mapping infraction heights on consumer chains to heights on the provider chain via the validator set update IDs (together with [InitChainHeight](#initchainheight)). + +Format: `byte(13) | vscId -> uint64` + +#### InitChainHeight + +`InitChainHeight` is the block height on the provider when the CCV channel of a given consumer chain was established (i.e., the channel opening handshake was completed). +This is used for mapping infraction heights on consumer chains to heights on the provider chain (together with [ValsetUpdateBlockHeight](#valsetupdateblockheight)). + +Format: `byte(16) | []byte(consumerId) -> uint64` + +#### SlashAcks + +`SlashAcks` are addresses of validators for which `SlashPackets` for downtime infractions received from a given consumer chain were handled. +These addresses are sent together with the validator updates to the consumer chain as confirmation that the downtime infractions were dealt with. + +Format: `byte(15) | []byte(consumerId) -> SlashAcks`, where `SlashAcks` is defined as + +```proto +message SlashAcks { + repeated string addresses = 1; +} +``` + +#### EquivocationEvidenceMinHeight + +`EquivocationEvidenceMinHeight` is the minimum height of a valid evidence of equivocation on a given consumer chain. + +Format: `byte(29) | []byte(consumerId) -> uint64` + ## State Transitions ### Consumer chain phases @@ -599,7 +925,7 @@ from that consumer. | Type | Default value | | ----- | ------------- | -| int64 | 180 | +| int64 | 180 | `MaxProviderConsensusValidators` is the maximum number of validators sent to the provider consensus enginer. diff --git a/x/ccv/provider/keeper/permissionless.go b/x/ccv/provider/keeper/permissionless.go index f096234d2a..43504a483e 100644 --- a/x/ccv/provider/keeper/permissionless.go +++ b/x/ccv/provider/keeper/permissionless.go @@ -70,10 +70,10 @@ func (k Keeper) GetConsumerOwnerAddress(ctx sdk.Context, consumerId string) (str return string(bz), nil } -// SetConsumerOwnerAddress sets the chain id associated with this consumer id -func (k Keeper) SetConsumerOwnerAddress(ctx sdk.Context, consumerId, chainId string) { +// SetConsumerOwnerAddress sets the owner address associated with this consumer id +func (k Keeper) SetConsumerOwnerAddress(ctx sdk.Context, consumerId, owner string) { store := ctx.KVStore(k.storeKey) - store.Set(types.ConsumerIdToOwnerAddressKey(consumerId), []byte(chainId)) + store.Set(types.ConsumerIdToOwnerAddressKey(consumerId), []byte(owner)) } // DeleteConsumerOwnerAddress deletes the owner address associated with this consumer id From 4c07275e29d24df6cc7319d8eeb977c53991bc2f Mon Sep 17 00:00:00 2001 From: mpoke Date: Sat, 21 Sep 2024 18:57:45 +0200 Subject: [PATCH 17/32] add consumer state --- docs/docs/build/modules/03-consumer.md | 172 +++++++++++++++++++++++++ x/ccv/consumer/keeper/keeper.go | 1 + x/ccv/consumer/types/keys.go | 2 + 3 files changed, 175 insertions(+) diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index f3f7695b1e..3b231ce451 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -23,6 +23,178 @@ As a result, the misbehaving validator is punished on the provider chain. ## State +### Provider Connection + +#### ProviderClientID + +`ProviderClientID` is the ID of the provider client on which the CCV channel is built. + +Format: `byte(3) -> string` + +#### ProviderChannelID + +`ProviderChannelID` is the ID of the CCV channel. + +Format: `byte(4) -> string` + +### Changeover + +#### PreCCV + +`PreCCV` is the flag set when the consumer chain is in the process of a standalone to consumer chain changeover. + +Format: `byte(7) -> uint64` + +#### InitialValSet + +`InitialValSet` is the initial validator set on the consumer chain. + +Format: `byte(8) -> GenesisState` + +Note that only the `InitialValSet` field of the `ProviderInfo` field of `GenesisState` is set, i.e., + +```proto +message GenesisState { + ... + ProviderInfo provider = 14 + [ (gogoproto.nullable) = false ]; +} + +message ProviderInfo { + // InitialValset filled in on new chain and on restart. + repeated .tendermint.abci.ValidatorUpdate initial_val_set = 3 + [ (gogoproto.nullable) = false ]; +} +``` + +#### InitGenesisHeight + +`InitGenesisHeight` is the height when the consumer module was initialized (i.e., the `InitGenesis` method was called). + +Format: `byte(17) -> uint64` + +#### PrevStandaloneChain + +`PrevStandaloneChain` is the flag set when the consumer chain was previously a standalone chain. + +Format: `byte(19) -> []byte{}` + +### Validator Updates + +#### PendingChanges + +`PendingChanges` are the validator updates received from the provider that were not yet sent to the consensus engine. + +Format: `byte(5) -> ValidatorSetChangePacketData` + +Note that only the `ValidatorUpdates` field of `ValidatorSetChangePacketData` is set. + +#### CrossChainValidator + +`CrossChainValidator` is the internal state of a consumer validator with consensus address `addr`. + +Format: `byte(16) | addr -> CrossChainValidator`, where `CrossChainValidator` is defined as + +```proto +message CrossChainValidator { + bytes address = 1; + int64 power = 2; + // pubkey is the consensus public key of the validator, as a Protobuf Any. + google.protobuf.Any pubkey = 3 [ + (cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey", + (gogoproto.moretags) = "yaml:\"consensus_pubkey\"" + ]; + // deprecated + bool opted_out = 4 [deprecated = true]; +} +``` + +#### HistoricalInfo + +`HistoricalInfo` is the header and validator information for a given block. +For more details, see the [Cosmos SDK docs](https://docs.cosmos.network/v0.50/build/modules/staking#historicalinfo). + +Format: `byte(11) | height -> HistoricalInfo`, where `HistoricalInfo` is define in the staking module as + +```proto +message HistoricalInfo { + tendermint.types.Header header = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + repeated Validator valset = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; +} +``` + +### Reward Distribution + +#### LastDistributionTransmission + +`LastDistributionTransmission` is the block height of the last attempt to send ICS rewards to the provider module. + +Format: `byte(1) -> LastTransmissionBlockHeight`, where `LastTransmissionBlockHeight` is defined as + +```proto +message LastTransmissionBlockHeight { + int64 height = 1; +} +``` + +### Downtime Infractions + +#### OutstandingDowntime + +`OutstandingDowntime` is the flag set when a `SlashPacket` is queued to be sent to the provider for a downtime infraction of a validator with consensus address `addr`. +The flag is unset when receiving from the provider a `VSCPacket` with a slash acknowledgement (see `SlashAcks` in `ValidatorSetChangePacketData`). + +Format: `byte(14) | addr -> []byte{}` + +#### HeightValsetUpdateID + +`HeightValsetUpdateID` is the validator set update ID associated with a block height. + +Format: `byte(13) | height -> uint64` + +#### PendingPacketsIndex + +`PendingPacketsIndex` is the next index available to store packet data to be sent to the provider chain (see below). + +Format: `byte(20) -> uint64` + +#### PendingDataPacketsV1 + +`PendingDataPacketsV1` is the queue of packet data to be sent to the provider chain. +In general, packets in this queue will be sent to the provider in the end blocker, unless + +- the CCV channel is not yet established; +- the provider client is expired; +- the last slash packet sent was not yet acknowledged by the provider chain. + +Format: `byte(15) | index -> ConsumerPacketData`, where `index` is the index of the packet in the queue and `ConsumerPacketData` is defined as + +```proto +message ConsumerPacketData { + ConsumerPacketDataType type = 1; + + oneof data { + SlashPacketData slashPacketData = 2; + VSCMaturedPacketData vscMaturedPacketData = 3; + } +} +``` + +#### SlashRecord + +`SlashRecord` is the record storing the state of a SlashPacket sent to the provider chain that was not yet acknowledged. +See [ADR 008](../../adrs/adr-008-throttle-retries.md) for more details. + +Format: `byte(21) -> SlashRecord`, where `SlashRecord` is defined as + +```proto +message SlashRecord { + bool waiting_on_reply = 1; + google.protobuf.Timestamp send_time = 2 + [ (gogoproto.stdtime) = true, (gogoproto.nullable) = false ]; +} +``` + ## State Transitions ## IBC Callbacks diff --git a/x/ccv/consumer/keeper/keeper.go b/x/ccv/consumer/keeper/keeper.go index c07a3e9428..cd5b2f7255 100644 --- a/x/ccv/consumer/keeper/keeper.go +++ b/x/ccv/consumer/keeper/keeper.go @@ -331,6 +331,7 @@ func (k Keeper) DeletePreCCV(ctx sdk.Context) { func (k Keeper) SetInitialValSet(ctx sdk.Context, initialValSet []tmtypes.ValidatorUpdate) { store := ctx.KVStore(k.storeKey) + // TODO it's not necessary to store the entire genesis state initialValSetState := types.GenesisState{ Provider: ccv.ProviderInfo{InitialValSet: initialValSet}, } diff --git a/x/ccv/consumer/types/keys.go b/x/ccv/consumer/types/keys.go index 30b8a4f725..f551a5d79a 100644 --- a/x/ccv/consumer/types/keys.go +++ b/x/ccv/consumer/types/keys.go @@ -220,6 +220,7 @@ func LastDistributionTransmissionKey() []byte { } // UnbondingTimeKey returns the key for storing the unbonding period +// TODO remove as it's never used func UnbondingTimeKey() []byte { return []byte{mustGetKeyPrefix(UnbondingTimeKeyName)} } @@ -333,6 +334,7 @@ func InitGenesisHeightKey() []byte { // StandaloneTransferChannelIDKey returns the key for storing the transfer channelID that existed from a standalone chain // changing over to a consumer +// TODO remove as it's never used func StandaloneTransferChannelIDKey() []byte { return []byte{mustGetKeyPrefix(StandaloneTransferChannelIDKeyName)} } From e3efea4c249abdc99a419dae43545952da18e157 Mon Sep 17 00:00:00 2001 From: mpoke Date: Sat, 21 Sep 2024 18:58:52 +0200 Subject: [PATCH 18/32] add state intro --- docs/docs/build/modules/02-provider.md | 2 +- docs/docs/build/modules/03-consumer.md | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 6a434f9cfb..121d7d876f 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -22,7 +22,7 @@ The provider module has the following functionalities: ## State For clarity, the description of the the provider module state is split into features. -For a more accurate description, check out the `x/ccv/provider/types/keys.go` file, which contains the definitions of the keys. +For a more accurate description, check out the `x/ccv/provider/types/keys.go` file, which contains the definitions of all the keys. ### Consumer Lifecycle diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 3b231ce451..1b708d56c6 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -23,6 +23,9 @@ As a result, the misbehaving validator is punished on the provider chain. ## State +For clarity, the description of the the consumer module state is split into features. +For a more accurate description, check out the `x/ccv/consumer/types/keys.go` file, which contains the definitions of all the keys. + ### Provider Connection #### ProviderClientID From a3525b9db90605a551a4bb789c9f208ccb1165b1 Mon Sep 17 00:00:00 2001 From: mpoke Date: Sat, 21 Sep 2024 19:00:28 +0200 Subject: [PATCH 19/32] add TODOs --- docs/docs/build/modules/02-provider.md | 2 ++ docs/docs/build/modules/03-consumer.md | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 121d7d876f..2d32f40146 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -937,6 +937,8 @@ and _active validator_, i.e., validators that participate actively in the provid ## Client +> TBA + ### CLI ### gRPC diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 1b708d56c6..539df44bbc 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -200,6 +200,8 @@ message SlashRecord { ## State Transitions +> TBA + ## IBC Callbacks The consumer module is an IBC application that implements the [IBC module callback](https://ibc.cosmos.network/v8/ibc/apps/apps/#create-a-custom-ibc-application-module). @@ -439,6 +441,8 @@ For more details, see [ADR-008](../adrs/adr-008-throttle-retries.md). ## Client +> TBA + ### CLI ### gRPC From b30a4b558fc4c41977dbb663b04c3c2805f1feba Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Thu, 26 Sep 2024 11:54:25 +0200 Subject: [PATCH 20/32] add CLI --- docs/docs/build/modules/02-provider.md | 1143 +++++++++++++++++++++++- tests/e2e/test_runner.go | 2 +- 2 files changed, 1142 insertions(+), 3 deletions(-) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 2d32f40146..4b0d98365f 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -937,10 +937,1149 @@ and _active validator_, i.e., validators that participate actively in the provid ## Client -> TBA - ### CLI +A user can interact with the `provider` module using the CLI. + +#### Query + +The `query` commands allow users to query `provider` state. + +```bash +simd query provider --help +``` + +##### Consumer Genesis +The `consumer-genesis` command allows to query for consumer chain genesis state by consumer id + +```bash +interchain-security-pd query provider consumer-genesis [consumer-id] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider consumer-genesis 0 +``` + +Example Output: + +```bash +new_chain: true +params: + blocks_per_distribution_transmission: "1000" + ccv_timeout_period: 2419200s + consumer_id: "0" + consumer_redistribution_fraction: "0.75" + distribution_transmission_channel: "" + enabled: true + historical_entries: "10000" + provider_fee_pool_addr_str: "" + provider_reward_denoms: [] + retry_delay_period: 3600s + reward_denoms: [] + soft_opt_out_threshold: "0" + transfer_timeout_period: 3600s + unbonding_period: 1209600s +provider: + client_state: + allow_update_after_expiry: false + allow_update_after_misbehaviour: false + chain_id: provider + frozen_height: + revision_height: "0" + revision_number: "0" + latest_height: + revision_height: "25" + revision_number: "0" + max_clock_drift: 10s + proof_specs: + - inner_spec: + child_order: + - 0 + - 1 + child_size: 33 + empty_child: null + hash: SHA256 + max_prefix_length: 12 + min_prefix_length: 4 + leaf_spec: + hash: SHA256 + length: VAR_PROTO + prefix: AA== + prehash_key: NO_HASH + prehash_value: SHA256 + max_depth: 0 + min_depth: 0 + prehash_key_before_comparison: false + - inner_spec: + child_order: + - 0 + - 1 + child_size: 32 + empty_child: null + hash: SHA256 + max_prefix_length: 1 + min_prefix_length: 1 + leaf_spec: + hash: SHA256 + length: VAR_PROTO + prefix: AA== + prehash_key: NO_HASH + prehash_value: SHA256 + max_depth: 0 + min_depth: 0 + prehash_key_before_comparison: false + trust_level: + denominator: "3" + numerator: "1" + trusting_period: 1197504s + unbonding_period: 1814400s + upgrade_path: + - upgrade + - upgradedIBCState + consensus_state: + next_validators_hash: 632730A03DEF630F77B61DF4092629007AE020B789713158FABCB104962FA54F + root: + hash: Jcck4b/HHJOcjcVjTdMi8qHB4SeCpWpfLiN9DtB99oA= + timestamp: "2024-09-25T09:18:40.262655625Z" + initial_val_set: + - power: "500" + pub_key: + ed25519: RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10= + - power: "500" + pub_key: + ed25519: Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is= + - power: "500" + pub_key: + ed25519: mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI= +``` + +##### List Consumer Chains +The `list-consumer-chains` command allows to query consumer chains for provider chain. +An optional integer parameter can be passed for phase filtering of consumer chains, + (Registered=1|Initialized=2|Launched=3|Stopped=4|Deleted=5).` + +```bash +interchain-security-pd query provider list-consumer-chains [phase] [limit] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider list-consumer-chains 3 +``` + +Example Output: + +``` +chains: +- allow_inactive_vals: true + allowlist: [] + chain_id: pion-1 + client_id: 07-tendermint-0 + consumer_id: "0" + denylist: ["cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6"] + metadata: + description: description of your chain and all other relevant information + metadata: some metadata about your chain + name: pion-1 + min_power_in_top_N: "500" + min_stake: "0" + phase: CONSUMER_PHASE_LAUNCHED + top_N: 60 + validator_set_cap: 0 + validators_power_cap: 0 +pagination: + next_key: null + total: "1" +``` + +##### Validator Consumer Key Assignment +The `validator-consumer-key` command allows to query assigned validator consensus public key for a consumer chain + +```bash +interchain-security-pd query provider validator-consumer-key [consumerId] [provider-validator-address] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider validator-consumer-key 3 cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6 +``` + +##### Validator Provider Key +The `validator-provider-key` command allows to query validator consensus public key for the provider chain + + +```bash +interchain-security-pd query provider validator-provider-key [consumer-id] [consumer-validator-address] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider validator-provider-key 0 cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6 +``` + + +Example Output: + + ```bash +consumer_address: cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk +``` + +##### Throttle State +The `throttle-state` command allows to query on-chain state relevant to slash packet throttling + + +```bash +interchain-security-pd query provider throttle-state [flags] +``` + +Example: + +```bash +interchain-security-pd query provider throttle-state +``` + +Example Output: + +```bash +next_replenish_candidate: "2024-09-26T07:59:51.336971970Z" +slash_meter: "1500" +slash_meter_allowance: "1511" +``` + +##### Registered Consumer Reward Denoms +The `registered-consumer-reward-denoms` command allows to query registered consumer reward denoms + +```bash +interchain-security-pd query provider registered-consumer-reward-denoms [flags] +``` + +Example: + +```bash +interchain-security-pd query provider registered-consumer-reward-denoms +``` + +Example Output: + +```bash +denoms: +- ibc/3C3D7B3BE4ECC85A0E5B52A3AEC3B7DFC2AA9CA47C37821E57020D6807043BE9 +- ibc/D549749C93524DA1831A4B3C850DFC1BA9060261BEDFB224B3B0B4744CD77A70 +``` + +##### All Pairs Valconsensus Address +The `all-pairs-valconsensus-address` command allows to query all pairs of valconsensus address by consumer ID. + +```bash +interchain-security-pd query provider all-pairs-valconsensus-address [consumer-id] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider all-pairs-valconsensus-address [consumer-id] +``` + +```bash +interchain-security-pd query provider all-pairs-valconsensus-address 0 +``` + +Example Output: + +``` +pair_val_con_addr: +- consumer_address: cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk + consumer_key: + ed25519: Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is= + provider_address: cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6 +``` + +##### Provider Parameters +The `params` command allows to query provider parameters information + +```bash +interchain-security-pd query provider params [flags] +``` + +Example: + +```bash +interchain-security-pd query provider params +``` + +Example Output: + +```bash +blocks_per_epoch: "3" +ccv_timeout_period: 2419200s +consumer_reward_denom_registration_fee: + amount: "10000000" + denom: stake +max_provider_consensus_validators: "180" +number_of_epochs_to_start_receiving_rewards: "24" +slash_meter_replenish_fraction: "1.0" +slash_meter_replenish_period: 3600s +template_client: + allow_update_after_expiry: false + allow_update_after_misbehaviour: false + chain_id: "" + frozen_height: + revision_height: "0" + revision_number: "0" + latest_height: + revision_height: "0" + revision_number: "0" + max_clock_drift: 10s + proof_specs: + - inner_spec: + child_order: + - 0 + - 1 + child_size: 33 + empty_child: null + hash: SHA256 + max_prefix_length: 12 + min_prefix_length: 4 + leaf_spec: + hash: SHA256 + length: VAR_PROTO + prefix: AA== + prehash_key: NO_HASH + prehash_value: SHA256 + max_depth: 0 + min_depth: 0 + prehash_key_before_comparison: false + - inner_spec: + child_order: + - 0 + - 1 + child_size: 32 + empty_child: null + hash: SHA256 + max_prefix_length: 1 + min_prefix_length: 1 + leaf_spec: + hash: SHA256 + length: VAR_PROTO + prefix: AA== + prehash_key: NO_HASH + prehash_value: SHA256 + max_depth: 0 + min_depth: 0 + prehash_key_before_comparison: false + trust_level: + denominator: "3" + numerator: "1" + trusting_period: 0s + unbonding_period: 0s + upgrade_path: + - upgrade + - upgradedIBCState +trusting_period_fraction: "0.66" +``` + +##### Consumer Opted In Validators +The `consumer-opted-in-validators` command allows to query opted-in validators for a given consumer chain + +```bash +interchain-security-pd query provider consumer-opted-in-validators [consumer-id] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider consumer-opted-in-validators 0 +``` + +Example Output: + +```bash +validators_provider_addresses: +- cosmosvalcons1qmq08eruchr5sf5s3rwz7djpr5a25f7xw4mceq +- cosmosvalcons1nx7n5uh0ztxsynn4sje6eyq2ud6rc6klc96w39 +- cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6 +``` + +##### Consumer Validators +The `consumer-validators` command allows to query the last set consumer-validator set for a given consumer chain + +```bash +interchain-security-pd query provider consumer-validators [consumer-id] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider consumer-validators 0 +``` + +Example Output: + +``` +validators: +- consumer_commission_rate: "0.100000000000000000" + consumer_key: + ed25519: RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10= + consumer_power: "511" + description: + details: "" + identity: "" + moniker: validatoralice + security_contact: "" + website: "" + jailed: false + power: "0" + provider_address: cosmosvalcons1qmq08eruchr5sf5s3rwz7djpr5a25f7xw4mceq + provider_commission_rate: "0.100000000000000000" + provider_operator_address: cosmosvaloper19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddtrgtng + provider_power: "511" + provider_tokens: "511000000" + rate: "0.000000000000000000" + status: BOND_STATUS_BONDED + validates_current_epoch: true +- consumer_commission_rate: "0.100000000000000000" + consumer_key: + ed25519: mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI= + consumer_power: "500" + description: + details: "" + identity: "" + moniker: validatorbob + security_contact: "" + website: "" + jailed: false + power: "0" + provider_address: cosmosvalcons1nx7n5uh0ztxsynn4sje6eyq2ud6rc6klc96w39 + provider_commission_rate: "0.100000000000000000" + provider_operator_address: cosmosvaloper1dkas8mu4kyhl5jrh4nzvm65qz588hy9qakmjnw + provider_power: "500" + provider_tokens: "500000000" + rate: "0.000000000000000000" + status: BOND_STATUS_BONDED + validates_current_epoch: true +``` + +##### Has to Validate +The `has-to-validate` command allows to query the consumer chains list a given validator has to validate + +```bash +interchain-security-pd query provider has-to-validate [provider-validator-address] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider has-to-validate cosmoscons1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj +``` + +Example Output: + +``` +consumer_ids: +- "0" +- "2" +``` + +##### Validator Consumer Commission Rate +The `validator-consumer-commission-rate` command allows to query the consumer commission rate a validator charges on a consumer chain + +```bash +interchain-security-pd query provider validator-consumer-commission-rate [consumer-id] [provider-validator-address] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider validator-consumer-commission-rate 3 cosmoscons1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj +``` + +Example Output: + +```bash +rate: "0.750000000000000000" +``` + +##### Blocks Until Next Epoch +The `blocks-until-next-epoch` command allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains + +```bash +interchain-security-pd query provider blocks-until-next-epoch [flags] +``` + +Example: + +```bash +interchain-security-pd query provider blocks-until-next-epoch +``` + +Example Output: + +```bash +blocks_until_next_epoch: "286" +``` + +##### Consumer Id From Client Id +The `consumer-id-from-client-id` command allows to query the consumer id of the chain associated with the provided client id + +```bash +interchain-security-pd query provider consumer-id-from-client-id [client-id] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider consumer-id-from-client-id 07-tendermint-0 +``` + +Example Output: + +```bash +consumer_id: "0" +``` + +##### Consumer Chain +The `consumer-chain` command allows to query the consumer chain associated with the consumer id + +```bash +interchain-security-pd query provider consumer-chain [consumer-id] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider consumer-chain 0 +``` + +```bash +chain_id: pion-1 +consumer_id: "0" +init_params: + binary_hash: YmluX2hhc2g= + blocks_per_distribution_transmission: "1000" + ccv_timeout_period: 2419200s + consumer_redistribution_fraction: "0.75" + distribution_transmission_channel: "" + genesis_hash: Z2VuX2hhc2g= + historical_entries: "10000" + initial_height: + revision_height: "1" + revision_number: "0" + spawn_time: "2024-09-26T06:55:14.616054Z" + transfer_timeout_period: 3600s + unbonding_period: 1209600s +metadata: + description: description of your chain and all other relevant information + metadata: some metadata about your chain + name: pion-1 +owner_address: cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn +phase: CONSUMER_PHASE_LAUNCHED +power_shaping_params: + allow_inactive_vals: false + allowlist: [] + denylist: [] + min_stake: "0" + top_N: 100 + validator_set_cap: 0 + validators_power_cap: 0 +``` + +#### Transactions + +The `tx` commands allows users to interact with the `provider` module. + +```bash +simd tx provider --help +``` + +##### Assign Consumer Key + +The `assign-consensus-key` command allows to assign a consensus public key to use for a consumer chain. + +```bash +interchain-security-pd tx provider assign-consensus-key [consumer-id] [consumer-pubkey] [flags] +``` + +Example + +```bash +interchain-security-pd tx provider assign-consensus-key 3 \ + '{"@type":"/cosmos.crypto.ed25519.PubKey","key":"Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is="}' \ + --chain-id provider \ + --from mykey \ + --gas="auto" \ + --gas-adjustment="1.2" \ + --gas-prices="0.025stake" \ + --from=mykey +``` + +Note that the consumer pubkey can be obtained by using `interchain-security-cd tendermint show-validator` command. + +##### Create Consumer + +The `create-consumer` command allows to create a consumer chain. + +```bash +interchain-security-pd tx provider create-consumer [consumer-parameters] [flags] +``` + +Example: + +```bash +interchain-security-pd tx provider create-consumer path/to/create-consumer-msg.json \ + --chain-id provider \ + --from mykey \ + --gas="auto" \ + --gas-adjustment="1.2" \ + --gas-prices="0.025stake" \ + --from=mykey +``` +where `create-consumer-msg.json` contains: + +```json +{ + "chain_id" : "pion-1", + "metadata": { + "name": "pion-1", + "description":"description of your chain and all other relevant information", + "metadata": "some metadata about your chain" + } +} +``` + +##### Update Consumer + +The `update-consumer` command allows to update a consumer chain. + +```bash +interchain-security-pd tx provider update-consumer [consumer-parameters] [flags] +``` + +Example: + +```bash +interchain-security-pd tx provider update-consumer path/to/update-consumer.json \ + --chain-id provider \ + --from mykey \ + --gas="auto" \ + --gas-adjustment="1.2" \ + --gas-prices="0.025stake" \ + --from=mykey +``` + +where `update-consumer-msg.json` contains: + +```json +{ + "consumer_id" : "0", + "owner_address": "cosmos1p3ucd3ptpw902fluyjzhq3ffgq4ntddac9sa3s", + "metadata": { + "name": "pion-1", + "description":"description of your chain and all other relevant information", + "metadata": "some metadata about your" + }, + "initialization_parameters":{ + "initial_height":{ + "revision_number": 0, + "revision_height": 1 + }, + "genesis_hash":"2D5C2110941DA54BE07CBB9FACD7E4A2E3253E79BE7BE3E5A1A7BDA518BAA4BE", + "binary_hash": "6EF05C2F38BE62A833E5AB51EBF3BA72D1BC1664D7E4A2E3253DA54BE07CF38A", + "spawn_time": "2024-09-29T12:57:43Z", + "unbonding_period":"2419200s", + "ccv_timeout_period": "2419200s", + "transfer_timeout_period": "3600s", + "consumer_redistribution_fraction": "0.75", + "blocks_per_distribution_transmission": "1500", + "historical_entries":"1000", + "distribution_transmission_channel": "" + }, + "power_shaping_parameters":{ + "top_N":50, + "validators_power_cap":50, + "validator_set_cap":50, + "allowlist":["cosmosvalcons1l9qq4m300z8c5ez86ak2mp8znftewkwgjlxh88"], + "denylist":[], + "min_stake": "1000", + "allow_inactive_vals":true + } +} +``` + +##### Remove Consumer + +The `remove-consumer` command allows to remove a consumer chain. + +```bash +interchain-security-pd tx provider remove-consumer [consumer-id] [flags] +``` + +Example: + +```bash +interchain-security-pd tx provider remove-consumer 3 +``` + +##### Opt In + +The `opt-in` command allows a validator to opt in to a consumer chain and optionally set a consensus public key. + +```bash +interchain-security-pd tx provider opt-in [consumer-id] [consumer-pubkey] [flags] +``` + +Example: + +```bash +interchain-security-pd tx provider opt-in 3 \ + '{"@type":"/cosmos.crypto.ed25519.PubKey","key":"Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is="}' \ + --chain-id provider \ + --from mykey \ + --gas="auto" \ + --gas-adjustment="1.2" \ + --gas-prices="0.025stake" \ + --from=mykey +``` + +##### Opt Out + +The `opt-out` command allows a validator to opt in to a consumer chain and optionally set a consensus public key. + +```bash +interchain-security-pd tx provider opt-out [consumer-id] [flags] +``` + +Example: + +```bash +interchain-security-pd tx provider opt-out 3 \ + --chain-id provider \ + --from mykey \ + --gas="auto" \ + --gas-adjustment="1.2" \ + --gas-prices="0.025stake" \ + --from=mykey +``` + +##### Set Consumer Commission Rate + +The `set-consumer-commission-rate` command allows to set a per-consumer chain commission rate. + +```bash +interchain-security-pd tx provider set-consumer-commission-rate [consumer-id] [commission-rate] [flags] +``` + +Example: + +```bash +interchain-security-pd tx provider set-consumer-commission-rate 3 0.5 \ + --chain-id provider \ + --from mykey \ + --gas="auto" \ + --gas-adjustment="1.2" \ + --gas-prices="0.025stake" \ + --from=mykey +``` + +##### Submit Consumer Double Voting + +The `submit-consumer-double-voting` command allows to submit a double voting evidence for a consumer chain. + +```bash +interchain-security-pd tx provider submit-consumer-double-voting [consumer-id] [evidence] [infraction_header] [flags] +``` + +Example: + +```bash +interchain-security-pd tx provider submit-consumer-double-voting 3 path/to/evidence.json path/to/infraction_header.json \ + --chain-id provider \ + --from mykey \ + --gas="auto" \ + --gas-adjustment="1.2" \ + --gas-prices="0.025stake" \ + --from=mykey +``` + +where `evidence.json` contains: + +```json +{ + "vote_a": { + "type": "SIGNED_MSG_TYPE_PREVOTE", + "height": "59", + "round": 0, + "block_id": { + "hash": "paTPgLrLCZmw5ctQWlaMLJhXLckafakKN9skJbTiCHA=", + "part_set_header": { + "total": 1, + "hash": "pVOTT8MO00rk0HAeVQgzdP3wjIOzN5X5tfPLTtXIn2g=" + } + }, + "timestamp": "2024-09-26T09:34:47.146234009Z", + "validator_address": "mb06cu8SzQJOdYSzrJAK43Q8at8=", + "validator_index": 1, + "signature": "Z9C1oU5AEyFqXVmQ0LKNlaVa+tGh++95EB5HYe0i61PlREOmo/OTLlWedr8kuAThBu/1CpaLz446hYjISAKqBQ==", + "extension": null, + "extension_signature": null + }, + "vote_b": { + "type": "SIGNED_MSG_TYPE_PREVOTE", + "height": "59", + "round": 0, + "block_id": { + "hash": "07tksQsQ0gVBphgP4eeyGII9tEaLUuCauQcmwar9ktk=", + "part_set_header": { + "total": 1, + "hash": "nND/ClxCtoSJ9fC7Jyy884ab+nDh+PnHwI28T2fELCE=" + } + }, + "timestamp": "2024-09-26T09:34:47.051976301Z", + "validator_address": "mb06cu8SzQJOdYSzrJAK43Q8at8=", + "validator_index": 1, + "signature": "QscqC9ilH4gL7+3GPqLMWly+UkO+p0JgcinDZtfHOM4fYosZhx+TzhLrrXNExYpwX3D8qQHmJlLCcXLqbo7aCA==", + "extension": null, + "extension_signature": null + }, + "total_voting_power": "1500", + "validator_power": "500", + "timestamp": "2024-09-26T09:34:45.945436342Z" +} + +``` + +where `infraction_header.json` contains: + +```json +{ + "signed_header": { + "header": { + "version": { + "block": "11", + "app": "0" + }, + "chain_id": "consu", + "height": "59", + "time": "2024-09-26T09:34:45.945436342Z", + "last_block_id": { + "hash": "t8HcmkQbchpGE1CxqdhcogoT+yD5VIm+cRGLcosTtxE=", + "part_set_header": { + "total": 1, + "hash": "fTediSh8XttUUoxWJLPIxO6iWecqdMMsegD2svBtR5E=" + } + }, + "last_commit_hash": "2U4mFcB6+FffQeFPUaHkd+eBtEV5/5d3Zy0Lk58dwIs=", + "data_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + "validators_hash": "D26N3CL1zQt7yn+JUQ8Dcb2vCYG7QmHMiMfY+nGxhts=", + "next_validators_hash": "D26N3CL1zQt7yn+JUQ8Dcb2vCYG7QmHMiMfY+nGxhts=", + "consensus_hash": "BICRvH3cKD93v7+R1zxE2ljD34qcvIZ0Bdi389qtoi8=", + "app_hash": "k/RW/WMOYCS89VBhKMHIRYb30a30JkZ+puyp9ESTBiA=", + "last_results_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + "evidence_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + "proposer_address": "mb06cu8SzQJOdYSzrJAK43Q8at8=" + }, + "commit": { + "height": "59", + "round": 0, + "block_id": { + "hash": "07tksQsQ0gVBphgP4eeyGII9tEaLUuCauQcmwar9ktk=", + "part_set_header": { + "total": 1, + "hash": "nND/ClxCtoSJ9fC7Jyy884ab+nDh+PnHwI28T2fELCE=" + } + }, + "signatures": [ + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "BsDz5HzFx0gmkIjcLzZBHTqqJ8Y=", + "timestamp": "2024-09-26T09:34:47.271500717Z", + "signature": "bXA2WgQVVlHAkn9mGIfoUvgn3C+EJCzNGTAjnhoQJwLkh1Okg3oYmwZRz+UGbc95kXyVO7kQSXhavt0ZPcJ4AA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "mb06cu8SzQJOdYSzrJAK43Q8at8=", + "timestamp": "2024-09-26T09:34:47.305955426Z", + "signature": "YG1OcUhpTKFz+Uo8halNmkw0s6n333+m53laZvyQSHM5gqOG4h8jzij2u9sU4H404OJMgdj+1GTxuHmQ8jWFBg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "tBw6QBQpY6pbEt3RxOWJDAs5JrE=", + "timestamp": "2024-09-26T09:34:47.255694467Z", + "signature": "EYOC/yo+RaosEVhwBy0bZFjVwHCR7rRZo/FmTRWpAIXZHBVrIiX3iVzRUwn78lsfbaoT97TsqRX61bAiJDM6BA==" + } + ] + } + }, + "validator_set": { + "validators": [ + { + "address": "BsDz5HzFx0gmkIjcLzZBHTqqJ8Y=", + "pub_key": { + "ed25519": "RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=" + }, + "voting_power": "500", + "proposer_priority": "-1000" + }, + { + "address": "mb06cu8SzQJOdYSzrJAK43Q8at8=", + "pub_key": { + "ed25519": "mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=" + }, + "voting_power": "500", + "proposer_priority": "500" + }, + { + "address": "tBw6QBQpY6pbEt3RxOWJDAs5JrE=", + "pub_key": { + "ed25519": "Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is=" + }, + "voting_power": "500", + "proposer_priority": "500" + } + ], + "proposer": { + "address": "BsDz5HzFx0gmkIjcLzZBHTqqJ8Y=", + "pub_key": { + "ed25519": "RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=" + }, + "voting_power": "500", + "proposer_priority": "-1000" + }, + "total_voting_power": "0" + }, + "trusted_height": { + "revision_number": "0", + "revision_height": "0" + }, + "trusted_validators": null +} + +``` +##### Submit Consumer Double Voting + +The `submit-consumer-misbehaviour` command allows to submit an IBC misbehaviour for a consumer chain. + +```bash +interchain-security-pd tx provider submit-consumer-misbehaviour [consumer-id] [misbehaviour] [flags] +``` + +Example: + +```bash +interchain-security-pd tx provider submit-consumer-misbehaviour 3 path/to/consumer-misbehaviour.json + --chain-id provider \ + --from mykey \ + --gas="auto" \ + --gas-adjustment="1.2" \ + --gas-prices="0.025stake" \ + --from=mykey +``` + +where `consumer-misbehaviour.json` contains: + +```json +{ + "client_id": "07-tendermint-0", + "header_1": { + "signed_header": { + "header": { + "version": { + "block": "11", + "app": "0" + }, + "chain_id": "consu", + "height": "95", + "time": "2024-09-26T09:15:52.845591095Z", + "last_block_id": { + "hash": "PUph0B9N9X+LdrstqOoGf+W+OS6oHetQUa+0fpcRnF8=", + "part_set_header": { + "total": 1, + "hash": "SlVkAlM1uq3DjgTk0NbZftLlFwOEJrau1Wnhg3jEH3A=" + } + }, + "last_commit_hash": "Hxe4aLTULJ7qxJ10XsQfluKyU1Rn+d+cgDeTm2AATqU=", + "data_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + "validators_hash": "+003y0s55+pbijWbJyVVgfNnquSaGGnQmC1hGRUIIjk=", + "next_validators_hash": "+003y0s55+pbijWbJyVVgfNnquSaGGnQmC1hGRUIIjk=", + "consensus_hash": "BICRvH3cKD93v7+R1zxE2ljD34qcvIZ0Bdi389qtoi8=", + "app_hash": "uGHlqLiNp+ZCjE889JDFKnrNkRpZ5xZ5OOamXrCNcOc=", + "last_results_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + "evidence_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + "proposer_address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=" + }, + "commit": { + "height": "95", + "round": 0, + "block_id": { + "hash": "hkUUob+4UVRE4uJW53fY9UYViGTs2v6P5Sb/hUFYyak=", + "part_set_header": { + "total": 1, + "hash": "0tx9pRIzYJ3vwrYyOgMC8zxf/sSJUtNVm9DBKM8Yxo0=" + } + }, + "signatures": [ + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=", + "timestamp": "2024-09-26T09:15:53.852414554Z", + "signature": "iiQCCxsCOoNVb2smAVmDO62o9HLf+I4rWk8o86uA1ZoFun/lk1bwrocaMp1It1SjVo/szYsX6Hp5rP1IwcAjDg==" + } + ] + } + }, + "validator_set": { + "validators": [ + { + "address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=", + "pub_key": { + "ed25519": "ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=" + }, + "voting_power": "511", + "proposer_priority": "0" + } + ], + "proposer": { + "address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=", + "pub_key": { + "ed25519": "ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=" + }, + "voting_power": "511", + "proposer_priority": "0" + }, + "total_voting_power": "0" + }, + "trusted_height": { + "revision_number": "0", + "revision_height": "20" + }, + "trusted_validators": { + "validators": [ + { + "address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=", + "pub_key": { + "ed25519": "ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=" + }, + "voting_power": "500", + "proposer_priority": "0" + } + ], + "proposer": { + "address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=", + "pub_key": { + "ed25519": "ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=" + }, + "voting_power": "500", + "proposer_priority": "0" + }, + "total_voting_power": "0" + } + }, + "header_2": { + "signed_header": { + "header": { + "version": { + "block": "11", + "app": "0" + }, + "chain_id": "consu", + "height": "95", + "time": "2024-09-26T09:15:54.044450012Z", + "last_block_id": { + "hash": "MG9B1h4R9Xb4GRjvaNydD5NSqT37OOjGDcatCZpBlco=", + "part_set_header": { + "total": 1, + "hash": "3jQh26/9EuNAAEL6v2tRuGhKtkotoyTqGtduOOn++vk=" + } + }, + "last_commit_hash": "s1hUy5e7i+GrH5IGW1ck4YHK2CDTY4fjnSiNMInJBWc=", + "data_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + "validators_hash": "+003y0s55+pbijWbJyVVgfNnquSaGGnQmC1hGRUIIjk=", + "next_validators_hash": "+003y0s55+pbijWbJyVVgfNnquSaGGnQmC1hGRUIIjk=", + "consensus_hash": "BICRvH3cKD93v7+R1zxE2ljD34qcvIZ0Bdi389qtoi8=", + "app_hash": "bWRmShMthwEAB3lIVMgB673gH5vTdoqfn223M3Xrk6Q=", + "last_results_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + "evidence_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + "proposer_address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=" + }, + "commit": { + "height": "95", + "round": 0, + "block_id": { + "hash": "z3MJTCXppRYoIEPOrneYzw/U0CSiYF3zsUv67ynxM6Q=", + "part_set_header": { + "total": 1, + "hash": "BFSlw7bqXxBHl9O5O9sCUB01nbe0T0KGOmv7yyr8KYU=" + } + }, + "signatures": [ + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=", + "timestamp": "2024-09-26T09:15:55.054809888Z", + "signature": "oi+TQ0yoDEeXyBchFIql9AGxbufnx3FzDKsCp4B8tx42ropD8tyotKOjk0OMuZQC5aMMRndRfKiYYsWiOrcpAg==" + } + ] + } + }, + "validator_set": { + "validators": [ + { + "address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=", + "pub_key": { + "ed25519": "ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=" + }, + "voting_power": "511", + "proposer_priority": "0" + } + ], + "proposer": { + "address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=", + "pub_key": { + "ed25519": "ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=" + }, + "voting_power": "511", + "proposer_priority": "0" + }, + "total_voting_power": "0" + }, + "trusted_height": { + "revision_number": "0", + "revision_height": "20" + }, + "trusted_validators": { + "validators": [ + { + "address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=", + "pub_key": { + "ed25519": "ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=" + }, + "voting_power": "500", + "proposer_priority": "0" + } + ], + "proposer": { + "address": "3wkKSIC1TNV7KnnmTZ6Wm9dRSwk=", + "pub_key": { + "ed25519": "ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=" + }, + "voting_power": "500", + "proposer_priority": "0" + }, + "total_voting_power": "0" + } + } +} + +``` + + ### gRPC +A user can query the `provider` module using gRPC endpoints. + + ### REST \ No newline at end of file diff --git a/tests/e2e/test_runner.go b/tests/e2e/test_runner.go index e07360954e..18ebf340fc 100644 --- a/tests/e2e/test_runner.go +++ b/tests/e2e/test_runner.go @@ -94,7 +94,7 @@ func (tr *TestRunner) Run() error { } tr.result.Passed() - err = tr.teardownEnvironment() + // err = tr.teardownEnvironment() fmt.Printf("==========================================\n") return err } From 6609bbd80dd561e100c365975dcdc1103ad050b3 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Thu, 26 Sep 2024 17:19:06 +0200 Subject: [PATCH 21/32] WIP - add provider CLI, gRPC, REST docs --- docs/docs/build/modules/02-provider.md | 1253 +++++++++++++++++++++++- 1 file changed, 1248 insertions(+), 5 deletions(-) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 4b0d98365f..699a7e096b 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -950,6 +950,7 @@ simd query provider --help ``` ##### Consumer Genesis + The `consumer-genesis` command allows to query for consumer chain genesis state by consumer id ```bash @@ -1056,9 +1057,9 @@ provider: ``` ##### List Consumer Chains -The `list-consumer-chains` command allows to query consumer chains for provider chain. -An optional integer parameter can be passed for phase filtering of consumer chains, - (Registered=1|Initialized=2|Launched=3|Stopped=4|Deleted=5).` + +The `list-consumer-chains` command allows to query consumer chains supported by the provider chain. +An optional integer parameter can be passed for phase filtering of consumer chains, (Registered=1|Initialized=2|Launched=3|Stopped=4|Deleted=5).` ```bash interchain-security-pd query provider list-consumer-chains [phase] [limit] [flags] @@ -1096,6 +1097,7 @@ pagination: ``` ##### Validator Consumer Key Assignment + The `validator-consumer-key` command allows to query assigned validator consensus public key for a consumer chain ```bash @@ -1109,6 +1111,7 @@ interchain-security-pd query provider validator-consumer-key 3 cosmosvalcons1ezy ``` ##### Validator Provider Key + The `validator-provider-key` command allows to query validator consensus public key for the provider chain @@ -1130,6 +1133,7 @@ consumer_address: cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk ``` ##### Throttle State + The `throttle-state` command allows to query on-chain state relevant to slash packet throttling @@ -1152,6 +1156,7 @@ slash_meter_allowance: "1511" ``` ##### Registered Consumer Reward Denoms + The `registered-consumer-reward-denoms` command allows to query registered consumer reward denoms ```bash @@ -1173,6 +1178,7 @@ denoms: ``` ##### All Pairs Valconsensus Address + The `all-pairs-valconsensus-address` command allows to query all pairs of valconsensus address by consumer ID. ```bash @@ -1200,6 +1206,7 @@ pair_val_con_addr: ``` ##### Provider Parameters + The `params` command allows to query provider parameters information ```bash @@ -1284,6 +1291,7 @@ trusting_period_fraction: "0.66" ``` ##### Consumer Opted In Validators + The `consumer-opted-in-validators` command allows to query opted-in validators for a given consumer chain ```bash @@ -1306,6 +1314,7 @@ validators_provider_addresses: ``` ##### Consumer Validators + The `consumer-validators` command allows to query the last set consumer-validator set for a given consumer chain ```bash @@ -1365,6 +1374,7 @@ validators: ``` ##### Has to Validate + The `has-to-validate` command allows to query the consumer chains list a given validator has to validate ```bash @@ -1386,6 +1396,7 @@ consumer_ids: ``` ##### Validator Consumer Commission Rate + The `validator-consumer-commission-rate` command allows to query the consumer commission rate a validator charges on a consumer chain ```bash @@ -1405,6 +1416,7 @@ rate: "0.750000000000000000" ``` ##### Blocks Until Next Epoch + The `blocks-until-next-epoch` command allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains ```bash @@ -1424,6 +1436,7 @@ blocks_until_next_epoch: "286" ``` ##### Consumer Id From Client Id + The `consumer-id-from-client-id` command allows to query the consumer id of the chain associated with the provided client id ```bash @@ -1443,6 +1456,7 @@ consumer_id: "0" ``` ##### Consumer Chain + The `consumer-chain` command allows to query the consumer chain associated with the consumer id ```bash @@ -1859,6 +1873,7 @@ where `infraction_header.json` contains: } ``` + ##### Submit Consumer Double Voting The `submit-consumer-misbehaviour` command allows to submit an IBC misbehaviour for a consumer chain. @@ -2076,10 +2091,1238 @@ where `consumer-misbehaviour.json` contains: ``` - ### gRPC A user can query the `provider` module using gRPC endpoints. +#### Consumer Genesis + +The `QueryConsumerGenesis` endpoint queries a consumer chain genesis state by consumer id. + +```bash +interchain_security.ccv.provider.v1.Query/QueryConsumerGenesis +``` + +Example: + +```bash +grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 \ + interchain_security.ccv.provider.v1.Query/QueryConsumerGenesis +``` + +Example Output: + + +```json +{ + "genesisState": { + "params": { + "enabled": true, + "blocksPerDistributionTransmission": "1500", + "ccvTimeoutPeriod": "2419200s", + "transferTimeoutPeriod": "3600s", + "consumerRedistributionFraction": "0.75", + "historicalEntries": "1000", + "unbondingPeriod": "2419200s", + "softOptOutThreshold": "0", + "retryDelayPeriod": "3600s" + }, + "provider": { + "clientState": { + "chainId": "provider", + "trustLevel": { + "numerator": "1", + "denominator": "3" + }, + "trustingPeriod": "57024s", + "unbondingPeriod": "86400s", + "maxClockDrift": "10s", + "frozenHeight": {}, + "latestHeight": { + "revisionHeight": "10" + }, + "proofSpecs": [ + { + "leafSpec": { + "hash": "SHA256", + "prehashValue": "SHA256", + "length": "VAR_PROTO", + "prefix": "AA==" + }, + "innerSpec": { + "childOrder": [ + 0, + 1 + ], + "childSize": 33, + "minPrefixLength": 4, + "maxPrefixLength": 12, + "hash": "SHA256" + } + }, + { + "leafSpec": { + "hash": "SHA256", + "prehashValue": "SHA256", + "length": "VAR_PROTO", + "prefix": "AA==" + }, + "innerSpec": { + "childOrder": [ + 0, + 1 + ], + "childSize": 32, + "minPrefixLength": 1, + "maxPrefixLength": 1, + "hash": "SHA256" + } + } + ], + "upgradePath": [ + "upgrade", + "upgradedIBCState" + ] + }, + "consensusState": { + "timestamp": "2024-09-26T08:19:42.708111Z", + "root": { + "hash": "xbZV/9QyM3PYzY/HyJAsNogaaJVJtyAGROTcXuqxHas=" + }, + "nextValidatorsHash": "/zLB6RSu9omrO5L0tnDK03hCOUibwl/7eeVC3hTP7so=" + }, + "initialValSet": [ + { + "pubKey": { + "ed25519": "E9bJ6bi7X9MG9s3djQ4MmBxshis9W15y7UzXCxp2Yuk=" + }, + "power": "100" + }, + { + "pubKey": { + "ed25519": "+9BFckSNCI1o/+S85HLjG3pYp1FIzmfYWVKmUH2njxs=" + }, + "power": "100" + }, + { + "pubKey": { + "ed25519": "62d2CCgWXYZHmlsCon2lzVgnu9gfubep2XRPlZKuLAQ=" + }, + "power": "100" + } + ] + }, + "newChain": true + } +} +``` + +#### List Consumer Chains + +The `QueryConsumerChains` endpoint queries consumer chains supported by the provider chain. +An optional integer parameter can be passed for phase filtering of consumer chains, (Registered=1|Initialized=2|Launched=3|Stopped=4|Deleted=5).` + +```bash +interchain_security.ccv.provider.v1.Query/QueryConsumerChains +``` + +Example: + +```bash +grpcurl -plaintext -d '{"phase": "1"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChains``` +``` + +Example Output: + +```json +{ + "chains": [ + { + "chainId": "pion-1", + "minPowerInTopN": "-1", + "phase": "CONSUMER_PHASE_REGISTERED", + "metadata": { + "name": "pion-1", + "description":"description of your chain and all other relevant information", + "metadata": "some metadata about your chain" + }, + "consumerId": "2" + }, + { + "chainId": "dash-2", + "minPowerInTopN": "-1", + "phase": "CONSUMER_PHASE_REGISTERED", + "metadata": { + "name": "dash-2", + "description":"description of your chain and all other relevant information", + "metadata": "some metadata about your chain" + }, + "consumerId": "4" + }, + ], + "pagination": { + "total": "6" + } +} +``` + +#### Validator Consumer Key Assignment + +The `QueryValidatorConsumerAddr` endpoint queries the address assigned by a validator for a consumer chain. + + +```bash +interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr +``` + +Example: + +```bash +grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": ""}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr +``` + +Example Output: + +```json +{ + "consumerAddress": "cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk" +} +``` + +#### Validator Provider Key + +The `QueryValidatorProviderAddr` endpoint queries the provider chain address given a consumer chain validator address. + +```bash +interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr +``` + +Example: + +```bash +grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": ""}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr +``` + +Example Output: + +```json +{ + "providerAddress": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj" +} +``` + +#### Throttle State + +The `QueryThrottleState` queries the main on-chain state relevant to slash packet throttling. + +```bash +interchain_security.ccv.provider.v1.Query/QueryThrottleState +``` + +Example: + +```bash +grpcurl -plaintext localhost:9090 interchain_security.ccv.provider.v1.Query/QueryThrottleState +``` + +Example Output: + +```json +{ + "slashMeter": "15", + "slashMeterAllowance": "15", + "nextReplenishCandidate": "2024-09-26T14:27:38.066958Z" +} +``` + +##### Registered Consumer Reward Denoms + +The `QueryRegisteredConsumerRewardDenoms` command allows to query registered consumer reward denoms + +```bash +interchain_security.ccv.provider.v1.Query/QueryRegisteredConsumerRewardDenoms +``` + +Example: + +```bash +grpcurl -plaintext interchain_security.ccv.provider.v1.Query/QueryRegisteredConsumerRewardDenoms +``` + +Example Output: + +```json +{ + "denoms": [ + "ibc/0025F8A87464A471E66B234C4F93AEC5B4DA3D42D7986451A059273426290DD5", + "ibc/054892D6BB43AF8B93AAC28AA5FD7019D2C59A15DAFD6F45C1FA2BF9BDA22454", + "uatom" + ] +} +``` + +#### All Pairs Valconsensus Address + +The `QueryAllPairsValConsAddrByConsumer` endpoint queries the list of pair valconsensus address between provider and consumer chain. + +```bash +interchain_security.ccv.provider.v1.Query/QueryAllPairsValConsAddrByConsumer +``` + +Example: + +```bash +grpcurl -plaintext interchain_security.ccv.provider.v1.Query/QueryAllPairsValConsAddrByConsumer +``` + +Example Output: + +```bash +denoms: +- ibc/3C3D7B3BE4ECC85A0E5B52A3AEC3B7DFC2AA9CA47C37821E57020D6807043BE9 +- ibc/D549749C93524DA1831A4B3C850DFC1BA9060261BEDFB224B3B0B4744CD77A70 +``` + +#### Provider Parameters + +The `params` endpoint queries all current values of provider parameters. + +```bash +"/interchain_security/ccv/provider/params" +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/params +``` + +Example Output: + +```json +{ + "params": { + "templateClient": { + "trustLevel": { + "numerator": "1", + "denominator": "3" + }, + "trustingPeriod": "0s", + "unbondingPeriod": "0s", + "maxClockDrift": "10s", + "frozenHeight": {}, + "latestHeight": {}, + "proofSpecs": [ + { + "leafSpec": { + "hash": "SHA256", + "prehashValue": "SHA256", + "length": "VAR_PROTO", + "prefix": "AA==" + }, + "innerSpec": { + "childOrder": [ + 0, + 1 + ], + "childSize": 33, + "minPrefixLength": 4, + "maxPrefixLength": 12, + "hash": "SHA256" + } + }, + { + "leafSpec": { + "hash": "SHA256", + "prehashValue": "SHA256", + "length": "VAR_PROTO", + "prefix": "AA==" + }, + "innerSpec": { + "childOrder": [ + 0, + 1 + ], + "childSize": 32, + "minPrefixLength": 1, + "maxPrefixLength": 1, + "hash": "SHA256" + } + } + ], + "upgradePath": [ + "upgrade", + "upgradedIBCState" + ] + }, + "trustingPeriodFraction": "0.66", + "ccvTimeoutPeriod": "2419200s", + "slashMeterReplenishPeriod": "3600s", + "slashMeterReplenishFraction": "0.05", + "consumerRewardDenomRegistrationFee": { + "denom": "stake", + "amount": "10000000" + }, + "blocksPerEpoch": "5", + "numberOfEpochsToStartReceivingRewards": "24", + "maxProviderConsensusValidators": "180" + } +} +``` + +#### Consumer Opted In Validators + +The `opted_in_validators` endpoint queries opted-in validators for a given consumer chain + +```bash +/interchain_security/ccv/provider/opted_in_validators/{consumer_id} +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/opted_in_validators/0 +``` + +Example Output: + +```json +{ + "validatorsProviderAddresses": [ + "cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph", + "cosmosvalcons1jnq3j55qe4f946qj8499w0tntxwz90atx26p4q", + "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj" + ] +} +``` + +#### Consumer Validators + +The `consumer_validators` endpoint queries the latest set consumer-validator set for a given consumer ID +Note that this does not necessarily mean that the consumer chain is using this validator set at this exact moment because a VSCPacket could be delayed to be delivered on the consumer chain. + +```bash +/interchain_security/ccv/provider/consumer_validators/{consumer_id} +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/consumer_validators/0 +``` + +Example Output: + +```json +{ + "validators": [ + { + "providerAddress": "cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph", + "consumerKey": { + "ed25519": "62d2CCgWXYZHmlsCon2lzVgnu9gfubep2XRPlZKuLAQ=" + }, + "rate": "0", + "consumerPower": "101", + "consumerCommissionRate": "100000000000000000", + "providerCommissionRate": "100000000000000000", + "description": { + "moniker": "bob" + }, + "providerOperatorAddress": "cosmosvaloper1a7u5k6f54ua3tptl9yn6u82yrvayet6sxn9ywn", + "status": "BOND_STATUS_BONDED", + "providerTokens": "101000000", + "providerPower": "101", + "validatesCurrentEpoch": true + }, + { + "providerAddress": "cosmosvalcons1jnq3j55qe4f946qj8499w0tntxwz90atx26p4q", + "consumerKey": { + "ed25519": "+9BFckSNCI1o/+S85HLjG3pYp1FIzmfYWVKmUH2njxs=" + }, + "rate": "0", + "consumerPower": "100", + "consumerCommissionRate": "100000000000000000", + "providerCommissionRate": "100000000000000000", + "description": { + "moniker": "coordinator" + }, + "providerOperatorAddress": "cosmosvaloper1jk2pp655zxy2gazhxj50s8jk3750y8np6wz4lm", + "status": "BOND_STATUS_BONDED", + "providerTokens": "100000000", + "providerPower": "100", + "validatesCurrentEpoch": true + }, + { + "providerAddress": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj", + "consumerKey": { + "ed25519": "Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is=" + }, + "rate": "0", + "consumerPower": "100", + "consumerCommissionRate": "100000000000000000", + "providerCommissionRate": "100000000000000000", + "description": { + "moniker": "alice" + }, + "providerOperatorAddress": "cosmosvaloper19vfen9jn3uk3e6rrkt3pxansunujnlm40wpdvg", + "status": "BOND_STATUS_BONDED", + "providerTokens": "100000000", + "providerPower": "100", + "validatesCurrentEpoch": true + } + ] +} +``` -### REST \ No newline at end of file +#### Has to Validate + +The `consumer_chains_per_validator` endpoint queries a list of consumer chains that a given validator must validate. + +```bash +/interchain_security/ccv/provider/consumer_chains_per_validator/{provider_address} +``` + +Example: + +```bash +curl curl http://localhost:1317/interchain_security/ccv/provider/consumer_chains_per_validator/cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph +``` + +Example Output: + +```json +{ + "consumerIds": [ + "0", + "2" + ] +} +``` + +#### Validator Consumer Commission Rate + +The `consumer_commission_rate` endpoint queries the consumer commission rate a validator charges on a consumer chain. + +```bash +/interchain_security/ccv/provider/consumer_commission_rate/{consumer_id}/{provider_address} +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/consumer_commission_rate/0/cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph +``` + +Example Output: + +```json +{ + "rate": "0.750000000000000000" +} +``` + +#### Blocks Until Next Epoch + +The `blocks_until_next_epoch` command allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains + +```bash +/interchain_security/ccv/provider/blocks_until_next_epoch +``` + +Example: + +```bash +interchain-security-pd query provider blocks-until-next-epoch +``` + +Example Output: + +```json +{ + "blocks_until_next_epoch":"1" +} +``` + +#### Consumer Id From Client Id + +The `consumer-id-from-client-id` command allows to query the consumer id of the chain associated with the provided client id + +```bash +interchain-security-pd query provider consumer-id-from-client-id [client-id] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider consumer-id-from-client-id 07-tendermint-0 +``` + +Example Output: + +```bash +consumer_id: "0" +``` + +#### Consumer Chain + +The `consumer-chain` command allows to query the consumer chain associated with the consumer id + +```bash +interchain-security-pd query provider consumer-chain [consumer-id] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider consumer-chain 0 +``` + +```bash +chain_id: pion-1 +consumer_id: "0" +init_params: + binary_hash: YmluX2hhc2g= + blocks_per_distribution_transmission: "1000" + ccv_timeout_period: 2419200s + consumer_redistribution_fraction: "0.75" + distribution_transmission_channel: "" + genesis_hash: Z2VuX2hhc2g= + historical_entries: "10000" + initial_height: + revision_height: "1" + revision_number: "0" + spawn_time: "2024-09-26T06:55:14.616054Z" + transfer_timeout_period: 3600s + unbonding_period: 1209600s +metadata: + description: description of your chain and all other relevant information + metadata: some metadata about your chain + name: pion-1 +owner_address: cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn +phase: CONSUMER_PHASE_LAUNCHED +power_shaping_params: + allow_inactive_vals: false + allowlist: [] + denylist: [] + min_stake: "0" + top_N: 100 + validator_set_cap: 0 + validators_power_cap: 0 +``` + +### REST + +A user can query the `provider` module using REST endpoints. + + +#### Consumer Genesis + +The `consumer_genesis` endpoint queries a consumer chain genesis state by consumer id. + +```bash +interchain_security.ccv.provider.v1.Query/QueryConsumerGenesis +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/consumer_genesis/0 +``` + +Example Output: + + +```json +{ + "genesisState": { + "params": { + "enabled": true, + "blocksPerDistributionTransmission": "1500", + "ccvTimeoutPeriod": "2419200s", + "transferTimeoutPeriod": "3600s", + "consumerRedistributionFraction": "0.75", + "historicalEntries": "1000", + "unbondingPeriod": "2419200s", + "softOptOutThreshold": "0", + "retryDelayPeriod": "3600s" + }, + "provider": { + "clientState": { + "chainId": "provider", + "trustLevel": { + "numerator": "1", + "denominator": "3" + }, + "trustingPeriod": "57024s", + "unbondingPeriod": "86400s", + "maxClockDrift": "10s", + "frozenHeight": {}, + "latestHeight": { + "revisionHeight": "10" + }, + "proofSpecs": [ + { + "leafSpec": { + "hash": "SHA256", + "prehashValue": "SHA256", + "length": "VAR_PROTO", + "prefix": "AA==" + }, + "innerSpec": { + "childOrder": [ + 0, + 1 + ], + "childSize": 33, + "minPrefixLength": 4, + "maxPrefixLength": 12, + "hash": "SHA256" + } + }, + { + "leafSpec": { + "hash": "SHA256", + "prehashValue": "SHA256", + "length": "VAR_PROTO", + "prefix": "AA==" + }, + "innerSpec": { + "childOrder": [ + 0, + 1 + ], + "childSize": 32, + "minPrefixLength": 1, + "maxPrefixLength": 1, + "hash": "SHA256" + } + } + ], + "upgradePath": [ + "upgrade", + "upgradedIBCState" + ] + }, + "consensusState": { + "timestamp": "2024-09-26T08:19:42.708111Z", + "root": { + "hash": "xbZV/9QyM3PYzY/HyJAsNogaaJVJtyAGROTcXuqxHas=" + }, + "nextValidatorsHash": "/zLB6RSu9omrO5L0tnDK03hCOUibwl/7eeVC3hTP7so=" + }, + "initialValSet": [ + { + "pubKey": { + "ed25519": "E9bJ6bi7X9MG9s3djQ4MmBxshis9W15y7UzXCxp2Yuk=" + }, + "power": "100" + }, + { + "pubKey": { + "ed25519": "+9BFckSNCI1o/+S85HLjG3pYp1FIzmfYWVKmUH2njxs=" + }, + "power": "100" + }, + { + "pubKey": { + "ed25519": "62d2CCgWXYZHmlsCon2lzVgnu9gfubep2XRPlZKuLAQ=" + }, + "power": "100" + } + ] + }, + "newChain": true + } +} +``` + +#### List Consumer Chains + +The `QueryConsumerChains` endpoint queries consumer chains supported by the provider chain. +An optional integer parameter can be passed for phase filtering of consumer chains, (Registered=1|Initialized=2|Launched=3|Stopped=4|Deleted=5).` + +```bash +interchain_security.ccv.provider.v1.Query/QueryConsumerChains/{phase} +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/consumer_chains/3 +``` + +Example Output: + +```json +{ + "chains": [ + { + "chainId": "pion-1", + "minPowerInTopN": "-1", + "phase": "CONSUMER_PHASE_REGISTERED", + "metadata": { + "name": "pion-1", + "description":"description of your chain and all other relevant information", + "metadata": "some metadata about your chain" + }, + "consumerId": "2" + }, + { + "chainId": "dash-2", + "minPowerInTopN": "-1", + "phase": "CONSUMER_PHASE_REGISTERED", + "metadata": { + "name": "dash-2", + "description":"description of your chain and all other relevant information", + "metadata": "some metadata about your chain" + }, + "consumerId": "4" + }, + ], + "pagination": { + "total": "6" + } +} +``` + +#### Validator Consumer Key Assignment + +The `validator_consumer_addr` endpoint queries the address assigned by a validator for a consumer chain. + + +```bash +/interchain_security/ccv/provider/validator_consumer_addr/{consumer_id}/{provider_address} +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/validator_consumer_addr/0/cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj +``` + +Example Output: + +```json +{ + "consumerAddress": "cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk" +} +``` + +#### Validator Provider Key + +The `validator_provider_addr` endpoint queries the provider chain address given a consumer chain validator address. + +```bash +/interchain_security/ccv/provider/validator_provider_addr/{consumer_id}/{consumer_address} +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/validator_provider_addr/0/cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk +``` + +Example Output: + +```json +{ + "providerAddress": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj" +} +``` + +#### Throttle State + +The `throttle_state` queries the main on-chain state relevant to slash packet throttling. + +```bash +"/interchain_security/ccv/provider/throttle_state" +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/throttle_state +``` + +Example Output: + +```json +{ + "slashMeter": "15", + "slashMeterAllowance": "15", + "nextReplenishCandidate": "2024-09-26T14:27:38.066958Z" +} +``` + +#### Registered Consumer Reward Denoms + +The `registered_consumer_reward_denoms` command allows to query registered consumer reward denoms + +```bash +interchain_security/ccv/provider/registered_consumer_reward_denoms +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/registered_consumer_reward_denoms +``` + +Example Output: + +```json +{ + "denoms": [ + "ibc/0025F8A87464A471E66B234C4F93AEC5B4DA3D42D7986451A059273426290DD5", + "ibc/054892D6BB43AF8B93AAC28AA5FD7019D2C59A15DAFD6F45C1FA2BF9BDA22454", + "uatom" + ] +} +``` + +#### All Pairs Valconsensus Address + +The `address_pairs` endpoint queries the list of pair valconsensus address between provider and consumer chain. + +```bash +interchain_security/ccv/provider/address_pairs/{consumer_id} +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/provider/address_pairs/0 +``` + +Example Output: + +```bash +denoms: +- ibc/3C3D7B3BE4ECC85A0E5B52A3AEC3B7DFC2AA9CA47C37821E57020D6807043BE9 +- ibc/D549749C93524DA1831A4B3C850DFC1BA9060261BEDFB224B3B0B4744CD77A70 +``` + +#### Provider Parameters + +The `QueryParams` endpoint queries all current values of provider parameters + +```bash +interchain_security.ccv.provider.v1.Query/QueryParams +``` + +Example: + +```bash +grpcurl -plaintext interchain_security.ccv.provider.v1.Query/QueryParams +``` + +Example Output: + +```json +{ + "params": { + "templateClient": { + "trustLevel": { + "numerator": "1", + "denominator": "3" + }, + "trustingPeriod": "0s", + "unbondingPeriod": "0s", + "maxClockDrift": "10s", + "frozenHeight": {}, + "latestHeight": {}, + "proofSpecs": [ + { + "leafSpec": { + "hash": "SHA256", + "prehashValue": "SHA256", + "length": "VAR_PROTO", + "prefix": "AA==" + }, + "innerSpec": { + "childOrder": [ + 0, + 1 + ], + "childSize": 33, + "minPrefixLength": 4, + "maxPrefixLength": 12, + "hash": "SHA256" + } + }, + { + "leafSpec": { + "hash": "SHA256", + "prehashValue": "SHA256", + "length": "VAR_PROTO", + "prefix": "AA==" + }, + "innerSpec": { + "childOrder": [ + 0, + 1 + ], + "childSize": 32, + "minPrefixLength": 1, + "maxPrefixLength": 1, + "hash": "SHA256" + } + } + ], + "upgradePath": [ + "upgrade", + "upgradedIBCState" + ] + }, + "trustingPeriodFraction": "0.66", + "ccvTimeoutPeriod": "2419200s", + "slashMeterReplenishPeriod": "3600s", + "slashMeterReplenishFraction": "0.05", + "consumerRewardDenomRegistrationFee": { + "denom": "stake", + "amount": "10000000" + }, + "blocksPerEpoch": "5", + "numberOfEpochsToStartReceivingRewards": "24", + "maxProviderConsensusValidators": "180" + } +} +``` + +#### Consumer Opted In Validators + +The `QueryConsumerChainOptedInValidators` endpoint queries opted-in validators for a given consumer chain + +```bash +interchain_security.ccv.provider.v1.Query/QueryConsumerChainOptedInValidators +``` + +Example: + +```bash +grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChainOptedInValidators +``` + +Example Output: + +```json +{ + "validatorsProviderAddresses": [ + "cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph", + "cosmosvalcons1jnq3j55qe4f946qj8499w0tntxwz90atx26p4q", + "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj" + ] +} +``` + +#### Consumer Validators + +The `QueryConsumerValidators` endpoint queries the latest set consumer-validator set for a given consumer ID +Note that this does not necessarily mean that the consumer chain is using this validator set at this exact moment because a VSCPacket could be delayed to be delivered on the consumer chain. + +```bash +interchain_security.ccv.provider.v1.Query/QueryConsumerValidators +``` + +Example: + +```bash +grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerValidators +``` + +Example Output: + +```json +{ + "validators": [ + { + "providerAddress": "cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph", + "consumerKey": { + "ed25519": "62d2CCgWXYZHmlsCon2lzVgnu9gfubep2XRPlZKuLAQ=" + }, + "rate": "0", + "consumerPower": "101", + "consumerCommissionRate": "100000000000000000", + "providerCommissionRate": "100000000000000000", + "description": { + "moniker": "bob" + }, + "providerOperatorAddress": "cosmosvaloper1a7u5k6f54ua3tptl9yn6u82yrvayet6sxn9ywn", + "status": "BOND_STATUS_BONDED", + "providerTokens": "101000000", + "providerPower": "101", + "validatesCurrentEpoch": true + }, + { + "providerAddress": "cosmosvalcons1jnq3j55qe4f946qj8499w0tntxwz90atx26p4q", + "consumerKey": { + "ed25519": "+9BFckSNCI1o/+S85HLjG3pYp1FIzmfYWVKmUH2njxs=" + }, + "rate": "0", + "consumerPower": "100", + "consumerCommissionRate": "100000000000000000", + "providerCommissionRate": "100000000000000000", + "description": { + "moniker": "coordinator" + }, + "providerOperatorAddress": "cosmosvaloper1jk2pp655zxy2gazhxj50s8jk3750y8np6wz4lm", + "status": "BOND_STATUS_BONDED", + "providerTokens": "100000000", + "providerPower": "100", + "validatesCurrentEpoch": true + }, + { + "providerAddress": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj", + "consumerKey": { + "ed25519": "Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is=" + }, + "rate": "0", + "consumerPower": "100", + "consumerCommissionRate": "100000000000000000", + "providerCommissionRate": "100000000000000000", + "description": { + "moniker": "alice" + }, + "providerOperatorAddress": "cosmosvaloper19vfen9jn3uk3e6rrkt3pxansunujnlm40wpdvg", + "status": "BOND_STATUS_BONDED", + "providerTokens": "100000000", + "providerPower": "100", + "validatesCurrentEpoch": true + } + ] +} +``` + +#### Has to Validate + +The `QueryConsumerChainsValidatorHasToValidate` endpoint queries a list of consumer chains that a given validator must validate. + +```bash +interchain_security.ccv.provider.v1.Query/QueryConsumerChainsValidatorHasToValidate +``` + +Example: + +```bash +grpcurl -plaintext -d '{"provider_address": "cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChainsValidatorHasToValidate +``` + +Example Output: + +```json +{ + "consumerIds": [ + "0", + "2" + ] +} +``` + +#### Validator Consumer Commission Rate + +The `QueryValidatorConsumerCommissionRate` endpoint queries the consumer commission rate a validator charges on a consumer chain. + +```bash +interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerCommissionRate +``` + +Example: + +```bash +grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:29190 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerCommissionRate +``` + +Example Output: + +```json +{ + "rate": "750000000000000000" +} +``` + +#### Blocks Until Next Epoch + +The `blocks-until-next-epoch` command allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains + +```bash +interchain-security-pd query provider blocks-until-next-epoch [flags] +``` + +Example: + +```bash +interchain-security-pd query provider blocks-until-next-epoch +``` + +Example Output: + +```bash +blocks_until_next_epoch: "286" +``` + +#### Consumer Id From Client Id + +The `consumer-id-from-client-id` command allows to query the consumer id of the chain associated with the provided client id + +```bash +interchain-security-pd query provider consumer-id-from-client-id [client-id] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider consumer-id-from-client-id 07-tendermint-0 +``` + +Example Output: + +```bash +consumer_id: "0" +``` + +#### Consumer Chain + +The `consumer-chain` command allows to query the consumer chain associated with the consumer id + +```bash +interchain-security-pd query provider consumer-chain [consumer-id] [flags] +``` + +Example: + +```bash +interchain-security-pd query provider consumer-chain 0 +``` + +```bash +chain_id: pion-1 +consumer_id: "0" +init_params: + binary_hash: YmluX2hhc2g= + blocks_per_distribution_transmission: "1000" + ccv_timeout_period: 2419200s + consumer_redistribution_fraction: "0.75" + distribution_transmission_channel: "" + genesis_hash: Z2VuX2hhc2g= + historical_entries: "10000" + initial_height: + revision_height: "1" + revision_number: "0" + spawn_time: "2024-09-26T06:55:14.616054Z" + transfer_timeout_period: 3600s + unbonding_period: 1209600s +metadata: + description: description of your chain and all other relevant information + metadata: some metadata about your chain + name: pion-1 +owner_address: cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn +phase: CONSUMER_PHASE_LAUNCHED +power_shaping_params: + allow_inactive_vals: false + allowlist: [] + denylist: [] + min_stake: "0" + top_N: 100 + validator_set_cap: 0 + validators_power_cap: 0 +``` \ No newline at end of file From 6763c0af7166ae14cd219bb1bc1484acba1bca4b Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 27 Sep 2024 15:21:50 +0200 Subject: [PATCH 22/32] fix typos --- docs/docs/build/modules/02-provider.md | 369 +++++++++++++------------ 1 file changed, 198 insertions(+), 171 deletions(-) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 699a7e096b..0e625be1f7 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -951,7 +951,7 @@ simd query provider --help ##### Consumer Genesis -The `consumer-genesis` command allows to query for consumer chain genesis state by consumer id +The `consumer-genesis` command allows to query for consumer chain genesis state by consumer id. ```bash interchain-security-pd query provider consumer-genesis [consumer-id] [flags] @@ -1073,7 +1073,7 @@ interchain-security-pd query provider list-consumer-chains 3 Example Output: -``` +```bash chains: - allow_inactive_vals: true allowlist: [] @@ -1098,21 +1098,28 @@ pagination: ##### Validator Consumer Key Assignment -The `validator-consumer-key` command allows to query assigned validator consensus public key for a consumer chain +The `validator-consumer-key` command allows to query assigned validator consensus public key for a consumer chain. ```bash -interchain-security-pd query provider validator-consumer-key [consumerId] [provider-validator-address] [flags] +interchain-security-pd query provider validator-consumer-key [consumer-id] [provider-validator-address] [flags] ``` Example: ```bash -interchain-security-pd query provider validator-consumer-key 3 cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6 +interchain-security-pd query provider validator-consumer-key 0 cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6 ``` +Example Output: + + ```bash +consumer_address: cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk + ``` + + ##### Validator Provider Key -The `validator-provider-key` command allows to query validator consensus public key for the provider chain +The `validator-provider-key` command allows to query validator consensus public key for the provider chain. ```bash @@ -1122,19 +1129,19 @@ interchain-security-pd query provider validator-provider-key [consumer-id] [cons Example: ```bash -interchain-security-pd query provider validator-provider-key 0 cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6 +interchain-security-pd query provider validator-provider-key 0 cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk ``` Example Output: ```bash -consumer_address: cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk +provider_address: cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj ``` ##### Throttle State -The `throttle-state` command allows to query on-chain state relevant to slash packet throttling +The `throttle-state` command allows to command on-chain state relevant to slash packet throttling. ```bash @@ -1157,7 +1164,7 @@ slash_meter_allowance: "1511" ##### Registered Consumer Reward Denoms -The `registered-consumer-reward-denoms` command allows to query registered consumer reward denoms +The `registered-consumer-reward-denoms` command allows to query registered consumer reward denoms. ```bash interchain-security-pd query provider registered-consumer-reward-denoms [flags] @@ -1179,7 +1186,7 @@ denoms: ##### All Pairs Valconsensus Address -The `all-pairs-valconsensus-address` command allows to query all pairs of valconsensus address by consumer ID. +The `all-pairs-valconsensus-address` command allows to query all pairs of valconsensus address by consumer id. ```bash interchain-security-pd query provider all-pairs-valconsensus-address [consumer-id] [flags] @@ -1187,17 +1194,13 @@ interchain-security-pd query provider all-pairs-valconsensus-address [consumer-i Example: -```bash -interchain-security-pd query provider all-pairs-valconsensus-address [consumer-id] -``` - ```bash interchain-security-pd query provider all-pairs-valconsensus-address 0 ``` Example Output: -``` +```bash pair_val_con_addr: - consumer_address: cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk consumer_key: @@ -1207,7 +1210,7 @@ pair_val_con_addr: ##### Provider Parameters -The `params` command allows to query provider parameters information +The `params` command allows to query provider parameters information. ```bash interchain-security-pd query provider params [flags] @@ -1292,7 +1295,7 @@ trusting_period_fraction: "0.66" ##### Consumer Opted In Validators -The `consumer-opted-in-validators` command allows to query opted-in validators for a given consumer chain +The `consumer-opted-in-validators` command allows to query opted-in validators for a given consumer chain. ```bash interchain-security-pd query provider consumer-opted-in-validators [consumer-id] [flags] @@ -1315,7 +1318,7 @@ validators_provider_addresses: ##### Consumer Validators -The `consumer-validators` command allows to query the last set consumer-validator set for a given consumer chain +The `consumer-validators` command allows to query the last set consumer-validator set for a given consumer chain. ```bash interchain-security-pd query provider consumer-validators [consumer-id] [flags] @@ -1329,7 +1332,7 @@ interchain-security-pd query provider consumer-validators 0 Example Output: -``` +```bash validators: - consumer_commission_rate: "0.100000000000000000" consumer_key: @@ -1375,7 +1378,7 @@ validators: ##### Has to Validate -The `has-to-validate` command allows to query the consumer chains list a given validator has to validate +The `has-to-validate` command allows to query the consumer chains list a given validator has to validate. ```bash interchain-security-pd query provider has-to-validate [provider-validator-address] [flags] @@ -1397,7 +1400,7 @@ consumer_ids: ##### Validator Consumer Commission Rate -The `validator-consumer-commission-rate` command allows to query the consumer commission rate a validator charges on a consumer chain +The `validator-consumer-commission-rate` command allows to query the consumer commission rate a validator charges on a consumer chain. ```bash interchain-security-pd query provider validator-consumer-commission-rate [consumer-id] [provider-validator-address] [flags] @@ -1406,7 +1409,7 @@ interchain-security-pd query provider validator-consumer-commission-rate [consum Example: ```bash -interchain-security-pd query provider validator-consumer-commission-rate 3 cosmoscons1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj +interchain-security-pd query provider validator-consumer-commission-rate 0 cosmoscons1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj ``` Example Output: @@ -1437,7 +1440,7 @@ blocks_until_next_epoch: "286" ##### Consumer Id From Client Id -The `consumer-id-from-client-id` command allows to query the consumer id of the chain associated with the provided client id +The `consumer-id-from-client-id` command allows to query the consumer id of the chain associated with the provided client id. ```bash interchain-security-pd query provider consumer-id-from-client-id [client-id] [flags] @@ -1457,7 +1460,7 @@ consumer_id: "0" ##### Consumer Chain -The `consumer-chain` command allows to query the consumer chain associated with the consumer id +The `consumer-chain` command allows to query the consumer chain associated with the consumer id. ```bash interchain-security-pd query provider consumer-chain [consumer-id] [flags] @@ -1521,7 +1524,7 @@ interchain-security-pd tx provider assign-consensus-key [consumer-id] [consumer- Example ```bash -interchain-security-pd tx provider assign-consensus-key 3 \ +interchain-security-pd tx provider assign-consensus-key 0 \ '{"@type":"/cosmos.crypto.ed25519.PubKey","key":"Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is="}' \ --chain-id provider \ --from mykey \ @@ -1552,6 +1555,7 @@ interchain-security-pd tx provider create-consumer path/to/create-consumer-msg.j --gas-prices="0.025stake" \ --from=mykey ``` + where `create-consumer-msg.json` contains: ```json @@ -1635,7 +1639,7 @@ interchain-security-pd tx provider remove-consumer [consumer-id] [flags] Example: ```bash -interchain-security-pd tx provider remove-consumer 3 +interchain-security-pd tx provider remove-consumer 0 ``` ##### Opt In @@ -1649,7 +1653,7 @@ interchain-security-pd tx provider opt-in [consumer-id] [consumer-pubkey] [flags Example: ```bash -interchain-security-pd tx provider opt-in 3 \ +interchain-security-pd tx provider opt-in 0 \ '{"@type":"/cosmos.crypto.ed25519.PubKey","key":"Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is="}' \ --chain-id provider \ --from mykey \ @@ -1670,7 +1674,7 @@ interchain-security-pd tx provider opt-out [consumer-id] [flags] Example: ```bash -interchain-security-pd tx provider opt-out 3 \ +interchain-security-pd tx provider opt-out 0 \ --chain-id provider \ --from mykey \ --gas="auto" \ @@ -1690,7 +1694,7 @@ interchain-security-pd tx provider set-consumer-commission-rate [consumer-id] [c Example: ```bash -interchain-security-pd tx provider set-consumer-commission-rate 3 0.5 \ +interchain-security-pd tx provider set-consumer-commission-rate 0 0.5 \ --chain-id provider \ --from mykey \ --gas="auto" \ @@ -1710,7 +1714,7 @@ interchain-security-pd tx provider submit-consumer-double-voting [consumer-id] [ Example: ```bash -interchain-security-pd tx provider submit-consumer-double-voting 3 path/to/evidence.json path/to/infraction_header.json \ +interchain-security-pd tx provider submit-consumer-double-voting 0 path/to/evidence.json path/to/infraction_header.json \ --chain-id provider \ --from mykey \ --gas="auto" \ @@ -1776,7 +1780,7 @@ where `infraction_header.json` contains: "block": "11", "app": "0" }, - "chain_id": "consu", + "chain_id": "pion-1", "height": "59", "time": "2024-09-26T09:34:45.945436342Z", "last_block_id": { @@ -1885,7 +1889,7 @@ interchain-security-pd tx provider submit-consumer-misbehaviour [consumer-id] [m Example: ```bash -interchain-security-pd tx provider submit-consumer-misbehaviour 3 path/to/consumer-misbehaviour.json +interchain-security-pd tx provider submit-consumer-misbehaviour 0 path/to/consumer-misbehaviour.json --chain-id provider \ --from mykey \ --gas="auto" \ @@ -1906,7 +1910,7 @@ where `consumer-misbehaviour.json` contains: "block": "11", "app": "0" }, - "chain_id": "consu", + "chain_id": "pion-1", "height": "95", "time": "2024-09-26T09:15:52.845591095Z", "last_block_id": { @@ -2229,7 +2233,7 @@ interchain_security.ccv.provider.v1.Query/QueryConsumerChains Example: ```bash -grpcurl -plaintext -d '{"phase": "1"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChains``` +grpcurl -plaintext -d '{"phase": "1"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChains ``` Example Output: @@ -2278,7 +2282,7 @@ interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr Example: ```bash -grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": ""}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr +grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr ``` Example Output: @@ -2300,15 +2304,15 @@ interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr Example: ```bash -grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": ""}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr +grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr ``` Example Output: ```json { - "providerAddress": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj" -} + "consumerAddress": "cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk" + } ``` #### Throttle State @@ -2346,7 +2350,7 @@ interchain_security.ccv.provider.v1.Query/QueryRegisteredConsumerRewardDenoms Example: ```bash -grpcurl -plaintext interchain_security.ccv.provider.v1.Query/QueryRegisteredConsumerRewardDenoms +grpcurl -plaintext localhost:9090 interchain_security.ccv.provider.v1.Query/QueryRegisteredConsumerRewardDenoms ``` Example Output: @@ -2372,29 +2376,37 @@ interchain_security.ccv.provider.v1.Query/QueryAllPairsValConsAddrByConsumer Example: ```bash -grpcurl -plaintext interchain_security.ccv.provider.v1.Query/QueryAllPairsValConsAddrByConsumer +grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryAllPairsValConsAddrByConsumer ``` Example Output: -```bash -denoms: -- ibc/3C3D7B3BE4ECC85A0E5B52A3AEC3B7DFC2AA9CA47C37821E57020D6807043BE9 -- ibc/D549749C93524DA1831A4B3C850DFC1BA9060261BEDFB224B3B0B4744CD77A70 +```json +{ + "pairValConAddr": [ + { + "providerAddress": "cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6", + "consumerAddress": "cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk", + "consumerKey": { + "ed25519": "Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is=" + } + } + ] +} ``` #### Provider Parameters -The `params` endpoint queries all current values of provider parameters. +The `QueryParams` endpoint queries all current values of provider parameters. ```bash -"/interchain_security/ccv/provider/params" +interchain_security.ccv.provider.v1.Query/QueryParams ``` Example: ```bash -curl http://localhost:1317/interchain_security/ccv/provider/params +grpcurl -plaintext localhost:9090 interchain_security.ccv.provider.v1.Query/QueryParams ``` Example Output: @@ -2472,16 +2484,16 @@ Example Output: #### Consumer Opted In Validators -The `opted_in_validators` endpoint queries opted-in validators for a given consumer chain +The `QueryConsumerChainOptedInValidators` endpoint queries opted-in validators for a given consumer chain. ```bash -/interchain_security/ccv/provider/opted_in_validators/{consumer_id} +interchain_security.ccv.provider.v1.Query/QueryConsumerChainOptedInValidators ``` Example: ```bash -curl http://localhost:1317/interchain_security/ccv/provider/opted_in_validators/0 + grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChainOptedInValidators ``` Example Output: @@ -2502,13 +2514,13 @@ The `consumer_validators` endpoint queries the latest set consumer-validator set Note that this does not necessarily mean that the consumer chain is using this validator set at this exact moment because a VSCPacket could be delayed to be delivered on the consumer chain. ```bash -/interchain_security/ccv/provider/consumer_validators/{consumer_id} +interchain_security.ccv.provider.v1.Query/QueryConsumerValidators ``` Example: ```bash -curl http://localhost:1317/interchain_security/ccv/provider/consumer_validators/0 +grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerValidators ``` Example Output: @@ -2576,16 +2588,16 @@ Example Output: #### Has to Validate -The `consumer_chains_per_validator` endpoint queries a list of consumer chains that a given validator must validate. +The `QueryConsumerChainsValidatorHasToValidate` endpoint queries a list of consumer chains that a given validator must validate. ```bash -/interchain_security/ccv/provider/consumer_chains_per_validator/{provider_address} +interchain_security.ccv.provider.v1.Query/QueryConsumerChainsValidatorHasToValidate ``` Example: ```bash -curl curl http://localhost:1317/interchain_security/ccv/provider/consumer_chains_per_validator/cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph +grpcurl -plaintext -d '{"provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChainsValidatorHasToValidate ``` Example Output: @@ -2601,113 +2613,116 @@ Example Output: #### Validator Consumer Commission Rate -The `consumer_commission_rate` endpoint queries the consumer commission rate a validator charges on a consumer chain. +The `QueryValidatorConsumerCommissionRate` endpoint queries the consumer commission rate a validator charges on a consumer chain. ```bash -/interchain_security/ccv/provider/consumer_commission_rate/{consumer_id}/{provider_address} +interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerCommissionRate ``` Example: ```bash -curl http://localhost:1317/interchain_security/ccv/provider/consumer_commission_rate/0/cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph +grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerCommissionRate ``` Example Output: ```json { - "rate": "0.750000000000000000" + "rate": "750000000000000000" } ``` #### Blocks Until Next Epoch -The `blocks_until_next_epoch` command allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains +The `QueryBlocksUntilNextEpoch` endpoint allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains ```bash -/interchain_security/ccv/provider/blocks_until_next_epoch +interchain_security.ccv.provider.v1.Query/QueryBlocksUntilNextEpoch ``` Example: ```bash -interchain-security-pd query provider blocks-until-next-epoch +grpcurl -plaintext localhost:9090 interchain_security.ccv.provider.v1.Query/QueryBlocksUntilNextEpoch ``` Example Output: ```json { - "blocks_until_next_epoch":"1" + "blocks_until_next_epoch":"4" } ``` #### Consumer Id From Client Id -The `consumer-id-from-client-id` command allows to query the consumer id of the chain associated with the provided client id +The `QueryConsumerIdFromClientId` endpoint allows to query the consumer id of the chain associated with the provided client id ```bash -interchain-security-pd query provider consumer-id-from-client-id [client-id] [flags] +interchain_security.ccv.provider.v1.Query/QueryConsumerIdFromClientId ``` Example: ```bash -interchain-security-pd query provider consumer-id-from-client-id 07-tendermint-0 +grpcurl -plaintext -d '{"client_id":"07-tendermint-0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerIdFromClientId ``` Example Output: ```bash -consumer_id: "0" +{ + "consumerId": "0" +} ``` #### Consumer Chain -The `consumer-chain` command allows to query the consumer chain associated with the consumer id +The `QueryConsumerChain` command allows to query the consumer chain associated with the consumer id. ```bash -interchain-security-pd query provider consumer-chain [consumer-id] [flags] +interchain_security.ccv.provider.v1.Query/QueryConsumerChain ``` Example: ```bash -interchain-security-pd query provider consumer-chain 0 +grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChain ``` -```bash -chain_id: pion-1 -consumer_id: "0" -init_params: - binary_hash: YmluX2hhc2g= - blocks_per_distribution_transmission: "1000" - ccv_timeout_period: 2419200s - consumer_redistribution_fraction: "0.75" - distribution_transmission_channel: "" - genesis_hash: Z2VuX2hhc2g= - historical_entries: "10000" - initial_height: - revision_height: "1" - revision_number: "0" - spawn_time: "2024-09-26T06:55:14.616054Z" - transfer_timeout_period: 3600s - unbonding_period: 1209600s -metadata: - description: description of your chain and all other relevant information - metadata: some metadata about your chain - name: pion-1 -owner_address: cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn -phase: CONSUMER_PHASE_LAUNCHED -power_shaping_params: - allow_inactive_vals: false - allowlist: [] - denylist: [] - min_stake: "0" - top_N: 100 - validator_set_cap: 0 - validators_power_cap: 0 +```json +{ + "consumerId": "0", + "chainId": "pion-1", + "ownerAddress": "cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn", + "phase": "CONSUMER_PHASE_LAUNCHED", + "metadata": { + "name": "description of your chain and all other relevant information", + "description": "some metadata about your chain", + "metadata": "pion-1" + }, + "initParams": { + "initialHeight": { + "revisionHeight": "1" + }, + "genesisHash": "2D5C2110941DA54BE07CBB9FACD7E4A2E3253E79BE7BE3E5A1A7BDA518BAA4BE", + "binaryHash": "2D5C2110941DA54BE07CBB9FACD7E4A2E3253E79BE7BE3E5A1A7BDA518BAA4BE", + "spawnTime": "2023-03-11T17:02:14.718477Z", + "unbondingPeriod": "2419200s", + "ccvTimeoutPeriod": "2419200s", + "transferTimeoutPeriod": "3600s", + "consumerRedistributionFraction": "0.75", + "blocksPerDistributionTransmission": "1500", + "historicalEntries": "1000" + }, + "powerShapingParams": { + "topN": 100, + "validatorSetCap": 50, + "minStake": "1000", + "allowInactiveVals": true + } +} ``` ### REST @@ -2717,7 +2732,7 @@ A user can query the `provider` module using REST endpoints. #### Consumer Genesis -The `consumer_genesis` endpoint queries a consumer chain genesis state by consumer id. +The `QueryConsumerGenesis` endpoint queries a consumer chain genesis state by consumer id. ```bash interchain_security.ccv.provider.v1.Query/QueryConsumerGenesis @@ -2726,12 +2741,11 @@ interchain_security.ccv.provider.v1.Query/QueryConsumerGenesis Example: ```bash -curl http://localhost:1317/interchain_security/ccv/provider/consumer_genesis/0 +grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerGenesis ``` Example Output: - ```json { "genesisState": { @@ -2838,7 +2852,7 @@ Example Output: #### List Consumer Chains -The `QueryConsumerChains` endpoint queries consumer chains supported by the provider chain. +The `consumer_chains` endpoint queries consumer chains supported by the provider chain. An optional integer parameter can be passed for phase filtering of consumer chains, (Registered=1|Initialized=2|Launched=3|Stopped=4|Deleted=5).` ```bash @@ -2956,7 +2970,7 @@ Example Output: #### Registered Consumer Reward Denoms -The `registered_consumer_reward_denoms` command allows to query registered consumer reward denoms +The `registered_consumer_reward_denoms` endpoint allows to query registered consumer reward denoms ```bash interchain_security/ccv/provider/registered_consumer_reward_denoms @@ -2996,24 +3010,32 @@ curl http://localhost:1317/interchain_security/ccv/provider/address_pairs/0 Example Output: -```bash -denoms: -- ibc/3C3D7B3BE4ECC85A0E5B52A3AEC3B7DFC2AA9CA47C37821E57020D6807043BE9 -- ibc/D549749C93524DA1831A4B3C850DFC1BA9060261BEDFB224B3B0B4744CD77A70 +```json +{ + "pairValConAddr": [ + { + "providerAddress": "cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6", + "consumerAddress": "cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk", + "consumerKey": { + "ed25519": "Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is=" + } + } + ] +} ``` #### Provider Parameters -The `QueryParams` endpoint queries all current values of provider parameters +The `params` endpoint queries all current values of provider parameters ```bash -interchain_security.ccv.provider.v1.Query/QueryParams +interchain_security/ccv/provider/params ``` Example: ```bash -grpcurl -plaintext interchain_security.ccv.provider.v1.Query/QueryParams +curl http://localhost:1317/interchain_security/ccv/provider/params ``` Example Output: @@ -3091,16 +3113,16 @@ Example Output: #### Consumer Opted In Validators -The `QueryConsumerChainOptedInValidators` endpoint queries opted-in validators for a given consumer chain +The `opted_in_validators` endpoint queries opted-in validators for a given consumer chain ```bash -interchain_security.ccv.provider.v1.Query/QueryConsumerChainOptedInValidators +/interchain_security/ccv/provider/opted_in_validators/{consumer_id} ``` Example: ```bash -grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChainOptedInValidators +curl http://localhost:1317/interchain_security/ccv/provider/opted_in_validators/0 ``` Example Output: @@ -3117,17 +3139,17 @@ Example Output: #### Consumer Validators -The `QueryConsumerValidators` endpoint queries the latest set consumer-validator set for a given consumer ID +The `consumer_validators` endpoint queries the latest set consumer-validator set for a given consumer ID Note that this does not necessarily mean that the consumer chain is using this validator set at this exact moment because a VSCPacket could be delayed to be delivered on the consumer chain. ```bash -interchain_security.ccv.provider.v1.Query/QueryConsumerValidators +/interchain_security/ccv/provider/consumer_validators/{consumer_id} ``` Example: ```bash -grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerValidators +curl http://localhost:1317/interchain_security/ccv/provider/consumer_validators/0 ``` Example Output: @@ -3195,16 +3217,16 @@ Example Output: #### Has to Validate -The `QueryConsumerChainsValidatorHasToValidate` endpoint queries a list of consumer chains that a given validator must validate. +The `consumer_chains_per_validator` endpoint queries a list of consumer chains that a given validator must validate. ```bash -interchain_security.ccv.provider.v1.Query/QueryConsumerChainsValidatorHasToValidate +interchain_security/ccv/provider/consumer_chains_per_validator/{provider_address} ``` Example: ```bash -grpcurl -plaintext -d '{"provider_address": "cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChainsValidatorHasToValidate +curl http://localhost:1317/interchain_security/ccv/provider/consumer_chains_per_validator/cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph ``` Example Output: @@ -3220,109 +3242,114 @@ Example Output: #### Validator Consumer Commission Rate -The `QueryValidatorConsumerCommissionRate` endpoint queries the consumer commission rate a validator charges on a consumer chain. +The `consumer_commission_rate` endpoint queries the consumer commission rate a validator charges on a consumer chain. ```bash -interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerCommissionRate +/interchain_security/ccv/provider/consumer_commission_rate/{consumer_id}/{provider_address} ``` Example: ```bash -grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:29190 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerCommissionRate +curl http://localhost:1317/interchain_security/ccv/provider/consumer_commission_rate/0/cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph ``` Example Output: ```json { - "rate": "750000000000000000" + "rate": "0.100000000000000000" } ``` #### Blocks Until Next Epoch -The `blocks-until-next-epoch` command allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains +The `blocks_until_next_epoch` endpoint allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains ```bash -interchain-security-pd query provider blocks-until-next-epoch [flags] +interchain_security/ccv/provider/blocks_until_next_epoch ``` Example: ```bash -interchain-security-pd query provider blocks-until-next-epoch +curl http://localhost:1317/interchain_security/ccv/provider/blocks_until_next_epoch ``` Example Output: -```bash -blocks_until_next_epoch: "286" +```json +{ + "blocks_until_next_epoch":"3" +} ``` #### Consumer Id From Client Id -The `consumer-id-from-client-id` command allows to query the consumer id of the chain associated with the provided client id +The `consumer_id` endpoint allows to query the consumer id of the chain associated with the provided client id ```bash -interchain-security-pd query provider consumer-id-from-client-id [client-id] [flags] +/interchain_security/ccv/provider/consumer_id/{client_id} ``` Example: ```bash -interchain-security-pd query provider consumer-id-from-client-id 07-tendermint-0 +curl http://localhost:1317/interchain_security/ccv/provider/consumer_id/07-tendermint-0 ``` Example Output: -```bash -consumer_id: "0" +```json +{ + "consumer_id":"0" +} ``` #### Consumer Chain -The `consumer-chain` command allows to query the consumer chain associated with the consumer id +The `consumer_chain` endpoint allows to query the consumer chain associated with the consumer id. ```bash -interchain-security-pd query provider consumer-chain [consumer-id] [flags] +interchain_security/ccv/provider/consumer_chain/{consumer_id} ``` Example: ```bash -interchain-security-pd query provider consumer-chain 0 +curl http://localhost:1317/interchain_security/ccv/provider/consumer_chain/0 ``` -```bash -chain_id: pion-1 -consumer_id: "0" -init_params: - binary_hash: YmluX2hhc2g= - blocks_per_distribution_transmission: "1000" - ccv_timeout_period: 2419200s - consumer_redistribution_fraction: "0.75" - distribution_transmission_channel: "" - genesis_hash: Z2VuX2hhc2g= - historical_entries: "10000" - initial_height: - revision_height: "1" - revision_number: "0" - spawn_time: "2024-09-26T06:55:14.616054Z" - transfer_timeout_period: 3600s - unbonding_period: 1209600s -metadata: - description: description of your chain and all other relevant information - metadata: some metadata about your chain - name: pion-1 -owner_address: cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn -phase: CONSUMER_PHASE_LAUNCHED -power_shaping_params: - allow_inactive_vals: false - allowlist: [] - denylist: [] - min_stake: "0" - top_N: 100 - validator_set_cap: 0 - validators_power_cap: 0 +```json +{ + "consumerId": "0", + "chainId": "pion-1", + "ownerAddress": "cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn", + "phase": "CONSUMER_PHASE_LAUNCHED", + "metadata": { + "name": "description of your chain and all other relevant information", + "description": "some metadata about your chain", + "metadata": "pion-1" + }, + "initParams": { + "initialHeight": { + "revisionHeight": "1" + }, + "genesisHash": "2D5C2110941DA54BE07CBB9FACD7E4A2E3253E79BE7BE3E5A1A7BDA518BAA4BE", + "binaryHash": "2D5C2110941DA54BE07CBB9FACD7E4A2E3253E79BE7BE3E5A1A7BDA518BAA4BE", + "spawnTime": "2023-03-11T17:02:14.718477Z", + "unbondingPeriod": "2419200s", + "ccvTimeoutPeriod": "2419200s", + "transferTimeoutPeriod": "3600s", + "consumerRedistributionFraction": "0.75", + "blocksPerDistributionTransmission": "1500", + "historicalEntries": "1000" + }, + "powerShapingParams": { + "topN": 100, + "validatorSetCap": 50, + "minStake": "1000", + "allowInactiveVals": true + } +} ``` \ No newline at end of file From 61ebd23cd5561ce0b8661f17b16d1f400cebcdef Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Mon, 30 Sep 2024 11:22:34 +0200 Subject: [PATCH 23/32] add consumer docs wip --- docs/docs/build/modules/03-consumer.md | 326 ++++++++++++++++++++++++- tests/e2e/steps_democracy.go | 194 +++++++-------- 2 files changed, 413 insertions(+), 107 deletions(-) diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 539df44bbc..167c54d312 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -441,10 +441,330 @@ For more details, see [ADR-008](../adrs/adr-008-throttle-retries.md). ## Client -> TBA - ### CLI +A user can interact with the `consumer` module using the CLI. + +#### Query + +The `query` commands allow users to query `consumer` state. + +##### Next Fee Distribution + +The `next-fee-distribution` command allows to query next fee distribution data. + +```bash +interchain-security-cd query ccvconsumer next-fee-distribution [flags] +``` + +Example: + +```bash +interchain-security-cd query ccvconsumer next-fee-distribution +``` + +Example Output: + +```bash +data: + currentHeight: "967" + distribution_fraction: "0.75" + lastHeight: "960" + nextHeight: "980" + toConsumer: "" + toProvider: "" + total: "" +``` + +##### Provider Info + +The `provider-info` command allows to query provider info. + +```bash +interchain-security-cd query ccvconsumer provider-info [flags] +``` + +Example: + +```bash +interchain-security-cd query ccvconsumer provider-info +``` + +Example Output: + +```bash +provider_address: "cosmos1abcd1234..." +``` + +##### Throttle State + +The `throttle-state` command allows to query throttle state. + +```bash +interchain-security-cd query ccvconsumer provider-info [flags] +``` + +Example: + +```bash +interchain-security-cd query ccvconsumer provider-info +``` + +Example Output: + +```bash +packet_data_queue: [] +slash_record: null +``` + +##### Params + +The `params` command allows to query consumer module parameters. + +```bash +interchain-security-cd query ccvconsumer params [flags] +``` + +Example: + +```bash +interchain-security-cd query ccvconsumer params +``` + +Example Output: + +```bash +provider_address: "cosmos1abcd1234..." +``` + ### gRPC -### REST \ No newline at end of file +A user can query the `consumer` module using gRPC endpoints. + +#### Next Fee Distribution + +The `QueryNextFeeDistribution` endpoint queries next fee distribution data. + +```bash +interchain_security.ccv.consumer.v1.Query/QueryNextFeeDistribution +``` + +Example: + +```bash +grpcurl -plaintext localhost:9090 interchain_security.ccv.consumer.v1.Query/QueryNextFeeDistribution +``` + +Example Output: + +```json +{ + "data": { + "currentHeight": "402", + "lastHeight": "400", + "nextHeight": "420", + "distributionFraction": "0.75" + } +} +``` + +#### Provider Info + +The `QueryProviderInfo` endpoint queries provider info. + +```bash +interchain_security.ccv.consumer.v1.Query/QueryProviderInfo +``` + +Example: + +```bash +grpcurl -plaintext interchain_security.ccv.consumer.v1.Query/QueryProviderInfo +``` + +Example Output: + +```json +{ + "consumer": { + "chainID": "pion-1", + "clientID": "07-tendermint-0", + "connectionID": "connection-0", + "channelID": "channel-0" + }, + "provider": { + "chainID": "provider", + "clientID": "07-tendermint-0", + "connectionID": "connection-0", + "channelID": "channel-0" + } +} +``` + +#### Throttle State + +The `QueryThrottleState` endpoint queries throttle state. + +```bash +interchain_security.ccv.consumer.v1.Query/QueryThrottleState +``` + +Example: + +```bash +grpcurl -plaintext localhost:9090 interchain_security.ccv.consumer.v1.Query/QueryThrottleState +``` + +Example Output: + +```json +{ + "consumer": { + "chainID": "pion-1", + "clientID": "07-tendermint-0", + "connectionID": "connection-0", + "channelID": "channel-0" + }, + "provider": { + "chainID": "provider", + "clientID": "07-tendermint-0", + "connectionID": "connection-0", + "channelID": "channel-0" + } +} +``` + +#### Params + +The `QueryParams` endpoint queries consumer module parameters. + +```bash +interchain_security.ccv.consumer.v1.Query/QueryParams +``` + +Example: + +```bash +grpcurl -plaintext localhost:9090 interchain_security.ccv.consumer.v1.Query/QueryParams +``` + +Example Output: + +```bash +``` + +### REST + +A user can query the `consumer` module using REST endpoints. + +#### Next Fee Distribution + +The `next-fee-distribution` endpoint queries next fee distribution data. + +```bash +/interchain_security/ccv/consumer/next-fee-distribution +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/consumer/next-fee-distribution +``` + +Example Output: + +```json +{ + "data": { + "currentHeight": "402", + "lastHeight": "400", + "nextHeight": "420", + "distributionFraction": "0.75" + } +} +``` + +#### Provider Info + +The `QueryProviderInfo` endpoint queries provider info. + +```bash +/interchain_security/ccv/consumer/provider-info +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/consumer/provider-info +``` + +Example Output: + +```json +{ + "consumer": { + "chainID": "pion-1", + "clientID": "07-tendermint-0", + "connectionID": "connection-0", + "channelID": "channel-0" + }, + "provider": { + "chainID": "provider", + "clientID": "07-tendermint-0", + "connectionID": "connection-0", + "channelID": "channel-0" + } +} +``` + +#### Throttle State + +The `throttle_state` endpoint queries throttle state. + +```bash +/interchain_security/ccv/consumer/throttle_state +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/consumer/throttle_state +``` + +Example Output: + +```json +{ + "consumer": { + "chainID": "pion-1", + "clientID": "07-tendermint-0", + "connectionID": "connection-0", + "channelID": "channel-0" + }, + "provider": { + "chainID": "provider", + "clientID": "07-tendermint-0", + "connectionID": "connection-0", + "channelID": "channel-0" + } +} +``` + +#### Params + +The `params` endpoint queries consumer module parameters. + +```bash +/interchain_security/ccv/consumer/params +``` + +Example: + +```bash +curl http://localhost:1317/interchain_security/ccv/consumer/params +``` + +Example Output: + +```bash +``` \ No newline at end of file diff --git a/tests/e2e/steps_democracy.go b/tests/e2e/steps_democracy.go index df506639e4..84620b8f87 100644 --- a/tests/e2e/steps_democracy.go +++ b/tests/e2e/steps_democracy.go @@ -183,21 +183,7 @@ func stepsDemocracy(consumerName string, expectRegisteredRewardDistribution bool Port: "transfer", Channel: 1, }, - State: State{ - ChainID("provi"): ChainState{ - // Check that ARE NOT minted and sent to provider chain and distributed to validators and their delegators on provider chain - // the tokens are not sent because the test configuration does not allow sending tokens - Rewards: &Rewards{ - IsRewarded: map[ValidatorID]bool{ - ValidatorID("alice"): expectRegisteredRewardDistribution, - ValidatorID("bob"): expectRegisteredRewardDistribution, - ValidatorID("carol"): expectRegisteredRewardDistribution, - }, - IsIncrementalReward: false, - IsNativeDenom: false, - }, - }, - }, + State: State{}, }, { Action: DowntimeSlashAction{ @@ -222,94 +208,94 @@ func stepsDemocracy(consumerName string, expectRegisteredRewardDistribution bool }, }, }, - { - Action: RelayPacketsAction{ - ChainA: ChainID("provi"), - ChainB: ChainID(consumerName), - Port: "provider", - Channel: 0, - }, - State: State{ - ChainID("provi"): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 511, - // Downtime jailing and corresponding voting power change are processed by provider - ValidatorID("bob"): 0, - ValidatorID("carol"): 500, - }, - }, - ChainID(consumerName): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 511, - ValidatorID("bob"): 500, - ValidatorID("carol"): 500, - }, - }, - }, - }, - // A block is incremented each action, hence why VSC is committed on provider, - // and can now be relayed as packet to consumer - { - Action: RelayPacketsAction{ - ChainA: ChainID("provi"), - ChainB: ChainID(consumerName), - Port: "provider", - Channel: 0, - }, - State: State{ - ChainID(consumerName): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 511, - // VSC now seen on consumer - ValidatorID("bob"): 0, - ValidatorID("carol"): 500, - }, - }, - }, - }, - { - Action: UnjailValidatorAction{ - Provider: ChainID("provi"), - Validator: ValidatorID("bob"), - }, - State: State{ - ChainID("provi"): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 511, - ValidatorID("bob"): 500, - ValidatorID("carol"): 500, - }, - }, - ChainID(consumerName): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 511, - ValidatorID("bob"): 0, - ValidatorID("carol"): 500, - }, - }, - }, - }, - { - Action: RelayPacketsAction{ - ChainA: ChainID("provi"), - ChainB: ChainID(consumerName), - Port: "provider", - Channel: 0, - }, - State: State{ - ChainID(consumerName): ChainState{ - ValPowers: &map[ValidatorID]uint{ - ValidatorID("alice"): 511, - ValidatorID("bob"): 500, - ValidatorID("carol"): 500, - }, - // Check that slashing on the gov-consumer chain does not result in slashing for the representatives or their delegators - StakedTokens: &map[ValidatorID]uint{ - ValidatorID("alice"): 100500000, - ValidatorID("bob"): 40000000, - }, - }, - }, - }, + // { + // Action: RelayPacketsAction{ + // ChainA: ChainID("provi"), + // ChainB: ChainID(consumerName), + // Port: "provider", + // Channel: 0, + // }, + // State: State{ + // ChainID("provi"): ChainState{ + // ValPowers: &map[ValidatorID]uint{ + // ValidatorID("alice"): 511, + // // Downtime jailing and corresponding voting power change are processed by provider + // ValidatorID("bob"): 0, + // ValidatorID("carol"): 500, + // }, + // }, + // ChainID(consumerName): ChainState{ + // ValPowers: &map[ValidatorID]uint{ + // ValidatorID("alice"): 511, + // ValidatorID("bob"): 500, + // ValidatorID("carol"): 500, + // }, + // }, + // }, + // }, + // // A block is incremented each action, hence why VSC is committed on provider, + // // and can now be relayed as packet to consumer + // { + // Action: RelayPacketsAction{ + // ChainA: ChainID("provi"), + // ChainB: ChainID(consumerName), + // Port: "provider", + // Channel: 0, + // }, + // State: State{ + // ChainID(consumerName): ChainState{ + // ValPowers: &map[ValidatorID]uint{ + // ValidatorID("alice"): 511, + // // VSC now seen on consumer + // ValidatorID("bob"): 0, + // ValidatorID("carol"): 500, + // }, + // }, + // }, + // }, + // { + // Action: UnjailValidatorAction{ + // Provider: ChainID("provi"), + // Validator: ValidatorID("bob"), + // }, + // State: State{ + // ChainID("provi"): ChainState{ + // ValPowers: &map[ValidatorID]uint{ + // ValidatorID("alice"): 511, + // ValidatorID("bob"): 500, + // ValidatorID("carol"): 500, + // }, + // }, + // ChainID(consumerName): ChainState{ + // ValPowers: &map[ValidatorID]uint{ + // ValidatorID("alice"): 511, + // ValidatorID("bob"): 0, + // ValidatorID("carol"): 500, + // }, + // }, + // }, + // }, + // { + // Action: RelayPacketsAction{ + // ChainA: ChainID("provi"), + // ChainB: ChainID(consumerName), + // Port: "provider", + // Channel: 0, + // }, + // State: State{ + // ChainID(consumerName): ChainState{ + // ValPowers: &map[ValidatorID]uint{ + // ValidatorID("alice"): 511, + // ValidatorID("bob"): 500, + // ValidatorID("carol"): 500, + // }, + // // Check that slashing on the gov-consumer chain does not result in slashing for the representatives or their delegators + // StakedTokens: &map[ValidatorID]uint{ + // ValidatorID("alice"): 100500000, + // ValidatorID("bob"): 40000000, + // }, + // }, + // }, + // }, } } From d8ce08039927301225537b442b2e0c9d89d9d39f Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Wed, 2 Oct 2024 09:23:48 +0200 Subject: [PATCH 24/32] provider docs nits --- docs/docs/build/modules/02-provider.md | 96 ++++++++++++-------------- 1 file changed, 45 insertions(+), 51 deletions(-) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 0e625be1f7..3bead24553 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -946,7 +946,7 @@ A user can interact with the `provider` module using the CLI. The `query` commands allow users to query `provider` state. ```bash -simd query provider --help +interchain-security-pd query provider --help ``` ##### Consumer Genesis @@ -1392,7 +1392,7 @@ interchain-security-pd query provider has-to-validate cosmoscons1gghjut3ccd8ay0z Example Output: -``` +```bash consumer_ids: - "0" - "2" @@ -1510,7 +1510,7 @@ power_shaping_params: The `tx` commands allows users to interact with the `provider` module. ```bash -simd tx provider --help +interchain-security-pd tx provider --help ``` ##### Assign Consumer Key @@ -1528,10 +1528,9 @@ interchain-security-pd tx provider assign-consensus-key 0 \ '{"@type":"/cosmos.crypto.ed25519.PubKey","key":"Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is="}' \ --chain-id provider \ --from mykey \ - --gas="auto" \ + --gas="auto" \ --gas-adjustment="1.2" \ --gas-prices="0.025stake" \ - --from=mykey ``` Note that the consumer pubkey can be obtained by using `interchain-security-cd tendermint show-validator` command. @@ -1550,10 +1549,9 @@ Example: interchain-security-pd tx provider create-consumer path/to/create-consumer-msg.json \ --chain-id provider \ --from mykey \ - --gas="auto" \ + --gas="auto" \ --gas-adjustment="1.2" \ --gas-prices="0.025stake" \ - --from=mykey ``` where `create-consumer-msg.json` contains: @@ -1586,7 +1584,6 @@ interchain-security-pd tx provider update-consumer path/to/update-consumer.json --gas="auto" \ --gas-adjustment="1.2" \ --gas-prices="0.025stake" \ - --from=mykey ``` where `update-consumer-msg.json` contains: @@ -1594,37 +1591,37 @@ where `update-consumer-msg.json` contains: ```json { "consumer_id" : "0", - "owner_address": "cosmos1p3ucd3ptpw902fluyjzhq3ffgq4ntddac9sa3s", + "owner_address": "cosmos1p3ucd3ptpw902fluyjzhq3ffgq4ntddac9sa3s", "metadata": { "name": "pion-1", "description":"description of your chain and all other relevant information", "metadata": "some metadata about your" }, - "initialization_parameters":{ - "initial_height":{ - "revision_number": 0, - "revision_height": 1 - }, - "genesis_hash":"2D5C2110941DA54BE07CBB9FACD7E4A2E3253E79BE7BE3E5A1A7BDA518BAA4BE", - "binary_hash": "6EF05C2F38BE62A833E5AB51EBF3BA72D1BC1664D7E4A2E3253DA54BE07CF38A", - "spawn_time": "2024-09-29T12:57:43Z", - "unbonding_period":"2419200s", - "ccv_timeout_period": "2419200s", - "transfer_timeout_period": "3600s", - "consumer_redistribution_fraction": "0.75", - "blocks_per_distribution_transmission": "1500", - "historical_entries":"1000", - "distribution_transmission_channel": "" - }, - "power_shaping_parameters":{ - "top_N":50, - "validators_power_cap":50, - "validator_set_cap":50, - "allowlist":["cosmosvalcons1l9qq4m300z8c5ez86ak2mp8znftewkwgjlxh88"], - "denylist":[], - "min_stake": "1000", - "allow_inactive_vals":true - } + "initialization_parameters":{ + "initial_height":{ + "revision_number": 0, + "revision_height": 1 + }, + "genesis_hash":"2D5C2110941DA54BE07CBB9FACD7E4A2E3253E79BE7BE3E5A1A7BDA518BAA4BE", + "binary_hash": "6EF05C2F38BE62A833E5AB51EBF3BA72D1BC1664D7E4A2E3253DA54BE07CF38A", + "spawn_time": "2024-09-29T12:57:43Z", + "unbonding_period":"2419200s", + "ccv_timeout_period": "2419200s", + "transfer_timeout_period": "3600s", + "consumer_redistribution_fraction": "0.75", + "blocks_per_distribution_transmission": "1500", + "historical_entries":"1000", + "distribution_transmission_channel": "" + }, + "power_shaping_parameters":{ + "top_N":50, + "validators_power_cap":50, + "validator_set_cap":50, + "allowlist":["cosmosvalcons1l9qq4m300z8c5ez86ak2mp8znftewkwgjlxh88"], + "denylist":[], + "min_stake": "1000", + "allow_inactive_vals":true + } } ``` @@ -1657,15 +1654,14 @@ interchain-security-pd tx provider opt-in 0 \ '{"@type":"/cosmos.crypto.ed25519.PubKey","key":"Ui5Gf1+mtWUdH8u3xlmzdKID+F3PK0sfXZ73GZ6q6is="}' \ --chain-id provider \ --from mykey \ - --gas="auto" \ + --gas="auto" \ --gas-adjustment="1.2" \ --gas-prices="0.025stake" \ - --from=mykey ``` ##### Opt Out -The `opt-out` command allows a validator to opt in to a consumer chain and optionally set a consensus public key. +The `opt-out` command allows validators to opt out from consumer chains. ```bash interchain-security-pd tx provider opt-out [consumer-id] [flags] @@ -1680,7 +1676,6 @@ interchain-security-pd tx provider opt-out 0 \ --gas="auto" \ --gas-adjustment="1.2" \ --gas-prices="0.025stake" \ - --from=mykey ``` ##### Set Consumer Commission Rate @@ -1700,7 +1695,6 @@ interchain-security-pd tx provider set-consumer-commission-rate 0 0.5 \ --gas="auto" \ --gas-adjustment="1.2" \ --gas-prices="0.025stake" \ - --from=mykey ``` ##### Submit Consumer Double Voting @@ -1720,7 +1714,6 @@ interchain-security-pd tx provider submit-consumer-double-voting 0 path/to/evide --gas="auto" \ --gas-adjustment="1.2" \ --gas-prices="0.025stake" \ - --from=mykey ``` where `evidence.json` contains: @@ -1878,7 +1871,7 @@ where `infraction_header.json` contains: ``` -##### Submit Consumer Double Voting +##### Submit Consumer Misbehaviour The `submit-consumer-misbehaviour` command allows to submit an IBC misbehaviour for a consumer chain. @@ -1895,7 +1888,6 @@ interchain-security-pd tx provider submit-consumer-misbehaviour 0 path/to/consum --gas="auto" \ --gas-adjustment="1.2" \ --gas-prices="0.025stake" \ - --from=mykey ``` where `consumer-misbehaviour.json` contains: @@ -2298,13 +2290,13 @@ Example Output: The `QueryValidatorProviderAddr` endpoint queries the provider chain address given a consumer chain validator address. ```bash -interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr +interchain_security.ccv.provider.v1.Query/QueryValidatorProviderAddr ``` Example: ```bash -grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr +grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorProviderAddr ``` Example Output: @@ -2510,7 +2502,7 @@ Example Output: #### Consumer Validators -The `consumer_validators` endpoint queries the latest set consumer-validator set for a given consumer ID +The `QueryConsumerValidators` endpoint queries the latest set consumer-validator set for a given consumer ID. Note that this does not necessarily mean that the consumer chain is using this validator set at this exact moment because a VSCPacket could be delayed to be delivered on the consumer chain. ```bash @@ -2635,7 +2627,7 @@ Example Output: #### Blocks Until Next Epoch -The `QueryBlocksUntilNextEpoch` endpoint allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains +The `QueryBlocksUntilNextEpoch` endpoint allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains. ```bash interchain_security.ccv.provider.v1.Query/QueryBlocksUntilNextEpoch @@ -2657,7 +2649,7 @@ Example Output: #### Consumer Id From Client Id -The `QueryConsumerIdFromClientId` endpoint allows to query the consumer id of the chain associated with the provided client id +The `QueryConsumerIdFromClientId` endpoint allows to query the consumer id of the chain associated with the provided client id. ```bash interchain_security.ccv.provider.v1.Query/QueryConsumerIdFromClientId @@ -2732,16 +2724,16 @@ A user can query the `provider` module using REST endpoints. #### Consumer Genesis -The `QueryConsumerGenesis` endpoint queries a consumer chain genesis state by consumer id. +The `consumer_genesis` endpoint queries a consumer chain genesis state by consumer id. ```bash -interchain_security.ccv.provider.v1.Query/QueryConsumerGenesis +interchain_security/ccv/provider/consumer_genesis/{consumer_id} ``` Example: ```bash -grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerGenesis +curl http://localhost:1317/interchain_security/ccv/provider/consumer_genesis/0 ``` Example Output: @@ -2856,7 +2848,7 @@ The `consumer_chains` endpoint queries consumer chains supported by the provider An optional integer parameter can be passed for phase filtering of consumer chains, (Registered=1|Initialized=2|Launched=3|Stopped=4|Deleted=5).` ```bash -interchain_security.ccv.provider.v1.Query/QueryConsumerChains/{phase} +interchain_security/ccv/provider/consumer_chains/{phase} ``` Example: @@ -3320,6 +3312,8 @@ Example: curl http://localhost:1317/interchain_security/ccv/provider/consumer_chain/0 ``` +Example Output: + ```json { "consumerId": "0", From d37e2a294e1c601bf6aadad9f93fbe986d6e3771 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Wed, 2 Oct 2024 09:32:41 +0200 Subject: [PATCH 25/32] consumer docs nits --- docs/docs/build/modules/02-provider.md | 2 +- docs/docs/build/modules/03-consumer.md | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 3bead24553..587e906bd3 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -1141,7 +1141,7 @@ provider_address: cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj ##### Throttle State -The `throttle-state` command allows to command on-chain state relevant to slash packet throttling. +The `throttle-state` command allows to query on-chain state relevant to slash packet throttling. ```bash diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 167c54d312..28bc7294e3 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -449,6 +449,10 @@ A user can interact with the `consumer` module using the CLI. The `query` commands allow users to query `consumer` state. +```bash +interchain-security-cd query ccvconsumer --help +``` + ##### Next Fee Distribution The `next-fee-distribution` command allows to query next fee distribution data. @@ -493,12 +497,21 @@ interchain-security-cd query ccvconsumer provider-info Example Output: ```bash -provider_address: "cosmos1abcd1234..." +consumer: + chainID: pion-1 + channelID: channel-0 + clientID: 07-tendermint-0 + connectionID: connection-0 +provider: + chainID: provider + channelID: channel-0 + clientID: 07-tendermint-0 + connectionID: connection-0 ``` ##### Throttle State -The `throttle-state` command allows to query throttle state. +The `throttle-state` command allows to query on-chain state relevant with slash packet throttling. ```bash interchain-security-cd query ccvconsumer provider-info [flags] From 7a1e24f5b0d30ceb1e285ff99f97bf8eb9aa9203 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Wed, 2 Oct 2024 10:14:33 +0200 Subject: [PATCH 26/32] consumer docs improvement --- docs/docs/build/modules/03-consumer.md | 104 ++++++++++++++++++++----- 1 file changed, 83 insertions(+), 21 deletions(-) diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 28bc7294e3..e343184625 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -514,20 +514,29 @@ provider: The `throttle-state` command allows to query on-chain state relevant with slash packet throttling. ```bash -interchain-security-cd query ccvconsumer provider-info [flags] +interchain-security-cd query ccvconsumer throttle-state [flags] ``` Example: ```bash -interchain-security-cd query ccvconsumer provider-info +interchain-security-cd query ccvconsumer throttle-state ``` Example Output: ```bash -packet_data_queue: [] -slash_record: null +packet_data_queue: +- slashPacketData: + infraction: INFRACTION_DOWNTIME + validator: + address: mb06cu8SzQJOdYSzrJAK43Q8at8= + power: "500" + valset_update_id: "48" + type: CONSUMER_PACKET_TYPE_SLASH +slash_record: + send_time: "2024-10-02T07:58:24.405645924Z" + waiting_on_reply: true ``` ##### Params @@ -547,7 +556,21 @@ interchain-security-cd query ccvconsumer params Example Output: ```bash -provider_address: "cosmos1abcd1234..." +params: + blocks_per_distribution_transmission: "1000" + ccv_timeout_period: 2419200s + consumer_id: "0" + consumer_redistribution_fraction: "0.75" + distribution_transmission_channel: channel-1 + enabled: true + historical_entries: "10000" + provider_fee_pool_addr_str: cosmos1ap0mh6xzfn8943urr84q6ae7zfnar48am2erhd + provider_reward_denoms: [] + retry_delay_period: 3600s + reward_denoms: [] + soft_opt_out_threshold: "0" + transfer_timeout_period: 3600s + unbonding_period: 1209600s ``` ### gRPC @@ -592,7 +615,7 @@ interchain_security.ccv.consumer.v1.Query/QueryProviderInfo Example: ```bash -grpcurl -plaintext interchain_security.ccv.consumer.v1.Query/QueryProviderInfo +grpcurl -plaintext localhost:9090 interchain_security.ccv.consumer.v1.Query/QueryProviderInfo ``` Example Output: @@ -616,7 +639,8 @@ Example Output: #### Throttle State -The `QueryThrottleState` endpoint queries throttle state. +The `QueryThrottleState` endpoint queries on-chain state relevant with slash packet throttling. + ```bash interchain_security.ccv.consumer.v1.Query/QueryThrottleState @@ -632,18 +656,23 @@ Example Output: ```json { - "consumer": { - "chainID": "pion-1", - "clientID": "07-tendermint-0", - "connectionID": "connection-0", - "channelID": "channel-0" + "slashRecord": { + "waitingOnReply": true, + "sendTime": "2024-10-02T07:58:24.405645924Z" }, - "provider": { - "chainID": "provider", - "clientID": "07-tendermint-0", - "connectionID": "connection-0", - "channelID": "channel-0" - } + "packetDataQueue": [ + { + "type": "CONSUMER_PACKET_TYPE_SLASH", + "slashPacketData": { + "validator": { + "address": "mb06cu8SzQJOdYSzrJAK43Q8at8=", + "power": "500" + }, + "valsetUpdateId": "48", + "infraction": "INFRACTION_DOWNTIME" + } + } + ] } ``` @@ -663,7 +692,23 @@ grpcurl -plaintext localhost:9090 interchain_security.ccv.consumer.v1.Query/Quer Example Output: -```bash +```json +{ + "params": { + "enabled": true, + "blocksPerDistributionTransmission": "1000", + "distributionTransmissionChannel": "channel-1", + "providerFeePoolAddrStr": "cosmos1ap0mh6xzfn8943urr84q6ae7zfnar48am2erhd", + "ccvTimeoutPeriod": "2419200s", + "transferTimeoutPeriod": "3600s", + "consumerRedistributionFraction": "0.75", + "historicalEntries": "10000", + "unbondingPeriod": "1209600s", + "softOptOutThreshold": "0", + "retryDelayPeriod": "3600s", + "consumerId": "0" + } +} ``` ### REST @@ -732,7 +777,8 @@ Example Output: #### Throttle State -The `throttle_state` endpoint queries throttle state. +The `throttle_state` endpoint queries on-chain state relevant with slash packet throttling. + ```bash /interchain_security/ccv/consumer/throttle_state @@ -779,5 +825,21 @@ curl http://localhost:1317/interchain_security/ccv/consumer/params Example Output: -```bash +```json +{ + "params": { + "enabled": true, + "blocksPerDistributionTransmission": "1000", + "distributionTransmissionChannel": "channel-1", + "providerFeePoolAddrStr": "cosmos1ap0mh6xzfn8943urr84q6ae7zfnar48am2erhd", + "ccvTimeoutPeriod": "2419200s", + "transferTimeoutPeriod": "3600s", + "consumerRedistributionFraction": "0.75", + "historicalEntries": "10000", + "unbondingPeriod": "1209600s", + "softOptOutThreshold": "0", + "retryDelayPeriod": "3600s", + "consumerId": "0" + } +} ``` \ No newline at end of file From 6bc3eb832727c4fce7a46f9bda2b41bca5133e06 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Wed, 2 Oct 2024 11:01:55 +0200 Subject: [PATCH 27/32] merge main --- docs/docs/adrs/adr-019-permissionless-ics.md | 6 +- .../changeover-procedure.md | 50 +- docs/docs/consumer-development/offboarding.md | 24 +- docs/docs/consumer-development/onboarding.md | 45 +- docs/docs/features/key-assignment.md | 24 +- docs/docs/features/partial-set-security.md | 4 +- docs/docs/features/permissionless.md | 89 + docs/docs/features/power-shaping.md | 48 +- docs/docs/features/proposals.md | 136 - docs/docs/features/reward-distribution.md | 57 +- docs/docs/features/slashing.md | 8 +- docs/docs/frequently-asked-questions.md | 6 +- docs/docs/introduction/overview.md | 6 +- docs/docs/introduction/terminology.md | 15 +- docs/docs/validators/joining-testnet.md | 8 +- docs/docs/validators/overview.md | 31 +- .../partial-set-security-for-validators.md | 31 +- .../hypha-consumer-start-process.excalidraw | 42955 ++++++++++++++++ docs/figures/hypha-consumer-start-process.png | Bin 0 -> 710291 bytes docs/figures/hypha-consumer-start-process.svg | 1 - .../ccv/provider/v1/provider.proto | 33 +- 21 files changed, 43264 insertions(+), 313 deletions(-) create mode 100644 docs/docs/features/permissionless.md delete mode 100644 docs/docs/features/proposals.md create mode 100644 docs/figures/hypha-consumer-start-process.excalidraw create mode 100644 docs/figures/hypha-consumer-start-process.png delete mode 100644 docs/figures/hypha-consumer-start-process.svg diff --git a/docs/docs/adrs/adr-019-permissionless-ics.md b/docs/docs/adrs/adr-019-permissionless-ics.md index 223625aaef..7dfc1b6f7f 100644 --- a/docs/docs/adrs/adr-019-permissionless-ics.md +++ b/docs/docs/adrs/adr-019-permissionless-ics.md @@ -13,7 +13,7 @@ title: Permissionless ICS Accepted ## Context -Currently, a consumer chain can join _Interchain Security_ (ICS) only through a [governance proposal](../features/proposals.md). +Currently, a consumer chain can join _Interchain Security_ (ICS) only through a governance proposal. A governance proposal was needed before the introduction of [Partial Set Security](../features/partial-set-security.md) (PSS) because validators were required to validate a consumer chain. However, after the introduction of PSS, a consumer chain can be either _Top N_ or _Opt In_. If a chain is an Opt In chain, then no validator is required to validate this chain unless they choose to. @@ -171,7 +171,7 @@ message MsgCreateConsumer { } ``` -Note that `metadata` is a required field, while the `initialization_parameterrs` and `power_shaping_parameters` are optional and can later be set using `MsgUpdateConsumer`. +Note that `metadata` is a required field, while the `initialization_parameters` and `power_shaping_parameters` are optional and can later be set using `MsgUpdateConsumer`. `metadata` is of the following type: ```protobuf @@ -341,7 +341,7 @@ The figures below depict some examples of some of the phases a consumer chain re ### Additional Modifications -We need to perform multiple migrations. All state needs to be reindex based on a `consumerId` instead of the `chainId`. +We need to perform multiple migrations. All state needs to be reindexed based on a `consumerId` instead of the `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`. diff --git a/docs/docs/consumer-development/changeover-procedure.md b/docs/docs/consumer-development/changeover-procedure.md index 72da738d49..d91664fdd4 100644 --- a/docs/docs/consumer-development/changeover-procedure.md +++ b/docs/docs/consumer-development/changeover-procedure.md @@ -14,8 +14,8 @@ The relevant protocol specifications are available below: Standalone to consumer changeover procedure can roughly be separated into 4 parts: -### 1. ConsumerAddition proposal submitted to the `provider` chain -The proposal is equivalent to the "normal" ConsumerAddition proposal submitted by new consumer chains. +### 1. `MsgCreateConsumer` submitted to the `provider` chain +The `MsgCreateConsumer` is equivalent to the "normal" `MsgCreateConsumer` message submitted by new consumer chains. However, here are the most important notes and differences between a new consumer chain and a standalone chain performing a changeover: @@ -77,7 +77,7 @@ If the parameter is not set, a new channel will be created. The standalone chain creates an upgrade proposal to include the `interchain-security/x/ccv/consumer` module. :::caution -The upgrade height in the proposal should correspond to a height that is after the `spawn_time` in the consumer addition proposal submitted to the `provider` chain. +The upgrade height in the proposal should correspond to a height that is after the `spawn_time` in the `MsgCreateConsumer` submitted to the `provider` chain. ::: Otherwise, the upgrade is indistinguishable from a regular on-chain upgrade proposal. @@ -137,9 +137,9 @@ This should include (at minimum): Example of such a repository can be found [here](https://github.com/hyphacoop/ics-testnets/tree/main/game-of-chains-2022/sputnik). -## 3. Submit a ConsumerChainAddition Governance Proposal to the provider +## 3. Submit a `MsgCreateConsumer` to the provider -Before you submit a `ConsumerChainAddition` proposal, please provide a `spawn_time` that is **before** the `upgrade_height` of the upgrade that will introduce the `ccv module` to your chain. +Before you submit a `MsgCreateConsumer` message, please provide a `spawn_time` that is **before** the `upgrade_height` of the upgrade that will introduce the `ccv module` to your chain. :::danger If the `spawn_time` happens after your `upgrade_height` the provider will not be able to communicate the new validator set to be used after the changeover. ::: @@ -150,22 +150,11 @@ Additionally, reach out to the community via the [forum](https://forum.cosmos.ne - [ ] determine consumer chain parameters to be put in the proposal - [ ] take note to include a link to your onboarding repository -Example of a consumer chain addition proposal (compare with the [ConsumerAdditionProposal](./onboarding.md#3-submit-a-governance-proposal) in the ICS Provider Proposals section for chains that *launch* as consumers): +Example of initialization parameters (compare with the [those](./onboarding.md#3-submit-msgcreateconsumer-and-msgupdateconsumer-messages) for chains that *launch* as consumers): ```js -// ConsumerAdditionProposal is a governance proposal on the provider chain to spawn a new consumer chain or add a standalone chain. -// If it passes, then a subset (i.e., depends on `top_N` and on the power shaping parameters) of validators on the provider chain are expected -// to validate the consumer chain at spawn time. It is recommended that spawn time occurs after the proposal end time and that it is -// scheduled to happen before the standalone chain upgrade that sill introduce the ccv module. +// ConsumerInitializationParameters provided in MsgCreateConsumer or MsgUpdateConsumer { - // Title of the proposal - "title": "Changeover Standalone chain", - // Description of the proposal - // format the text as a .md file and include the file in your onboarding repository - "description": ".md description of your chain and all other relevant information", - // Proposed chain-id of the new consumer chain. - // Must be unique from all other consumer chain ids of the executing provider chain. - "chain_id": "standalone-1", // Initial height of new consumer chain. "initial_height" : { // must correspond to current revision number of standalone chain @@ -175,7 +164,7 @@ Example of a consumer chain addition proposal (compare with the [ConsumerAdditio // must correspond to a height that is at least 1 block after the upgrade // that will add the `consumer` module to the standalone chain // e.g. "upgrade_height": 100 => "revision_height": 101 - "revision_number": 1, + "revision_height": 101, }, // Hash of the consumer chain genesis state without the consumer CCV module genesis params. // => not relevant for changeover procedure @@ -212,30 +201,11 @@ Example of a consumer chain addition proposal (compare with the [ConsumerAdditio // it is most relevant for chains performing a standalone to consumer changeover // in order to maintain the existing ibc transfer channel "distribution_transmission_channel": "channel-123" // NOTE: use existing transfer channel if available - // Corresponds to the percentage of validators that have to validate the chain under the Top N case. - // For example, 53 corresponds to a Top 53% chain, meaning that the top 53% provider validators by voting power - // have to validate the proposed consumer chain. top_N can either be 0 or any value in [50, 100]. - // A chain can join with top_N == 0 as an Opt In chain, or with top_N ∈ [50, 100] as a Top N chain. - "top_N": 95, - // Corresponds to the maximum power (percentage-wise) a validator can have on the consumer chain. For instance, if - // `validators_power_cap` is set to 32, it means that no validator can have more than 32% of the voting power on the - // consumer chain. Note that this might not be feasible. For example, think of a consumer chain with only - // 5 validators and with `validators_power_cap` set to 10%. In such a scenario, at least one validator would need - // to have more than 20% of the total voting power. Therefore, `validators_power_cap` operates on a best-effort basis. - "validators_power_cap": 0, - // Corresponds to the maximum number of validators that can validate a consumer chain. - // Only applicable to Opt In chains. Setting `validator_set_cap` on a Top N chain is a no-op. - "validator_set_cap": 0, - // Corresponds to a list of provider consensus addresses of validators that are the ONLY ones that can validate - // the consumer chain. - "allowlist": [], - // Corresponds to a list of provider consensus addresses of validators that CANNOT validate the consumer chain. - "denylist": [] } ``` :::info -As seen in the `ConsumerAdditionProposal` example above, the changeover procedure can be used together with [Partial Set Security](../adrs/adr-015-partial-set-security.md). +The changeover procedure can be used together with [Partial Set Security](../adrs/adr-015-partial-set-security.md). This means, that a standalone chain can choose to only be validated by some of the validators of the provider chain by setting `top_N` appropriately, or by additionally setting a validators-power cap, validator-set cap, etc. by using the [power-shaping parameters](../features/power-shaping.md). ::: @@ -244,7 +214,7 @@ additionally setting a validators-power cap, validator-set cap, etc. by using th This proposal should add the ccv `consumer` module to your chain. -- [ ] proposal `upgrade_height` must happen after `spawn_time` in the `ConsumerAdditionProposal` +- [ ] proposal `upgrade_height` must happen after `spawn_time` in the `MsgCreateConsumer` - [ ] advise validators about the exact procedure for your chain and point them to your onboarding repository diff --git a/docs/docs/consumer-development/offboarding.md b/docs/docs/consumer-development/offboarding.md index 7f2ebb0f5e..ff252ad550 100644 --- a/docs/docs/consumer-development/offboarding.md +++ b/docs/docs/consumer-development/offboarding.md @@ -4,21 +4,11 @@ title: Offboarding Checklist --- # Consumer Offboarding -To offboard a consumer chain simply submit a `ConsumerRemovalProposal` governance proposal listing a `stop_time`. After stop time passes, the provider chain will remove the chain from the ICS protocol (it will stop sending validator set updates). +To offboard a consumer chain, the owner of the chain has to submit a `MsgRemoveConsumer` message with the chain's `consumerId`. +If the chain is a Top N chain, the `MsgRemoveConsumer` has to be submitted through a governance proposal. +Otherwise, the message can be submitted simply by the owner of the consumer chain. -```js -// ConsumerRemovalProposal is a governance proposal on the provider chain to remove (and stop) a consumer chain. -// If it passes, all the consumer chain's state is removed from the provider chain. The outstanding unbonding -// operation funds are released. -{ - // the title of the proposal - "title": "This was a great chain", - "description": "Here is a .md formatted string specifying removal details", - // the chain-id of the consumer chain to be stopped - "chain_id": "consumerchain-1", - // the time on the provider chain at which all validators are responsible to stop their consumer chain validator node - "stop_time": "2023-03-07T12:40:00.000000Z", -} -``` - -More information will be listed in a future version of this document. +When the `MsgRemoveConsumer` executes, the provider chain will stop the chain from the ICS protocol (it will stop +sending validator set updates) and the chain is considered to be in the stopped phase. +At this phase, validators cannot opt in, change keys, etc. and validators stop receiving rewards. +After the chain is stopped, and an unbonding period of time passes, part of the state of the chain is deleted and the chain is considered deleted. diff --git a/docs/docs/consumer-development/onboarding.md b/docs/docs/consumer-development/onboarding.md index a86aa00aa9..f079a1c616 100644 --- a/docs/docs/consumer-development/onboarding.md +++ b/docs/docs/consumer-development/onboarding.md @@ -30,36 +30,32 @@ This should include (at minimum): Example of such a repository can be found [here](https://github.com/hyphacoop/ics-testnets/tree/main/game-of-chains-2022/sputnik). -## 3. Submit a Governance Proposal +## 3. Submit `MsgCreateConsumer` (and `MsgUpdateConsumer`) messages -Before you submit a `ConsumerChainAddition` proposal, please consider allowing at least a day between your proposal passing and the chain spawn time. This will allow the validators, other node operators and the community to prepare for the chain launch. -If possible, please set your spawn time so people from different parts of the globe can be available in case of emergencies. Ideally, you should set your spawn time to be between 12:00 UTC and 20:00 UTC so most validator operators are available and ready to respond to any issues. +Before you start your chain, you need to submit a `MsgCreateConsumer` message that generates and returns back the +`consumerId` that should be used in any upcoming interactions by the consumer chain or the validators that interact +with your chain. +Additionally, you need to decider whether your chain should be an Opt-In chain or a Top N chain (see [Partial Set Security](../features/partial-set-security.md)) +and act accordingly (see [Permissionless ICS](../features/permissionless.md). -Additionally, reach out to the community via the [forum](https://forum.cosmos.network/) to formalize your intention to become an ICS consumer, gather community support and accept feedback from the community, validators and developers. +If you create a Top N chain through, please consider allowing at least a day between your proposal passing and the chain spawn time. +This will allow the validators, other node operators and the community to prepare for the chain launch. +If possible, please set your spawn time so people from different parts of the globe can be available in case of emergencies. +Ideally, you should set your spawn time to be between 12:00 UTC and 20:00 UTC so most validator operators are available and ready to respond to any issues. + +Additionally, for a Top N chain, reach out to the community via the [forum](https://forum.cosmos.network/) to formalize your intention to become an ICS consumer, +gather community support and accept feedback from the community, validators and developers. - [ ] determine your chain's spawn time -- [ ] determine consumer chain parameters to be put in the proposal +- [ ] determine consumer chain parameters - [ ] take note to include a link to your onboarding repository - [ ] describe the purpose and benefits of running your chain -- [ ] determine whether your chain should be an Opt-In chain or a Top N chain (see [Partial Set Security](../features/partial-set-security.md)) - [ ] if desired, decide on power-shaping parameters (see [Power Shaping](../features/power-shaping.md)) -Example of a consumer chain addition proposal. - +Example of initialization parameters: ```js -// ConsumerAdditionProposal is a governance proposal on the provider chain to spawn a new consumer chain. -// If it passes, if the top_N parameter is not equal to 0, the top N% of validators by voting power on the provider chain are expected to validate the consumer chain at spawn time. -// Otherwise, only validators that opted in during the proposal period are expected to validate the consumer chain at spawn time. -// It is recommended that spawn time occurs after the proposal end time. +// ConsumerInitializationParameters provided in MsgCreateConsumer or MsgUpdateConsumer { - // Title of the proposal - "title": "Add consumer chain", - // Description of the proposal - // format the text as a .md file and include the file in your onboarding repository - "description": ".md description of your chain and all other relevant information", - // Proposed chain-id of the new consumer chain. - // Must be unique from all other consumer chain ids of the executing provider chain. - "chain_id": "newchain-1", // Initial height of new consumer chain. // For a completely new chain, this will be {0,1}. "initial_height" : { @@ -100,7 +96,14 @@ Example of a consumer chain addition proposal. // Note that transfer_channel_id is the ID of the channel end on the consumer chain. // it is most relevant for chains performing a standalone to consumer changeover // in order to maintain the existing ibc transfer channel - "distribution_transmission_channel": "channel-123", + "distribution_transmission_channel": "channel-123" +} +``` + +Example of power-shaping parameters: +```js +// PowerShaping parameters provided in MsgCreateConsumer or MsgUpdateConsumer +{ // 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]. diff --git a/docs/docs/features/key-assignment.md b/docs/docs/features/key-assignment.md index b9f1496dde..4bb041951d 100644 --- a/docs/docs/features/key-assignment.md +++ b/docs/docs/features/key-assignment.md @@ -15,7 +15,7 @@ Note that key assignment is handled only by the provider chain - the consumer ch ## Rules -- A key can be assigned as soon as the consumer addition proposal is submitted to the provider. +- A key can be assigned to any active (i.e., in the registered, initialized, or launched phase) chain. - Validator `A` cannot assign consumer key `K` to consumer chain `X` if there is already a validator `B` (`B!=A`) using `K` on the provider. - Validator `A` cannot assign consumer key `K` to consumer chain `X` if there is already a validator `B` using `K` on `X`. - A new validator on the provider cannot use a consensus key `K` if `K` is already used by any validator on any consumer chain. @@ -42,16 +42,16 @@ consumerd tendermint show-validator # {"@type":"/cosmos.crypto.ed25519.PubKey"," Then, make an `assign-consensus-key` transaction on the provider chain in order to inform the provider chain about the consensus key you will be using for a specific consumer chain. ```bash -gaiad tx provider assign-consensus-key '' --from --home --gas 900000 -b sync -y -o json +gaiad tx provider assign-consensus-key '' --from --home --gas 900000 -b sync -y -o json ``` -- `consumer-chain-id` is the string identifier of the consumer chain, as assigned on the provider chain +- `consumer-id` is the string identifier of the consumer chain, as assigned on the provider chain - `consumer-pub-key` has the following format `{"@type":"/cosmos.crypto.ed25519.PubKey","key":""}` Check that the key was assigned correctly by querying the provider: ```bash -gaiad query provider validator-consumer-key cosmosvalcons1e....3xsj3ayzf4uv6 +gaiad query provider validator-consumer-key cosmosvalcons1e....3xsj3ayzf4uv6 ``` You must use a `valcons` address. You can obtain it by querying your node on the provider `gaiad tendermint show-address` @@ -59,7 +59,7 @@ You must use a `valcons` address. You can obtain it by querying your node on the OR ```bash -gaiad query provider validator-provider-key consumervalcons1e....123asdnoaisdao +gaiad query provider validator-provider-key consumervalcons1e....123asdnoaisdao ``` You must use a `valcons` address. You can obtain it by querying your node on the consumer `consumerd tendermint show-address` @@ -67,10 +67,10 @@ You must use a `valcons` address. You can obtain it by querying your node on the OR ```bash -gaiad query provider all-pairs-valconsensus-address +gaiad query provider all-pairs-valconsensus-address ``` -You just need to use the `chainId` of consumer to query all pairs valconsensus address with `consumer-pub-key` for each of pair +You just need to use the `consumerId` of consumer to query all pairs valconsensus address with `consumer-pub-key` for each of pair ## Changing a key @@ -79,13 +79,3 @@ To change your key, simply repeat all of the steps listed above. Take note that ## Removing a key To remove a key, simply switch it back to the consensus key you have assigned on the provider chain by following steps in the `Adding a key` section and using your provider consensus key. - -## Querying proposed consumer chains - -To query the consumer addition proposals that are in the voting period, you can use the following command on the provider: - -```bash -gaiad query provider list-proposed-consumer-chains -``` - -This query is valuable for staying informed about when keys can be assigned to newly proposed consumer chains. diff --git a/docs/docs/features/partial-set-security.md b/docs/docs/features/partial-set-security.md index eadb841e59..fb26d11f59 100644 --- a/docs/docs/features/partial-set-security.md +++ b/docs/docs/features/partial-set-security.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 5 --- # Partial Set Security @@ -19,6 +19,6 @@ Validators are never forced to validate these chains and simply opt in if they w Because of this, Opt-In chains can be **_launch completely permissionlessly_** by sending a transaction to the provider chain. As a trade-off though, Opt-In chains do not get a fixed amount of security as a relation of the market cap of the provider as top N chains do, so Opt-In chains might want to keep an eye on how many validators have opted in to validate their chain and adjust their reward emissions accordingly to incentivize validators. -Note that Top N consumer chains can become Opt-In chains or vice versa via a [`ConsumerModificationProposal`](./proposals.md#consumermodificationproposal). +Note that Top N consumer chains can become Opt-In chains or vice versa via a [`MsgUpdateConsumer`](./permissionless.md) message. Partial Set Security is handled only by the provider chain - the consumer chains are simply sent validator sets, and they are not aware that this represents only a subset of the provider chain's validator set. diff --git a/docs/docs/features/permissionless.md b/docs/docs/features/permissionless.md new file mode 100644 index 0000000000..ff7e91a016 --- /dev/null +++ b/docs/docs/features/permissionless.md @@ -0,0 +1,89 @@ +--- +sidebar_position: 7 +--- + +# Permissionless ICS + +With the advent of Permissionless ICS, Opt In consumer chains can launch without going through governance. +However, Top N chains can only be launched through governance as a Top N chain requires the top N% of the provider validators to validate the chain. +In what follows, we explain the phases of a consumer chain and how we can launch a chain under Permissionless ICS. + +:::tip +If you are preparing a new consumer chain you can find more information in the [consumer onboarding checklist](../consumer-development/onboarding.md). +::: + +## From `chainId` to `consumerId` +With Permissionless ICS, anyone can issue a transaction to launch a consumer chain. As a result, the `chainId` of a consumer +chain cannot uniquely identify a consumer chain from the point of view of the provider, because we could have multiple +consumer chains with the exact same `chainId`. +Because of this, Permissionless ICS introduces the notion of a `consumerId`. The provider associates for each consumer chain +a unique `consumerId`. A consumer chain can then interact (e.g., update chain parameters) with its chain by utilizing this `consumerId`. +Additionally, validators can interact (e.g., assign a consumer key, opt in, etc.) with a consumer chain by using the consumer's `consumerId`. + +## Phases of a Consumer Chain +A consumer chain can reside in one of the phases shown in the table below. + +| **Phase** | **Description** | +|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Registered** | The consumer chain was created with `MsgCreateConsumer` and has received the consumer's associated `consumerId`. The chain cannot launch yet. | +| **Initialized** | The consumer chain has set all the initialization parameters and is ready to launch at `spawnTime`. | +| **Launched** | The consumer chain has launched and is running. The provider chain is sending `VSCPacket`s to the consumer. | +| **Stopped** | The consumer chain is stopped and the provider chain is not sending `VSCPacket`s to the consumer. The consumer chain is slated to be deleted. | +| **Deleted** | The majority of the state of the consumer chain on the provider is deleted. Basic metadata of the consumer chain, such as the `chainId`, etc. are not deleted. | + +The following diagram shows the phases and the actions that need to take place to move from one phase to another. + +![phases of a consumer chain](../adrs/figures/adr19_phases_of_a_consumer_chain.png) + +## Owner of a Consumer Chain +A consumer chain (either Opt In or Top N) has an owner. +An Opt In chain is owned by the address that initially sent and signed the `MsgCreateConsumer` message. +A Top N chain is owned by the governance module and can only be updated through governance proposals. + +Note that the owner of a chain can be changed at any later point in time by providing a `new_owner_address` message +in the `MsgUpdateConsumer` message. As a result, an Opt In chain can change its owner to be the governance module +in order to transform to Top N chain, and a Top N chain can change its owner to something that is not the governance +module to become an Opt In chain (see [below](./permissionless.md#transform-an-opt-in-chain-to-top-n-and-vice-versa)). + +## Launch an Opt In Chain +To launch an Opt In chain, we have to send a `MsgCreateConsumer` message. This message returns the newly created `consumerId` +associated with this consumer. The chain is considered to be in the registered phase at this point and its owner is the one +that signed the `MsgCreateConsumer` message. +If the optional `initialization_parameters` are provided in the `MsgCreateConsumer`, then the chain is considered to be in the +initialized phase and the chain can launch at the `spawnTime` provided in the `initialization_parameters`. + +If no `initialization_parameters` are provided in `MsgCreateConsumer`, the consumer can later set those parameters +by issuing a `MsgUpdateConsumer`. The chain would then move to the initialized phase and be slated to launch. + +:::info +An Opt In can only launch at `spawnTime` if at least one validator is opted in at `spawnTime`. +::: + +## Launch a Top N Chain +To launch a Top N chain, we need to issue a `MsgCreateConsumer` to retrieve the `consumerId`. At this stage, the chain +corresponds to an Opt In chain and the owner of the chain is the one that signed the `MsgCreateConsumer`. +For the chain to become Top N we need to issue a message and a governance proposal: + +1. A `MsgUpdateConsumer` message to change the owner of the chain to be that of the governance module, that is to `cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn`. +2. A governance proposal that includes a `MsgUpdateConsumer` that sets the `TopN` of the consumer chain. + +:::warning +If `top_N`, `validators_power_cap`, or some other argument is not included in the power-shaping parameters, then it is considered +that the default value is set for this argument. For example, if a Top 50% chain wants to only modify `validators_power_cap` +from 35 to 40, then the power-shaping parameters in `MsgUpdateConsumer` still need to include that `top_N` is 50. Otherwise +`top_N` would be set to its default value of 0, and the chain would become an Opt-In chain. + +To be **safe**, if you include power-shaping parameters in the `MsgUpdateConsumer`, always include `top_N` and all the power-shaping parameters. +The same applies for the initialization parameters. +::: + +## Transform an Opt In Chain to Top N and Vice Versa +### From Opt In to Top N +This corresponds to the case of [launching a Top N chain](./permissionless.md#launch-a-top-n-chain). The Opt In chain +has to issue a `MsgUpdateConsumer` to change the owner of the consumer to be that of the governance module and +to issue a governance proposal that includes a `MsgUpdateConsumer` and sets the `TopN` of the consumer chain. + +### From Top N to Opt In +A consumer chain can move from Top N to Opt In by issuing a governance proposal that includes a `MsgUpdateConsumer` +that sets `TopN` to `0` and also sets the owner of the chain to not be the governance module anymore. + diff --git a/docs/docs/features/power-shaping.md b/docs/docs/features/power-shaping.md index 169872b9b2..7bfad38588 100644 --- a/docs/docs/features/power-shaping.md +++ b/docs/docs/features/power-shaping.md @@ -1,5 +1,5 @@ --- -sidebar_position: 7 +sidebar_position: 6 --- # Power Shaping @@ -22,16 +22,38 @@ Note that this parameter only applies to Opt In consumer chains (i.e., with Top ### Capping the validator powers -The consumer chain can specify a maximum fraction of the total voting power any of its validators should have. -This is a security measure that makes it harder for a single large validator to take over a consumer chain: -It mitigates the risk of an Opt In chain with only a few validators being dominated by a validator with a large amount of stake. -For example, setting this fraction to 33% would mean that no single validator can have more than 33% of the total voting power on the consumer, and thus no single validator would be able to stop the consumer by going offline. +The consumer chain can specify a _power cap_ which corresponds to the maximum power (percentage-wise) a validator can have on the consumer chain. +The validators-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. +For example, if the validators-power cap is set to 32%, then no single validator can have more than 32% of the total voting +power on the consumer, and thus no single validator would be able to halt the consumer by going offline. + +To respect this power cap, the voting powers of the validators that run the consumer chain are decremented or incremented +accordingly. It is important to note that the voting powers of validators on the provider do **not** change. +For example, assume that the provider chain has among others, validators `A`, `B`, `C`, and `D` with voting powers 100, 1, 1, 1 respectively. +Assume that only those 4 validators opt in on a consumer chain. Without a power cap set, validator `A` +would have 100 / (100 + 1 + 1 + 1) = ~97% of the total voting power on the consumer chain, while +validators `B`, `C`, and `D` would have 1 /(100 + 1 + 1 + 1) = ~1% of the total voting power on the consumer chain. +If the power cap is set to 30%, then the voting power of `A` would be reduced from 100 to 30 on the consumer +chain, the voting power of `B` would be increased from 1 to 25, and the power of `C` and `D` would be increased from +1 to 24. After those modifications, `A` would have 30 / (30 + 25 + 24 + 24) = ~29% of the total voting power of the +consumer chain, `B` would have 25 / (30 + 25 + 24 + 24) = ~25%, and `C` and `D` would both have 24 / (30 + 25 + 24 + 24) = ~23%. +Naturally, there are many ways to change the voting powers of validators to respect the power cap, and ICS chooses +one of them. + +Note that respecting the power cap might NOT always be possible. For example, if we have a consumer +chain with only 5 validators and the power cap is set to 10%, then it is not possible to respect the +power cap. If the voting power of each validator is capped to a maximum of 10% of the total consumer +chain's voting power, then the total voting power of the consumer chain would add up to 50% which obviously does not +make sense (percentages should add up to 100%). In cases where it is not feasible to respect the power cap, all +validators on the consumer chain will have equal voting power in order to minimize the power of a single validator. +Thus, in the example of 5 validators and a power cap set to 10%, all validators would end up having 20% +of the total voting power on the consumer chain. Therefore, power-cap operates on a best-effort basis. + +Note that rewards are distributed proportionally to validators with respect to their capped voting power on the consumer +and **not** their voting power on the provider. +For more information, read on [Reward Distribution](./reward-distribution.md#reward-distribution-with-power-capping). -:::warning -This parameter is a soft cap, and the actual power of a validator can exceed this fraction if the validator set is small (e.g. there are only 3 validators and the cap is 20%). -::: - -Note that rewards are distributed proportionally to validators with respect to their capped voting power on the consumer, not their total voting power on the provider. ### Allowlist and denylist @@ -60,13 +82,13 @@ By default, this parameter is set to `false`, i.e., validators outside of the pr ## Setting Power Shaping Parameters -All the power shaping parameters can be set by the consumer chain in the `ConsumerAdditionProposal` (see [Onboarding](../consumer-development/onboarding.md#3-submit-a-governance-proposal)). +All the power shaping parameters can be set by the consumer chain in the `MsgCreateConsumer` or `MsgUpdateConsumer` messages. They operate _solely on the provider chain_, meaning the consumer chain simply receives the validator set after these rules have been applied and does not have any knowledge about whether they are applied. When setting power shaping parameters, please consider the following guidelines: * **Do not cap the validator set size too low.** - Notice that this number is the **maximum* number of validators that will ever validate the consumer chain. + Notice that this number is the **maximum** number of validators that will ever validate the consumer chain. If this number is too low, the chain will be very limited in the amount of stake that secures it. The validator set size cap should only be used if there are strong reasons to prefer fewer validators. * **Be aware of the interaction between capping the validator powers capping the validator set size.** @@ -82,7 +104,7 @@ When setting power shaping parameters, please consider the following guidelines: In general, when setting these parameters, consider that the voting power distribution in the future might be very different from the one right now, and that the chain should be secure even if the power distribution changes significantly. -The power shaping parameters of a running consumer chain can be changed through a [`ConsumerModificationProposal`](./proposals.md#consumermodificationproposal). +The power shaping parameters of a launched consumer chain can be changed through a [`MsgUpdateConsumer`](./permissionless.md) message. The power shaping parameters can be seen by querying the list of consumer chains: diff --git a/docs/docs/features/proposals.md b/docs/docs/features/proposals.md deleted file mode 100644 index 2df217088e..0000000000 --- a/docs/docs/features/proposals.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -sidebar_position: 3 ---- - -# ICS Provider Proposals - -Interchain Security introduces the following new governance proposal types to the provider chain. - -## `ConsumerAdditionProposal` - -:::tip -If you are preparing a `ConsumerAdditionProposal` you can find more information in the [consumer onboarding checklist](../consumer-development/onboarding.md). -::: - -`ConsumerAdditionProposal` is used to add new consumer chains. -When proposals of this type pass governance and the `spawn_time` specified in the proposal is reached, all opted in provider validators are expected to run infrastructure (validator nodes) for the proposed consumer chain. -Note that for TopN consumer chains, the validators in the top N% of the voting power are automatically opted in at spawn time. - -Minimal example: -```js -{ - // 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. - "spawn_time": "2023-02-28T20:40:00.000000Z", - "title": "Add consumer chain", - "description": ".md description of your chain and all other relevant information", - "chain_id": "newchain-1", - "initial_height" : { - "revision_height": 0, - "revision_number": 1, - }, - // Unbonding period for the consumer chain. - // It should be smaller than that of the provider. - "unbonding_period": 86400000000000, - // Timeout period for CCV related IBC packets. - // Packets are considered timed-out after this interval elapses. - "ccv_timeout_period": 259200000000000, - "transfer_timeout_period": 1800000000000, - "consumer_redistribution_fraction": "0.75", - "blocks_per_distribution_transmission": 1000, - "historical_entries": 10000, - "genesis_hash": "d86d756e10118e66e6805e9cc476949da2e750098fcc7634fd0cc77f57a0b2b0", - "binary_hash": "376cdbd3a222a3d5c730c9637454cd4dd925e2f9e2e0d0f3702fc922928583f1", - "distribution_transmission_channel": "channel-123", - "top_N": 95, - "validators_power_cap": 0, - "validator_set_cap": 0, - "allowlist": [], - "denylist": [], - "min_stake": 0, - "allow_inactive_vals": false -} -``` - -More examples can be found in the Interchain Security testnet repository [here](https://github.com/cosmos/testnets/blob/master/interchain-security/stopped/baryon-1/proposal-baryon-1.json) and [here](https://github.com/cosmos/testnets/blob/master/interchain-security/stopped/noble-1/start-proposal-noble-1.json). - -## `ConsumerRemovalProposal` - -`ConsumerRemovalProposal` is used to remove an existing consumer chain. -When proposals of this type pass governance, the consumer chain in question will be gracefully removed from Interchain Security and validators will no longer be required to run infrastructure for the specified chain. - -Minimal example: -```js -{ - // the time on the provider chain at which all validators are responsible to stop their consumer chain validator node - "stop_time": "2023-03-07T12:40:00.000000Z", - // the chain-id of the consumer chain to be stopped - "chain_id": "consumerchain-1", - "title": "This was a great chain", - "description": "Here is a .md formatted string specifying removal details" -} -``` - -After the consumer chain removal, the consumer chain is no longer secured by the provider chain. -The consumer chain might continue to produce blocks using the last validator set received from the provider. -However, its validator set can no longer be slashed for any infractions committed on the consumer. -Additional steps are required to completely offboard a consumer chain, such as re-introducing the staking module and removing the provider's validators from the active set. - -## `ConsumerModificationProposal` - -`ConsumerModificationProposal` is used to change the power shaping parameters of a running consumer chain, as well as to change a Top N running consumer chain to an Opt-In chain and vice versa. -When proposals of this type pass governance, the consumer chain in question would change all its parameters to the ones passed in the `ConsumerModificationProposal`. - -For example, given `chain-1` is a TopN consumer chain with, if the following `ConsumerModificationProposal` passes, then `chain-1` would become an Opt-In chain with a 40% validators power cap, a maximum number of 30 validators, and one denylisted validator. -```js -{ - "title": "Modify consumer chain", - "description": ".md description of your chain and all other relevant information", - "chain_id": "chain-1", - "top_N": 0, - "validators_power_cap": 40, - "validator_set_cap": 30, - "allowlist": [], - "denylist": ["cosmosvalcons1qmq08eruchr5sf5s3rwz7djpr5a25f7xw4mceq"] -} -``` - -:::warning -If `top_N`, `validators_power_cap`, or some other argument is not included in the proposal, then it is considered -that the default value is set for this argument. For example, if a Top 50% chain wants to only modify `validators_power_cap` -from 35 to 40, then the `ConsumerModificationProposal` would still need to include that `top_N` is 50. Otherwise -`top_N` would be set to its default value of 0, and the chain would become an Opt-In chain. - -To be **safe**, always include `top_N` and all the power shaping parameters in your `ConsumerModificationProposal`. -::: - -## `ChangeRewardDenomProposal` - -`ChangeRewardDenomProposal` is used to update the set of denoms accepted by the provider as rewards. -Note that a `ChangeRewardDenomProposal` will only be accepted on the provider chain if at least one of the `denomsToAdd` or `denomsToRemove` fields is populated with at least one denom. Also, a denom cannot be repeated in both sets. - -Minimal example: -```js -{ - "title": "Add uatom as a reward denom", - "description": "Here is more information about the proposal", - "denomsToAdd": ["uatom"], - "denomsToRemove": [] -} -``` - -Besides native provider denoms (e.g., `uatom` for the Cosmos Hub), please use the `ibc/*` denom trace format. -For example, for `untrn` transferred over the path `transfer/channel-569`, the denom trace can be queried using the following command: -```bash -> gaiad query ibc-transfer denom-hash transfer/channel-569/untrn -hash: 0025F8A87464A471E66B234C4F93AEC5B4DA3D42D7986451A059273426290DD5 -``` -Then use the resulting hash in the `ChangeRewardDenomProposal`, e.g., -```js -{ - "title": "Add untrn as a reward denom", - "description": "Here is more information about the proposal", - "denomsToAdd": ["ibc/0025F8A87464A471E66B234C4F93AEC5B4DA3D42D7986451A059273426290DD5"], - "denomsToRemove": [] -} -``` diff --git a/docs/docs/features/reward-distribution.md b/docs/docs/features/reward-distribution.md index cce5948221..e91bbe5818 100644 --- a/docs/docs/features/reward-distribution.md +++ b/docs/docs/features/reward-distribution.md @@ -16,14 +16,63 @@ This will preserve the `ibc denom` that may already be in use. This is especially important for standalone chains transitioning to become consumer chains. For more details, see the [changeover procedure](../consumer-development/changeover-procedure.md). -Once on the provider, the ICS rewards are distributed to the opted in validators and their delegators. +Once on the provider, the ICS rewards are distributed to the opted in validators and their delegators. +Note that rewards are **only** distributed to validators that are opted in and have been validating the consumer chain +for a continuous number of epochs (see `NumberOfEpochsToStartReceivingRewards` param). + To avoid spam, the provider must whitelist denoms before accepting them as ICS rewards. +## Reward distribution with power capping + +If a consumer chain has set a [validators-power cap](./power-shaping.md#capping-the-validator-powers), then the total received +rewards are distributed proportionally to validators with respect to their capped voting power on the consumer and **not** +with respect to their voting power on the provider. + +For example, assume that the provider chain has 4 validators, `A`, `B`, `C`, and `D` with voting powers 100, 1, 1, 1 respectively. +So, validators `A`, `B`, `C`, and `D` have ~97%, ~1%, ~1%, and ~1% of the total voting power of the provider respectively. +Now, assume that all those 4 validators opt in on a consumer chain that has set a validators-power cap set to 30%. +As a result, validators `A`, `B`, `C`, and `D` have their powers modified (only) on the consumer chain to +30, 25, 24, and 24 and now have ~29%, ~25%, ~23%, and ~23% of the total voting power of the consumer. +Roughly speaking, when rewards are sent from the consumer to the provider, validator `A` would get ~29% of the rewards +because it has 29% of the total voting power on the consumer, regardless of `A`'s 97% of the total power on the provider. +Similarly, validator `B` would get 25% of the rewards, etc. + + ## Whitelisting Reward Denoms The ICS distribution system works by allowing consumer chains to send rewards to a module address on the provider called the `ConsumerRewardsPool`. -Only whitelisted denoms are transferred from the `ConsumerRewardsPool` to the `FeePoolAddress`, to be distributed to validators and their delegators. -The whitelisted denoms can be adjusted through governance by sending a [`ChangeRewardDenomProposal`](./proposals.md#changerewarddenomproposal). +Only whitelisted denoms from the `ConsumerRewardsPool` are then distributed to validators and their delegators. + +The whitelisted denoms can be adjusted through governance by sending a `MsgChangeRewardDenoms` message. +`MsgChangeRewardDenoms` is used to update the set of denoms accepted by the provider as rewards. +Note that a `MsgChangeRewardDenoms` is only accepted on the provider chain if at least one of the `denomsToAdd` or `denomsToRemove` fields is populated with at least one denom. +Also, a denom cannot be repeated in both sets. + +An example of a `MsgChangeRewardDenoms` message: +```js +{ + "@type": "/interchain_security.ccv.provider.v1.MsgChangeRewardDenoms", + "denoms_to_add": [ + "ibc/42C7464F6415DC7529A8C7581FE0991C7A090D60176BC90998B1DAF75B868635" + ], + "denoms_to_remove": [], + "authority": "cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn" +} +``` + +Besides native provider denoms (e.g., `uatom` for the Cosmos Hub), please use the `ibc/*` denom trace format. +For example, for `untrn` transferred over the path `transfer/channel-569`, the denom trace can be queried using the following command: +```bash +> gaiad query ibc-transfer denom-hash transfer/channel-569/untrn +hash: 0025F8A87464A471E66B234C4F93AEC5B4DA3D42D7986451A059273426290DD5 +``` +Then use the resulting hash when adding or removing denoms. For example: + +```js + "denoms_to_add": [ + "ibc/0025F8A87464A471E66B234C4F93AEC5B4DA3D42D7986451A059273426290DD5" + ] +``` To query the list of whitelisted reward denoms on the Cosmos Hub, use the following command: ```bash @@ -42,4 +91,4 @@ denom_trace: base_denom: untrn path: transfer/channel-569 ``` -::: \ No newline at end of file +::: diff --git a/docs/docs/features/slashing.md b/docs/docs/features/slashing.md index 295e22cdca..ac69445b7e 100644 --- a/docs/docs/features/slashing.md +++ b/docs/docs/features/slashing.md @@ -1,5 +1,5 @@ --- -sidebar_position: 4 +sidebar_position: 3 --- # Consumer Initiated Slashing @@ -23,7 +23,7 @@ For preventing malicious consumer chains from harming the provider, [slash throt ## Equivocation Infractions Equivocation infractions are reported by external agents (e.g., relayers) that can submit to the provider evidence of light client or double signing attacks observed on a consumer chain. -The evidence is submitted by sending `MsgSubmitConsumerMisbehaviour` or `MsgSubmitConsumerDoubleVoting` transactions to the provider. +The evidence is submitted by sending `MsgSubmitConsumerMisbehaviour` or `MsgSubmitConsumerDoubleVoting` messages to the provider. When valid evidence is received, the malicious validators are slashed, jailed, and tombstoned on the provider. This is enabled through the _cryptographic verification of equivocation_ feature. For more details, see [ADR-005](../adrs/adr-005-cryptographic-equivocation-verification.md) and [ADR-013](../adrs/adr-013-equivocation-slashing.md). @@ -35,7 +35,7 @@ Below are two examples illustrating the process on Cosmos Hub. Use the following command to submit evidence of double signing attacks: ```bash -gaiad tx provider submit-consumer-double-voting [path/to/evidence.json] [path/to/infraction_header.json] --from node0 --home ../node0 --chain-id $CID +gaiad tx provider submit-consumer-double-voting [consumer-id] [path/to/evidence.json] [path/to/infraction_header.json] --from node0 --home ../node0 --chain-id $CID ```
@@ -253,7 +253,7 @@ gaiad tx provider submit-consumer-double-voting [path/to/evidence.json] [path/to Use the following command to submit evidence of light client attacks: ```bash -gaiad tx provider submit-consumer-misbehaviour [path/to/misbehaviour.json] --from node0 --home ../node0 --chain-id $CID +gaiad tx provider submit-consumer-misbehaviour [consumer-id] [path/to/misbehaviour.json] --from node0 --home ../node0 --chain-id $CID ```
diff --git a/docs/docs/frequently-asked-questions.md b/docs/docs/frequently-asked-questions.md index 3af79086c5..417353bc03 100644 --- a/docs/docs/frequently-asked-questions.md +++ b/docs/docs/frequently-asked-questions.md @@ -72,11 +72,11 @@ For more details, see the [democracy modules](./build/modules/04-democracy.md). ### Can a consumer chain modify its power shaping parameters? -Yes, by issuing a [`ConsumerModificationProposal`](./features/proposals.md#consumermodificationproposal). +Yes, by issuing a `MsgUpdateConsumer`. ### Can a Top N consumer chain become Opt-In or vice versa? -Yes, by issuing a [`ConsumerModificationProposal`](./features/proposals.md#consumermodificationproposal). +Yes, by issuing a `MsgUpdateConsumer` (see [Permissionless ICS](./features/permissionless.md#transform-an-opt-in-chain-to-top-n-and-vice-versa)) ## Validators @@ -88,7 +88,7 @@ An important note is that validator the top N% of the provider chain validator s ### Can validators opt in to an Opt-in chain after the spawn time if nobody else opted in? -No, the consumer chain will be removed if nobody opted in by the spawn time. At least one validator, regardless of its voting power, must opt in before the spawn time in order for the chain can start. +No, the consumer chain does not launch if nobody opted in by the spawn time. At least one validator, regardless of its voting power, must opt in before the spawn time in order for the chain can start. ### How does a validator know which consumers chains it has to validate? diff --git a/docs/docs/introduction/overview.md b/docs/docs/introduction/overview.md index 4f7a2daf9d..ad7e16c608 100644 --- a/docs/docs/introduction/overview.md +++ b/docs/docs/introduction/overview.md @@ -4,8 +4,10 @@ sidebar_position: 1 # Overview -Interchain Security (ICS) is an open source IBC application that allows a Cosmos proof-of-stake chain -- known as the _provider chain_ -- to share (parts of) its economic security with other chains -- known as _consumer chains_ -- that can use the stake locked on the provider as collateral for block production. -Consumer chains will therefore inherit security and decentralization from the provider. +Interchain Security (ICS) is an open source IBC application that allows Cosmos chains to lease their proof-of-stake security to one another. + +ICS allows anyone to launch a _consumer_ chain using a subset, or even the entire, validator set from the _provider_ chain. +This way, provider chain validators start validating the consumer chain as well and so consumer chains inherit security and decentralization from the provider. ## Why Interchain Security? diff --git a/docs/docs/introduction/terminology.md b/docs/docs/introduction/terminology.md index c5ab3b481c..85f09234b8 100644 --- a/docs/docs/introduction/terminology.md +++ b/docs/docs/introduction/terminology.md @@ -4,7 +4,8 @@ sidebar_position: 2 # Terminology -You may have heard of one or multiple buzzwords thrown around in the cosmos and wider crypto ecosystem such shared security, interchain security, replicated security, cross chain validation, and mesh security. These terms will be clarified below. +You may have heard of one or multiple buzzwords thrown around in the cosmos and wider crypto ecosystem such shared security, interchain security and replicated security. +These and other terms are clarified below. ## Shared Security @@ -33,11 +34,15 @@ A major feature of Interchain Security (also referred to as "Interchain Security This subset can be determined by the top N% validators by voting power, or by validators opting in to validate the consumer chain. PSS allows for more flexible security tradeoffs than Replicated Security. -### Permissionless ICS +## Permissionless ICS -A major feature of Interchain Security that enables users to permissionlessly launch opt-in consumer chains. -Given that validators are free to choose whether they want to run a given opt-in consumer chain, it is only natural to also enable projects to launch as opt-in consumer chains by simply submitting transactions to the provider chain and, thus, avoiding the need to go through the process of governance. -Note that TopN consumer chains will still need to go through governance. +[Permissionless ICS](../features/permissionless.md) is the latest version of ICS that allows to launch Opt In chains in +a permissionless way (i.e., without requiring a governance proposal). + +## Consumer Chain + +Chain that is secured by the validator set of the provider, instead of its own. +Interchain Security allows a subset of the provider chain's validator set to validate blocks on the consumer chain. ## Standalone Chain diff --git a/docs/docs/validators/joining-testnet.md b/docs/docs/validators/joining-testnet.md index d61be07e12..c07c3d6410 100644 --- a/docs/docs/validators/joining-testnet.md +++ b/docs/docs/validators/joining-testnet.md @@ -17,10 +17,6 @@ For general information about running cosmos-sdk based chains check out the [val ## Joining the provider chain -:::info -At present, all validators of the provider chain must also validate all governance approved consumer chains. The consumer chains cannot have a validator set different than the provider, which means they cannot introduce validators that are not also validating the provider chain. -::: - A comprehensive guide is available [here](https://github.com/cosmos/testnets/tree/master/interchain-security/provider). ## Initialization @@ -131,8 +127,6 @@ Additional scripts to setup your nodes are available [here](https://github.com/c ## Joining consumer chains :::tip -Once you reach the active set on the provider chain, you will be required to validate all available consumer chains. - We strongly recommend that you assign a separate key for each consumer chain. Check out this [guide](../features/key-assignment.md) to learn more about key assignment in interchain security. ::: @@ -174,7 +168,7 @@ Then, let the provider know which key you will be using for the consumer chain: ```bash # machine running the provider chain -gaiad tx provider assign-consensus-key consumer-1 '' --from --home $NODE_HOME --gas 900000 -b sync -y -o json +gaiad tx provider assign-consensus-key consumer-id '' --from --home $NODE_HOME --gas 900000 -b sync -y -o json ``` After this step, you are ready to copy the consumer genesis into your nodes's `/config` folder, start your consumer chain node and catch up to the network. diff --git a/docs/docs/validators/overview.md b/docs/docs/validators/overview.md index c1dbaea0e2..488c638018 100644 --- a/docs/docs/validators/overview.md +++ b/docs/docs/validators/overview.md @@ -14,43 +14,44 @@ Opt-In chain and also on the [power-shaping features](../features/power-shaping. to keep track of all the chains it has to validate. -Once a `ConsumerAdditionProposal` passes, relevant validators need to prepare to run the consumer chain binaries (these will be linked in their proposals) and set up validator nodes on governance-approved consumer chains. - Provider chain and consumer chains represent standalone chains that only share part of the validator set. -:::info -To validate a consumer chain and be eligible for rewards, validators are required to be in the active set of the provider chain (first 180 validators for Cosmos Hub). -::: - ## Startup sequence overview -Consumer chains cannot start and be secured by the validator set of the provider unless a `ConsumerAdditionProposal` is passed. -Each proposal contains defines a `spawn_time` - the timestamp when the consumer chain genesis is finalized and the consumer chain clients get initialized on the provider. +An Opt In consumer chain cannot start and be secured by the validator set of the provider unless there is at least +one validator opted in on the chain at `spawn_time`. +A Top N consumer chain cannot start unless the governance proposal containing the `MsgUpdateConsumer` has passed. + +Each chain defines a `spawn_time` - the timestamp when the consumer chain genesis is finalized and the consumer chain clients get initialized on the provider. :::tip Validators are required to run consumer chain binaries only after `spawn_time` has passed. ::: -Please note that any additional instructions pertaining to specific consumer chain launches will be available before spawn time. The chain start will be stewarded by the Cosmos Hub team and the teams developing their respective consumer chains. +Please note that any additional instructions pertaining to specific consumer chain launches will be available before spawn time. +The chain start will be stewarded by the Cosmos Hub team and the teams developing their respective consumer chains. The image below illustrates the startup sequence -![startup](../../figures/hypha-consumer-start-process.svg) +![startup](../../figures/hypha-consumer-start-process.png) ### 1. Consumer Chain init + 2. Genesis generation -Consumer chain team initializes the chain genesis.json and prepares binaries which will be listed in the `ConsumerAdditionProposal` +Consumer chain team initializes the chain genesis.json and prepares binaries which will be listed in the initialization +parameters of either `MsgCreateConsumer` or `MsgUpdateConsumer`. -### 3. Submit Proposal -Consumer chain team (or their advocates) submits a `ConsumerAdditionProposal`. +### 3. Create the chain on the provider +Consumer chain team (or their advocates) submits a `MsgCreateConsumer` message (and potentially later a +governance proposal with a `MsgUpdateConsumer` message if it is a Top N chain). The most important parameters for validators are: - `spawn_time` - the time after which the consumer chain must be started - `genesis_hash` - hash of the pre-ccv genesis.json; the file does not contain any validator info -> the information is available only after the proposal is passed and `spawn_time` is reached - `binary_hash` - hash of the consumer chain binary used to validate the software builds ### 4. CCV Genesis state generation -After reaching `spawn_time` the provider chain will automatically create the CCV validator states that will be used to populate the corresponding fields in the consumer chain `genesis.json`. The CCV validator set consists of the validator set on the provider at `spawn_time`. +After reaching `spawn_time` the provider chain will automatically create the CCV validator states that will be used to populate the corresponding fields in the consumer chain `genesis.json`. +The CCV validator set consists of the validator set on the provider at `spawn_time`. The state can be queried on the provider chain (in this case the Cosmos Hub): ```bash - gaiad query provider consumer-genesis -o json > ccvconsumer_genesis.json + gaiad query provider consumer-genesis -o json > ccvconsumer_genesis.json ``` This is used by the launch coordinator to create the final `genesis.json` that will be distributed to validators in step 5. diff --git a/docs/docs/validators/partial-set-security-for-validators.md b/docs/docs/validators/partial-set-security-for-validators.md index a87cf56482..ed5dcc89ff 100644 --- a/docs/docs/validators/partial-set-security-for-validators.md +++ b/docs/docs/validators/partial-set-security-for-validators.md @@ -21,24 +21,19 @@ to opt in to a consumer chain. In other words, validators can opt in, in both Op A validator can opt in to a consumer chain by issuing the following message: ```bash -interchain-security-pd tx provider opt-in +interchain-security-pd tx provider opt-in ``` where -- `consumer-chain-id` is the string identifier of the consumer chain the validator wants to opt in to; +- `consumer-id` is the consumer id identifier of the consumer chain the validator wants to opt in to; - `consumer-pub-key` corresponds to the public key the validator wants to use on the consumer chain, and it has the following format `{"@type":"/cosmos.crypto.ed25519.PubKey","key":""}`. -A validator can opt in to an existing consumer chain that is already running, or to a [proposed](../features/proposals.md) -consumer chain that is still being voted on. A validator can use the following command to retrieve the currently existing -consumer chains: +A validator can opt in to any active consumer chain, so a validator can opt in to a chain even before it launches. +A validator can use the following command to retrieve the currently existing consumer chains: ```bash interchain-security-pd query provider list-consumer-chains ``` -and this command to see the currently proposed consumer chains: -```bash -interchain-security-pd query provider list-proposed-consumer-chains -``` By setting the `consumer-pub-key`, a validator can both opt in to a chain and assign a public key on a consumer chain. Note that a validator can always [assign](../features/key-assignment.md) @@ -60,7 +55,7 @@ A validator can opt out from a consumer by issuing the following message: interchain-security-pd tx provider opt-out ``` where -- `consumer-chain-id` is the string identifier of the consumer chain. +- `consumer-id` is the consumer identifier of the consumer chain. The opting out mechanism has the following rules: @@ -80,11 +75,11 @@ If all validators opt out from an Opt-In chain, the chain will halt with a conse A validator can choose to set a different commission rate on each of the consumer chains. This can be done with the following command: ```bash -interchain-security-pd tx provider set-consumer-commission-rate +interchain-security-pd tx provider set-consumer-commission-rate ``` where -- `consumer-chain-id` is the string identifier of the consumer chain; +- `consumer-id` is the consumer identifier of the consumer chain; - `comission-rate` decimal in `[minRate, 1]` where `minRate` corresponds to the minimum commission rate set on the provider chain (see `min_commission_rate` in `interchain-security-pd query staking params`). @@ -136,17 +131,17 @@ they will not be opted in automatically. With the following query: ```bash -interchain-security-pd query provider consumer-opted-in-validators +interchain-security-pd query provider consumer-opted-in-validators ``` -we can see all the opted-in validators on `consumer-chain-id` that were manually or automatically opted in. +we can see all the opted-in validators on `consumer-id` that were manually or automatically opted in. ### How to retrieve all the consumer validators on a consumer chain? With the following query: ```bash -interchain-security-pd query provider consumer-validators +interchain-security-pd query provider consumer-validators ``` -we can see all the _consumer validators_ (i.e., validator set) of `consumer-chain-id`. The consumer validators are the +we can see all the _consumer validators_ (i.e., validator set) of `consumer-id`. The consumer validators are the ones that are currently (or in the future, see warning) validating the consumer chain. A _consumer validator_ is an opted-in validator but not vice versa. For example, an opted-in validator `V` might not be a consumer validator because `V` is denylisted or because `V` is removed due to a validator-set cap. @@ -160,6 +155,6 @@ point in time. Using the following query: ```bash -interchain-security-pd query provider validator-consumer-commission-rate +interchain-security-pd query provider validator-consumer-commission-rate ``` -we retrieve the commission rate set by validator with `provider-validator-address` address on `consumer-chain-id`. \ No newline at end of file +we retrieve the commission rate set by validator with `provider-validator-address` address on `consumer-id`. \ No newline at end of file diff --git a/docs/figures/hypha-consumer-start-process.excalidraw b/docs/figures/hypha-consumer-start-process.excalidraw new file mode 100644 index 0000000000..72a1b05445 --- /dev/null +++ b/docs/figures/hypha-consumer-start-process.excalidraw @@ -0,0 +1,42955 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 625, + "versionNonce": 428085652, + "index": "a0", + "isDeleted": false, + "id": "yni6ufiIjupgRLUMUtodE", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17569.758540314222, + "y": 3849.03770590686, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189496, + "height": 461.1889092330531, + "seed": 1129690874, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "bJlcDLF6Hj0skLDkWJjVF", + "type": "arrow" + }, + { + "id": "EGLtFlDZTCOeWEk1eLKe4", + "type": "arrow" + }, + { + "id": "d8jH5_d7g-tL-AplGJewj", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 687, + "versionNonce": 1034846636, + "index": "a1", + "isDeleted": false, + "id": "VwsWUejVCVU6_JucnD06d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17450.25178135069, + "y": 4745.5110179074145, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189496, + "height": 561.6740869867825, + "seed": 1504854455, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "RpAh5nWnvi5sb6LuYvIaJ", + "type": "arrow" + }, + { + "id": "-ATW2pTFX43jraZsZN_a7", + "type": "arrow" + }, + { + "id": "PY0CNIITNpd03N7t8AIx2", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 852, + "versionNonce": 464830228, + "index": "a2", + "isDeleted": false, + "id": "A-WEI91BlqkEZ-3o0Q9Ql", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19247.035526970234, + "y": 4596.985173962132, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189496, + "height": 561.6740869867825, + "seed": 608906678, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "fXtkeqB7wUuWkRl76lJhX", + "type": "arrow" + }, + { + "id": "-RJ1Y9YAegQHGrAZdH2AL", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 594, + "versionNonce": 910781484, + "index": "a3", + "isDeleted": false, + "id": "SZQdBff7bj0BVLFsdgwsf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 20, + "angle": 0, + "x": 17576.7993551365, + "y": 3853.3206062857766, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 218.9737339250205, + "height": 288.25098282712565, + "seed": 396765305, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "EGLtFlDZTCOeWEk1eLKe4", + "type": "arrow" + }, + { + "id": "bJlcDLF6Hj0skLDkWJjVF", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 398, + "versionNonce": 1047772308, + "index": "a4", + "isDeleted": false, + "id": "8IkfEamYioMv7N8s3YMHk", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22339.321931325507, + "y": 5177.558495779817, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 230.77296629806006, + "height": 261.14629697221335, + "seed": 1358900732, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 355, + "versionNonce": 1629685420, + "index": "a5", + "isDeleted": false, + "id": "_yCSZztHvSTcTqi4IWB9C", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21275.824615454763, + "y": 5085.678911048989, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 230.77296629806006, + "height": 353.4677012431165, + "seed": 792818044, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 98, + "versionNonce": 2071398932, + "index": "a6", + "isDeleted": false, + "id": "Pz3GB-LHrsQFCshJQsHcn", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1409.8680376227858, + "y": 831.2935561541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 139.00390625, + "height": 35, + "seed": 1220809404, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "k-v_kGv9TxBURoHaw6cBj" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 103, + "versionNonce": 1659195692, + "index": "a7", + "isDeleted": false, + "id": "k-v_kGv9TxBURoHaw6cBj", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1430.9100374396803, + "y": 836.2935561541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 96.91990661621094, + "height": 25, + "seed": 979542276, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "networking", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Pz3GB-LHrsQFCshJQsHcn", + "originalText": "networking", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 124, + "versionNonce": 632596372, + "index": "a8", + "isDeleted": false, + "id": "Ta8ECkukzVU_MIBTDTr-0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1411.1824907477858, + "y": 792.1255874041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 139.00390625, + "height": 35, + "seed": 95741244, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "eCqvLyaGX7VSN16m59wmC" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 148, + "versionNonce": 989481900, + "index": "a9", + "isDeleted": false, + "id": "eCqvLyaGX7VSN16m59wmC", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1433.3444933112623, + "y": 797.1255874041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 94.67990112304688, + "height": 25, + "seed": 886889916, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "consensus", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Ta8ECkukzVU_MIBTDTr-0", + "originalText": "consensus", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 199, + "versionNonce": 1096979732, + "index": "aA", + "isDeleted": false, + "id": "fr16SR32MAgvSWhvTvDhs", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1412.3895219977858, + "y": 664.9224624041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 139.00390625, + "height": 85, + "seed": 1290078468, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "_ka8OmC5tvpWUkMkwojnl" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 252, + "versionNonce": 1804334636, + "index": "aB", + "isDeleted": false, + "id": "_ka8OmC5tvpWUkMkwojnl", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1430.4315065558912, + "y": 669.9224624041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 102.91993713378906, + "height": 75, + "seed": 149244036, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "state \nmachine = \napplication", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "fr16SR32MAgvSWhvTvDhs", + "originalText": "state machine = application", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 114, + "versionNonce": 1542902420, + "index": "aC", + "isDeleted": false, + "id": "pss53vR64KCXwgmKR_g3O", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1475.1492876227858, + "y": 748.9966811541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1.234375, + "height": 45.08203125, + "seed": 1460014140, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -0.92578125, + 12.6875 + ], + [ + -1.234375, + 45.08203125 + ] + ] + }, + { + "type": "text", + "version": 107, + "versionNonce": 562319532, + "index": "aD", + "isDeleted": false, + "id": "5jX6HNlROpU3sXXnCFgne", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1493.5321001227858, + "y": 763.5708999041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 44.91996765136719, + "height": 25, + "seed": 919671356, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "ABCi", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "ABCi", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 263, + "versionNonce": 1680302100, + "index": "aE", + "isDeleted": false, + "id": "pZTxOOzjmxFJh2Em-Gdei", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6297.637568872786, + "y": 693.3833999041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 308.04296875, + "height": 124.97265625, + "seed": 158234576, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "cHox4rbhqbzmveN68uWry" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 113, + "versionNonce": 1552767788, + "index": "aF", + "isDeleted": false, + "id": "cHox4rbhqbzmveN68uWry", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6401.179095667219, + "y": 730.8697280291044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 100.95991516113281, + "height": 50, + "seed": 632130000, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Hub\nCometBFT", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "pZTxOOzjmxFJh2Em-Gdei", + "originalText": "Hub\nCometBFT", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 373, + "versionNonce": 32128404, + "index": "aG", + "isDeleted": false, + "id": "ki98iL3vVr9s9SV0rgJ22", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6295.975459497786, + "y": 475.4712905291044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 308.04296875, + "height": 124.97265625, + "seed": 2087146800, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "h7g7ASSMnZeWkPn1Ck2A6" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 96, + "versionNonce": 386995628, + "index": "aH", + "isDeleted": false, + "id": "h7g7ASSMnZeWkPn1Ck2A6", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6433.5769609626295, + "y": 525.4576186541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 32.8399658203125, + "height": 25, + "seed": 92263216, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "App", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ki98iL3vVr9s9SV0rgJ22", + "originalText": "App", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 155, + "versionNonce": 1853188884, + "index": "aI", + "isDeleted": false, + "id": "7ndOGSpPv7CwVtRByI_2e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6454.172725122786, + "y": 602.7427749041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0.53515625, + "height": 89.62890625, + "seed": 618249520, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -0.53515625, + 89.62890625 + ] + ] + }, + { + "type": "rectangle", + "version": 264, + "versionNonce": 1849262124, + "index": "aJ", + "isDeleted": false, + "id": "U4oKWgk662reNbvUUQeym", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6318.586787622786, + "y": 782.4654311541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 134.96484375, + "height": 35, + "seed": 1095325648, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "VsfVuR0qClJ5Y3EprLBH4" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 133, + "versionNonce": 1279191188, + "index": "aK", + "isDeleted": false, + "id": "VsfVuR0qClJ5Y3EprLBH4", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6349.299251001692, + "y": 787.4654311541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 73.5399169921875, + "height": 25, + "seed": 2089991120, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "mempool", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "U4oKWgk662reNbvUUQeym", + "originalText": "mempool", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 244, + "versionNonce": 1240505004, + "index": "aL", + "isDeleted": false, + "id": "LMB8Y39XN3tUlDDZ9YqxR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6263.051631372786, + "y": 631.2974624041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 172.079833984375, + "height": 25, + "seed": 1217163568, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "prepare proposal ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "prepare proposal ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 335, + "versionNonce": 2130490900, + "index": "aM", + "isDeleted": false, + "id": "9ITrG7vU1xJKTEsNslb0h", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6486.042964380598, + "y": 633.1490249041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 172.17982482910156, + "height": 25, + "seed": 54851024, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "process proposal ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "process proposal ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 491, + "versionNonce": 81814828, + "index": "aN", + "isDeleted": false, + "id": "vVhsALxTiR8RhSYGxkDBn", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6682.950000208235, + "y": 634.4654311541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 108.79989624023438, + "height": 25, + "seed": 1434416944, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "extendVote", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "extendVote", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 470, + "versionNonce": 61133716, + "index": "aO", + "isDeleted": false, + "id": "TQ7oRMF2WDdkb-wuFGez5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7045.573115747786, + "y": 476.5962905291044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 308.04296875, + "height": 124.97265625, + "seed": 1312887760, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "mmdZiuCjBstfE1VCOyU5w" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 193, + "versionNonce": 343072684, + "index": "aP", + "isDeleted": false, + "id": "mmdZiuCjBstfE1VCOyU5w", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7183.1746172126295, + "y": 526.5826186541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 32.8399658203125, + "height": 25, + "seed": 42867152, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "App", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "TQ7oRMF2WDdkb-wuFGez5", + "originalText": "App", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 390, + "versionNonce": 1215119636, + "index": "aQ", + "isDeleted": false, + "id": "cWVoOpe_p5tcpkIj4oZ6o", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7045.420771997786, + "y": 694.3150405291044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 308.04296875, + "height": 124.97265625, + "seed": 997140944, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "bH6QHcJa8qdIsStySXD28" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 260, + "versionNonce": 819071532, + "index": "aR", + "isDeleted": false, + "id": "bH6QHcJa8qdIsStySXD28", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7148.962298792219, + "y": 731.8013686541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 100.95991516113281, + "height": 50, + "seed": 227110864, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Neutron\nCometBFT", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "cWVoOpe_p5tcpkIj4oZ6o", + "originalText": "Neutron\nCometBFT", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 347, + "versionNonce": 80477844, + "index": "aS", + "isDeleted": false, + "id": "xU6RekJi4I5Moi7HZ_ksL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7202.026760332012, + "y": 600.8345403760666, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0.53515625, + "height": 89.62890625, + "seed": 1079961392, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -0.53515625, + 89.62890625 + ] + ] + }, + { + "type": "rectangle", + "version": 338, + "versionNonce": 2095572140, + "index": "aT", + "isDeleted": false, + "id": "z2orkhnLzOToDodPghuz_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7064.080928247786, + "y": 784.0240249041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 134.96484375, + "height": 35, + "seed": 206891824, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "YRjBmwsBepxslrKOjXqbV" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 207, + "versionNonce": 293014548, + "index": "aU", + "isDeleted": false, + "id": "YRjBmwsBepxslrKOjXqbV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7094.793391626692, + "y": 789.0240249041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 73.5399169921875, + "height": 25, + "seed": 854590768, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "mempool", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "z2orkhnLzOToDodPghuz_", + "originalText": "mempool", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "version": 377, + "versionNonce": 777940780, + "index": "aV", + "isDeleted": false, + "id": "oT-5zZhyeAa60MncvhCI7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6510.840693872786, + "y": 830.8833999041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113, + "height": 85, + "seed": 750650832, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "_s0T4pqnv4zSsdETecTkI" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 507, + "versionNonce": 1080322452, + "index": "aW", + "isDeleted": false, + "id": "_s0T4pqnv4zSsdETecTkI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6536.239189727445, + "y": 848.3313617036762, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 62.29994201660156, + "height": 50, + "seed": 69791024, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Inform\nal", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "oT-5zZhyeAa60MncvhCI7", + "originalText": "Informal", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "version": 462, + "versionNonce": 899656108, + "index": "aX", + "isDeleted": false, + "id": "cY5JEUIfPNKr_k0efHsW2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7033.922725122786, + "y": 827.7232436541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113, + "height": 85, + "seed": 702175536, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "kwrErrMX1TakXyn_AV0CX" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 593, + "versionNonce": 885659412, + "index": "aY", + "isDeleted": false, + "id": "kwrErrMX1TakXyn_AV0CX", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7059.321220977445, + "y": 845.1712054536762, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 62.29994201660156, + "height": 50, + "seed": 429372208, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Inform\nal", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "cY5JEUIfPNKr_k0efHsW2", + "originalText": "Informal", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 195, + "versionNonce": 1708495916, + "index": "aZ", + "isDeleted": false, + "id": "7t7fBCm62J-cZ8tLNZwp0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6741.168818872786, + "y": 752.0591811541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 170.38281249999997, + "height": 112.91406250000001, + "seed": 206525904, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 224, + "versionNonce": 991827092, + "index": "aa", + "isDeleted": false, + "id": "PDtdHdHENslF7S5hP5_uQ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6753.723506372786, + "y": 772.8794936541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 137.33987426757812, + "height": 75, + "seed": 812740912, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Atomic bundle\ntx1 (Hub)\ntx2 (Neutron)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Atomic bundle\ntx1 (Hub)\ntx2 (Neutron)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 179, + "versionNonce": 485109420, + "index": "ab", + "isDeleted": false, + "id": "b0BS0P_cnASYemWb_qcen", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6627.907100122786, + "y": 872.4068374041044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 410.1484375, + "height": 1.76953125, + "seed": 1964830000, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 410.1484375, + -1.76953125 + ] + ] + }, + { + "type": "freedraw", + "version": 325, + "versionNonce": 555115028, + "index": "ac", + "isDeleted": false, + "id": "HgCCkxqR5gKY6UCYHrQkZ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6891.352412622786, + "y": 699.1138686541044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 244.65234375, + "height": 225.8125, + "seed": 159557424, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.53515625, + -0.26953125 + ], + [ + 0.30078125, + -0.26953125 + ], + [ + -0.640625, + -0.26953125 + ], + [ + -1.58203125, + -0.26953125 + ], + [ + -2.94921875, + -0.26953125 + ], + [ + -3.890625, + -0.26953125 + ], + [ + -5.2578125, + -0.26953125 + ], + [ + -7.640625, + -0.26953125 + ], + [ + -9.48828125, + -0.26953125 + ], + [ + -12.46484375, + -0.26953125 + ], + [ + -15.44140625, + -0.26953125 + ], + [ + -19.76953125, + -0.26953125 + ], + [ + -27.47265625, + -0.26953125 + ], + [ + -33.375, + -0.26953125 + ], + [ + -42.0625, + -0.26953125 + ], + [ + -45.6875, + -0.26953125 + ], + [ + -63.76953125, + -0.26953125 + ], + [ + -79.10546875, + 0.3203125 + ], + [ + -86.80859375, + 1.50390625 + ], + [ + -92.7109375, + 3.109375 + ], + [ + -99.484375, + 4.80078125 + ], + [ + -105.38671875, + 6.40625 + ], + [ + -112.16015625, + 8.66015625 + ], + [ + -116.48828125, + 10.58203125 + ], + [ + -122.36328125, + 12.71484375 + ], + [ + -127.73046875, + 15.39453125 + ], + [ + -132.81640625, + 17.42578125 + ], + [ + -137.39453125, + 19.96484375 + ], + [ + -142.76171875, + 22.64453125 + ], + [ + -146.609375, + 25.046875 + ], + [ + -151.1875, + 27.5859375 + ], + [ + -154.5546875, + 30.46875 + ], + [ + -157.7265625, + 32.73046875 + ], + [ + -160.8984375, + 34.9921875 + ], + [ + -163.6171875, + 37.70703125 + ], + [ + -165.7421875, + 40.25390625 + ], + [ + -168.4609375, + 42.96875 + ], + [ + -170.1640625, + 45.515625 + ], + [ + -171.2734375, + 46.9921875 + ], + [ + -172.9765625, + 49.5390625 + ], + [ + -174.56640625, + 51.5234375 + ], + [ + -175.7578125, + 53.90234375 + ], + [ + -176.5, + 55.74609375 + ], + [ + -177.2421875, + 57.58984375 + ], + [ + -177.984375, + 59.43359375 + ], + [ + -178.328125, + 60.796875 + ], + [ + -178.69921875, + 62.640625 + ], + [ + -179.04296875, + 64.00390625 + ], + [ + -179.04296875, + 66.9765625 + ], + [ + -179.04296875, + 71.79296875 + ], + [ + -179.04296875, + 77.73828125 + ], + [ + -179.04296875, + 79.58203125 + ], + [ + -179.04296875, + 84.6640625 + ], + [ + -178.59375, + 88.28515625 + ], + [ + -178.59375, + 91.2578125 + ], + [ + -178.1484375, + 94.83203125 + ], + [ + -177.7265625, + 97.8046875 + ], + [ + -177.7265625, + 101.42578125 + ], + [ + -177.3046875, + 104.3984375 + ], + [ + -176.85546875, + 108.01953125 + ], + [ + -176.85546875, + 111.640625 + ], + [ + -176.40625, + 115.26171875 + ], + [ + -175.95703125, + 118.8828125 + ], + [ + -175.53515625, + 121.85546875 + ], + [ + -175.0859375, + 125.4765625 + ], + [ + -174.74609375, + 126.83984375 + ], + [ + -174.32421875, + 129.8125 + ], + [ + -173.90234375, + 132.78515625 + ], + [ + -173.5078125, + 135.1640625 + ], + [ + -173.1171875, + 137.52734375 + ], + [ + -172.75, + 139.37109375 + ], + [ + -172.35546875, + 141.75 + ], + [ + -172.35546875, + 143.59375 + ], + [ + -171.98828125, + 145.4375 + ], + [ + -171.62109375, + 147.28125 + ], + [ + -171.62109375, + 149.125 + ], + [ + -171.25390625, + 150.96875 + ], + [ + -170.9140625, + 152.33203125 + ], + [ + -170.57421875, + 153.6953125 + ], + [ + -170.234375, + 155.05859375 + ], + [ + -169.89453125, + 156.421875 + ], + [ + -169.21484375, + 159.1484375 + ], + [ + -168.875, + 160.51171875 + ], + [ + -168.53515625, + 161.875 + ], + [ + -167.85546875, + 163.23828125 + ], + [ + -167.17578125, + 164.6015625 + ], + [ + -166.80859375, + 166.4453125 + ], + [ + -166.12890625, + 167.80859375 + ], + [ + -165.44921875, + 169.171875 + ], + [ + -164.76953125, + 170.53125 + ], + [ + -163.6640625, + 172.0078125 + ], + [ + -162.92578125, + 173.8515625 + ], + [ + -161.2265625, + 176.3984375 + ], + [ + -160.48828125, + 178.2421875 + ], + [ + -159.3828125, + 180.0859375 + ], + [ + -158.76171875, + 181.01953125 + ], + [ + -157.57421875, + 183.3984375 + ], + [ + -156.8359375, + 185.2421875 + ], + [ + -155.73046875, + 187.0859375 + ], + [ + -154.9921875, + 188.9296875 + ], + [ + -154.25390625, + 190.7734375 + ], + [ + -153.515625, + 192.6171875 + ], + [ + -152.77734375, + 194.4609375 + ], + [ + -152.0390625, + 196.3046875 + ], + [ + -150.93359375, + 198.1484375 + ], + [ + -150.1953125, + 199.9921875 + ], + [ + -149.40234375, + 202.37109375 + ], + [ + -148.296875, + 204.21484375 + ], + [ + -147.55859375, + 206.05859375 + ], + [ + -146.8203125, + 207.90234375 + ], + [ + -145.6328125, + 210.28125 + ], + [ + -144.89453125, + 212.125 + ], + [ + -144.1015625, + 214.50390625 + ], + [ + -143.36328125, + 216.34765625 + ], + [ + -141.83203125, + 220.5703125 + ], + [ + -140.7265625, + 222.4140625 + ], + [ + -140.38671875, + 223.77734375 + ], + [ + -139.76171875, + 224.71484375 + ], + [ + -139.4765625, + 225.28515625 + ], + [ + -139.21875, + 225.54296875 + ], + [ + -137.79296875, + 225.54296875 + ], + [ + -134.171875, + 225.08984375 + ], + [ + -130.55078125, + 225.08984375 + ], + [ + -126.2265625, + 224.60546875 + ], + [ + -116.59375, + 223.3203125 + ], + [ + -105.7734375, + 223.3203125 + ], + [ + -78.1328125, + 223.3203125 + ], + [ + -62.35546875, + 223.3203125 + ], + [ + -55.5859375, + 223.3203125 + ], + [ + -42.3984375, + 223.3203125 + ], + [ + -32.67578125, + 223.3203125 + ], + [ + -23.9921875, + 222.69921875 + ], + [ + -16.29296875, + 220.921875 + ], + [ + -10.39453125, + 219.84765625 + ], + [ + -4.49609375, + 217.69921875 + ], + [ + 0.5859375, + 215.6640625 + ], + [ + 5.94921875, + 212.98046875 + ], + [ + 11.3125, + 210.296875 + ], + [ + 16.67578125, + 207.078125 + ], + [ + 21.44921875, + 203.359375 + ], + [ + 27.08984375, + 199.40625 + ], + [ + 32.16796875, + 194.890625 + ], + [ + 36.6796875, + 189.80859375 + ], + [ + 41.19140625, + 184.7265625 + ], + [ + 45.703125, + 179.64453125 + ], + [ + 49.26171875, + 175.57421875 + ], + [ + 52.3125, + 171.50390625 + ], + [ + 55.36328125, + 167.43359375 + ], + [ + 57.625, + 164.26171875 + ], + [ + 60.02734375, + 160.4140625 + ], + [ + 61.30078125, + 157.4375 + ], + [ + 62.65625, + 153.8125 + ], + [ + 64.4296875, + 146.109375 + ], + [ + 64.9921875, + 139.3359375 + ], + [ + 65.609375, + 130.6484375 + ], + [ + 65.609375, + 126.3203125 + ], + [ + 65.609375, + 117.6328125 + ], + [ + 65.609375, + 109.9296875 + ], + [ + 65.609375, + 104.02734375 + ], + [ + 63.03515625, + 93.0390625 + ], + [ + 61.58984375, + 88.7109375 + ], + [ + 59.046875, + 84.1328125 + ], + [ + 56.640625, + 80.28515625 + ], + [ + 53.5859375, + 76.21484375 + ], + [ + 50.69921875, + 72.84765625 + ], + [ + 47.8125, + 69.48046875 + ], + [ + 45.09375, + 66.76171875 + ], + [ + 42.20703125, + 63.39453125 + ], + [ + 39.48828125, + 60.67578125 + ], + [ + 37.37109375, + 58.13671875 + ], + [ + 35.24609375, + 55.5859375 + ], + [ + 33.12109375, + 53.03515625 + ], + [ + 32.01171875, + 51.5546875 + ], + [ + 30.421875, + 49.56640625 + ], + [ + 29.3125, + 47.71875 + ], + [ + 27.83203125, + 46.23828125 + ], + [ + 26.72265625, + 44.7578125 + ], + [ + 25.6953125, + 43.73046875 + ], + [ + 24.66796875, + 42.703125 + ], + [ + 23.7265625, + 42.07421875 + ], + [ + 22.78515625, + 41.4453125 + ], + [ + 21.7578125, + 40.41796875 + ], + [ + 20.390625, + 39.734375 + ], + [ + 19.44921875, + 39.10546875 + ], + [ + 18.08203125, + 38.421875 + ], + [ + 16.71484375, + 37.73828125 + ], + [ + 15.6875, + 36.7109375 + ], + [ + 14.3203125, + 36.02734375 + ], + [ + 13.37890625, + 35.3984375 + ], + [ + 12.75, + 34.45703125 + ], + [ + 11.72265625, + 33.4296875 + ], + [ + 11.09375, + 32.48828125 + ], + [ + 10.06640625, + 31.4609375 + ], + [ + 8.015625, + 29.41015625 + ], + [ + 5.96484375, + 27.359375 + ], + [ + 5.0234375, + 26.73046875 + ], + [ + 4.08203125, + 26.1015625 + ], + [ + 3.140625, + 25.78515625 + ], + [ + 2.203125, + 25.16015625 + ], + [ + 1.62890625, + 25.16015625 + ], + [ + 1.0546875, + 24.87109375 + ], + [ + 0.48046875, + 24.58203125 + ], + [ + -0.09375, + 24.29296875 + ], + [ + -0.66796875, + 24.29296875 + ], + [ + -0.9296875, + 24.03125 + ], + [ + -1.50390625, + 23.45703125 + ], + [ + -2.078125, + 23.16796875 + ], + [ + -2.65234375, + 22.59375 + ], + [ + -3.2265625, + 22.01953125 + ], + [ + -4.25390625, + 20.9921875 + ], + [ + -4.828125, + 20.41796875 + ], + [ + -5.40234375, + 19.84375 + ], + [ + -5.97265625, + 19.2734375 + ], + [ + -6.546875, + 18.69921875 + ], + [ + -7.12109375, + 18.41015625 + ], + [ + -7.6953125, + 17.8359375 + ], + [ + -8.26953125, + 17.546875 + ], + [ + -8.53125, + 17.28515625 + ], + [ + -9.10546875, + 16.7109375 + ], + [ + -9.6796875, + 16.421875 + ], + [ + -10.25390625, + 16.1328125 + ], + [ + -10.54296875, + 15.55859375 + ], + [ + -11.1171875, + 15.26953125 + ], + [ + -11.37890625, + 15.0078125 + ], + [ + -11.640625, + 14.74609375 + ], + [ + -12.1640625, + 14.22265625 + ], + [ + -12.42578125, + 14.22265625 + ], + [ + -12.6875, + 13.9609375 + ], + [ + -12.93359375, + 13.71484375 + ], + [ + -12.93359375, + 13.71484375 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "text", + "version": 636, + "versionNonce": 1804040492, + "index": "ad", + "isDeleted": false, + "id": "1eX62niuiajlQH3R-E2ck", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6210.871943872786, + "y": 943.0318374041044, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 1102.59912109375, + "height": 125, + "seed": 341891536, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "1. block construction (PREPARE PROPOSAL)\n At PROCESS PROPOSAL all would have access to the block proposed.\n2. block execution (triggered by PROCESS PROPOSAL ... start executing speculatively ... )\n3. After optimistically executing (e.g., process proposal) the 2 validators have to communicate again ... to see\nthat the other side has done the same ... And beffore the precommits ... /finalize block. ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "1. block construction (PREPARE PROPOSAL)\n At PROCESS PROPOSAL all would have access to the block proposed.\n2. block execution (triggered by PROCESS PROPOSAL ... start executing speculatively ... )\n3. After optimistically executing (e.g., process proposal) the 2 validators have to communicate again ... to see\nthat the other side has done the same ... And beffore the precommits ... /finalize block. ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 124, + "versionNonce": 229179284, + "index": "ae", + "isDeleted": false, + "id": "UCC9M6Scq-d05lfl4E_MS", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6405.950068872786, + "y": 2629.2662124041044, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 208.9609375, + "height": 123.19140625, + "seed": 1336982058, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "xVNGNVVI03L74CQjrT6G2", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 109, + "versionNonce": 1024947116, + "index": "af", + "isDeleted": false, + "id": "vXuvemefRloIAcTlq19Ba", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6478.602412622786, + "y": 2666.5044936541044, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 23.1199951171875, + "height": 25, + "seed": 1072046954, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "M2zDzfrTZDohYUlH2GgTr", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "A ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "A ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 245, + "versionNonce": 1493953812, + "index": "ag", + "isDeleted": false, + "id": "73DFX2YUPaQUPBJSYVdk4", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6758.864131372786, + "y": 2633.9361342791044, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 208.9609375, + "height": 85, + "seed": 1296269238, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "sTujY3gQbOo3UWcu3sDzN" + }, + { + "id": "xVNGNVVI03L74CQjrT6G2", + "type": "arrow" + }, + { + "id": "Z-SMoWtXIUnKOIznQNzd5", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 277, + "versionNonce": 2143559212, + "index": "ah", + "isDeleted": false, + "id": "sTujY3gQbOo3UWcu3sDzN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6768.684665125227, + "y": 2638.9361342791044, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 189.3198699951172, + "height": 75, + "seed": 206989994, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "B\nmint them again ... \n", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "73DFX2YUPaQUPBJSYVdk4", + "originalText": "B\nmint them again ... \n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 246, + "versionNonce": 1689594516, + "index": "ai", + "isDeleted": false, + "id": "-RmQLcQgHwt1qOf9_4LXZ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7174.567256372786, + "y": 2627.0728530291044, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 252, + "height": 197, + "seed": 985219574, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "34bw-iTT3vc6yEx-373fa" + }, + { + "id": "Z-SMoWtXIUnKOIznQNzd5", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 244, + "versionNonce": 1282898092, + "index": "aj", + "isDeleted": false, + "id": "34bw-iTT3vc6yEx-373fa", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7294.127261560774, + "y": 2700.5728530291044, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 12.879989624023438, + "height": 50, + "seed": 1768526646, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "C\n", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "-RmQLcQgHwt1qOf9_4LXZ", + "originalText": "C\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 302, + "versionNonce": 1935325204, + "index": "ak", + "isDeleted": false, + "id": "xVNGNVVI03L74CQjrT6G2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6622.875850122787, + "y": 2665.933377254522, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 126.36328124999909, + "height": 4.105752756626316, + "seed": 2038842550, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "UCC9M6Scq-d05lfl4E_MS", + "focus": -0.3273558563351374, + "gap": 7.9648437500009095, + "fixedPoint": null + }, + "endBinding": { + "elementId": "73DFX2YUPaQUPBJSYVdk4", + "focus": 0.39908678694865685, + "gap": 9.625, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 126.36328124999909, + -4.105752756626316 + ] + ] + }, + { + "type": "arrow", + "version": 505, + "versionNonce": 249266988, + "index": "al", + "isDeleted": false, + "id": "Z-SMoWtXIUnKOIznQNzd5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6981.11584938205, + "y": 2675.2120090548783, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 173.5703125, + "height": 20.566964129719054, + "seed": 621484214, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "73DFX2YUPaQUPBJSYVdk4", + "focus": -0.2765886862448976, + "gap": 13.29078050926455, + "fixedPoint": null + }, + "endBinding": { + "elementId": "-RmQLcQgHwt1qOf9_4LXZ", + "focus": 0.11026967230213866, + "gap": 19.88109449073545, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 173.5703125, + 20.566964129719054 + ] + ] + }, + { + "type": "arrow", + "version": 132, + "versionNonce": 15898004, + "index": "am", + "isDeleted": false, + "id": "M2zDzfrTZDohYUlH2GgTr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6501.973506372786, + "y": 2688.9888686541044, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 0, + "height": 0, + "seed": 1873084586, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "wYfRWWjRGh2oVr0qeRS6f" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "vXuvemefRloIAcTlq19Ba", + "focus": 0, + "gap": 1, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + { + "type": "text", + "version": 212, + "versionNonce": 760888748, + "index": "an", + "isDeleted": false, + "id": "wYfRWWjRGh2oVr0qeRS6f", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6402.87358419261, + "y": 2638.9888686541044, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 198.19984436035156, + "height": 100, + "seed": 1978888566, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "\n\n100 atoms escrowed\nhere", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "M2zDzfrTZDohYUlH2GgTr", + "originalText": "\n\n100 atoms escrowed\nhere", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 198, + "versionNonce": 447922964, + "index": "ao", + "isDeleted": false, + "id": "xQY-lCMPdk6Em_v2ktVNO", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7060.840693872786, + "y": 2557.0904311541044, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 0.86328125, + "height": 382.6484375, + "seed": 1047202550, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -0.86328125, + 382.6484375 + ] + ] + }, + { + "type": "rectangle", + "version": 336, + "versionNonce": 824027180, + "index": "ap", + "isDeleted": false, + "id": "ARPMRHbuk9Nx24UoQ_GyY", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6469.911006372786, + "y": 1972.5877456072294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 485953728, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "sPlDoWy5FE8ZKxLPqNble" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 183, + "versionNonce": 923877524, + "index": "aq", + "isDeleted": false, + "id": "sPlDoWy5FE8ZKxLPqNble", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6495.040355127669, + "y": 1977.5877456072294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 327067840, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HCi\ntimestamp\n10:00:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ARPMRHbuk9Nx24UoQ_GyY", + "originalText": "HCi\ntimestamp\n10:00:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 198, + "versionNonce": 1846526636, + "index": "ar", + "isDeleted": false, + "id": "ZcsC3RkHJ5hhsVzHd-F3A", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6509.028193872786, + "y": 1820.2283706072294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 84.87991333007812, + "height": 50, + "seed": 1775639360, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "consumer\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 147, + "versionNonce": 230952468, + "index": "as", + "isDeleted": false, + "id": "P5B-0bqriHrJukPlwjbgg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6785.075068872786, + "y": 1816.8025893572294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 75.29991149902344, + "height": 50, + "seed": 1548386496, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "provider\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 428, + "versionNonce": 718966060, + "index": "at", + "isDeleted": false, + "id": "oNYBpbNNw9K6XuCQacol6", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6737.612178247786, + "y": 1914.6307143572294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 358902592, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "zR2KGFFZm9EWMbaqLtdxB" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 261, + "versionNonce": 1874930580, + "index": "au", + "isDeleted": false, + "id": "zR2KGFFZm9EWMbaqLtdxB", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6762.741527002669, + "y": 1919.6307143572294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 473236288, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HPx\ntimestamp\n09:59:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "oNYBpbNNw9K6XuCQacol6", + "originalText": "HPx\ntimestamp\n09:59:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 495, + "versionNonce": 1223165868, + "index": "av", + "isDeleted": false, + "id": "h4aVDJyPNXObAwhjUwPAn", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6738.635615747786, + "y": 2040.8416518572294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1089226944, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "vK5ByfulrCrMig3vPmwJc" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 319, + "versionNonce": 524196116, + "index": "aw", + "isDeleted": false, + "id": "vK5ByfulrCrMig3vPmwJc", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6763.764964502669, + "y": 2045.8416518572294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 367341760, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HPy\ntimestamp\n10:01:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "h4aVDJyPNXObAwhjUwPAn", + "originalText": "HPy\ntimestamp\n10:01:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 220, + "versionNonce": 1818374700, + "index": "ax", + "isDeleted": false, + "id": "Fy3-8TGi7nunXFONYgLOg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6618.028193872786, + "y": 1971.2361831072294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 125.28125, + "height": 55.5859375, + "seed": 649226432, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 125.28125, + -55.5859375 + ] + ] + }, + { + "type": "line", + "version": 430, + "versionNonce": 665998996, + "index": "ay", + "isDeleted": false, + "id": "IVPDGVu43Uf5EMjKzYJqn", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6616.409414332724, + "y": 2035.4305672768078, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 128.5078125, + "height": 86.96875, + "seed": 949565632, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 128.5078125, + 86.96875 + ] + ] + }, + { + "type": "text", + "version": 139, + "versionNonce": 607325356, + "index": "az", + "isDeleted": false, + "id": "1s6mi8MVAFpHDv-pvyM7_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6795.012568872786, + "y": 1997.1229018572294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 1096665280, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 297, + "versionNonce": 902980628, + "index": "b00", + "isDeleted": false, + "id": "_JwYaSsfBy187KRl5__qv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6401.871943872786, + "y": 1883.9588393572294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1.15625, + "height": 201.69140625, + "seed": 517184320, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -1.15625, + 201.69140625 + ] + ] + }, + { + "type": "text", + "version": 202, + "versionNonce": 302290732, + "index": "b01", + "isDeleted": false, + "id": "KVJkqQyz80uYXKg9F53Gr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6348.496943872786, + "y": 1950.5877456072294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 39.27995300292969, + "height": 25, + "seed": 1204543680, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "time", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 143, + "versionNonce": 1872019860, + "index": "b02", + "isDeleted": false, + "id": "AgC6Ng9sQ8Z3uZGEm80bx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 6673.348506372786, + "y": 1698.0604018572294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 534.42578125, + "seed": 1164456128, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 534.42578125 + ] + ] + }, + { + "type": "rectangle", + "version": 339, + "versionNonce": 306237868, + "index": "b03", + "isDeleted": false, + "id": "a3BFcA0v1cdiyqmCRPE8o", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7422.054561060286, + "y": 1932.6373012885124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1421677376, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "8HQ8UUHXZjlnTI2mOUXyg" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 186, + "versionNonce": 1278177044, + "index": "b04", + "isDeleted": false, + "id": "8HQ8UUHXZjlnTI2mOUXyg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7447.183909815169, + "y": 1937.6373012885124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 976792384, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HCi\ntimestamp\n10:00:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "a3BFcA0v1cdiyqmCRPE8o", + "originalText": "HCi\ntimestamp\n10:00:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 487, + "versionNonce": 1678883884, + "index": "b05", + "isDeleted": false, + "id": "uo5AOlSWAqKCtk0-Bv04l", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7451.120967310286, + "y": 1521.7583950385124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 84.87991333007812, + "height": 50, + "seed": 478233408, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "consumer\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 410, + "versionNonce": 1813539988, + "index": "b06", + "isDeleted": false, + "id": "ylIoAaxBfv04PucD1ZfkV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7726.027217310286, + "y": 1525.0591762885124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 75.29991149902344, + "height": 50, + "seed": 1509350208, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "provider\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 431, + "versionNonce": 1365333676, + "index": "b07", + "isDeleted": false, + "id": "8B7k1f9yi67tmabfllQEP", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7689.513545435286, + "y": 1875.1607387885124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 83456832, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "4sVFueYSS1YHVMisRcVLZ" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 264, + "versionNonce": 1896200724, + "index": "b08", + "isDeleted": false, + "id": "4sVFueYSS1YHVMisRcVLZ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7714.642894190169, + "y": 1880.1607387885124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 1676217152, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HPx\ntimestamp\n09:59:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "8B7k1f9yi67tmabfllQEP", + "originalText": "HPx\ntimestamp\n09:59:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 497, + "versionNonce": 1457103148, + "index": "b09", + "isDeleted": false, + "id": "GCGnq9CtJTgAQuKjK7Nv3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7690.779170435286, + "y": 2001.1333950385124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1898292032, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "fW5NkIE72snL9wFdWReRi" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 321, + "versionNonce": 1441617812, + "index": "b0A", + "isDeleted": false, + "id": "fW5NkIE72snL9wFdWReRi", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7715.908519190169, + "y": 2006.1333950385124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 1527724864, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HPy\ntimestamp\n10:01:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "GCGnq9CtJTgAQuKjK7Nv3", + "originalText": "HPy\ntimestamp\n10:01:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 222, + "versionNonce": 1273273260, + "index": "b0B", + "isDeleted": false, + "id": "fhgLkDv5BnCaQU2KaXiBk", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7570.171748560286, + "y": 1931.5279262885124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 125.28125, + "height": 55.5859375, + "seed": 67490624, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 125.28125, + -55.5859375 + ] + ] + }, + { + "type": "line", + "version": 432, + "versionNonce": 1191527700, + "index": "b0C", + "isDeleted": false, + "id": "Ac5EXal_N7aw7kfUKtaCU", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7568.552969020224, + "y": 1995.7223104580908, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 128.5078125, + "height": 86.96875, + "seed": 40463168, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 128.5078125, + 86.96875 + ] + ] + }, + { + "type": "text", + "version": 142, + "versionNonce": 179062316, + "index": "b0D", + "isDeleted": false, + "id": "6VKfV8hmVzD0CcigScTSJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7746.886592310286, + "y": 1956.8755825385124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 546964288, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 299, + "versionNonce": 2042856084, + "index": "b0E", + "isDeleted": false, + "id": "qxIL0GmveTZd3LRdFZP1d", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7354.015498560286, + "y": 1844.2505825385124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1.15625, + "height": 201.69140625, + "seed": 1559731008, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -1.15625, + 201.69140625 + ] + ] + }, + { + "type": "text", + "version": 204, + "versionNonce": 404398252, + "index": "b0F", + "isDeleted": false, + "id": "wHrOgNdWwOkpLe7eecwqN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7300.640498560286, + "y": 1910.8794887885124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 39.27995300292969, + "height": 25, + "seed": 1776431936, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "time", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 230, + "versionNonce": 81661972, + "index": "b0G", + "isDeleted": false, + "id": "I-cu7i14gHXQDzrbCTgEL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7625.257686060286, + "y": 1523.0162075385124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 2.0625, + "height": 670.69921875, + "seed": 767150912, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 2.0625, + 670.69921875 + ] + ] + }, + { + "type": "rectangle", + "version": 493, + "versionNonce": 1272556332, + "index": "b0H", + "isDeleted": false, + "id": "370OD2nbmjx-5fcRBZBPS", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7685.647334497786, + "y": 1591.0799331072294, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 205111488, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "JyXUidvqAvStOjEtTspw0" + }, + { + "id": "KKqchjFIeApyqGBogjCU3", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 116, + "versionNonce": 944434580, + "index": "b0I", + "isDeleted": false, + "id": "JyXUidvqAvStOjEtTspw0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7692.498675745344, + "y": 1613.5799331072294, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 133.8559112548828, + "height": 40, + "seed": 938720064, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "validator update\nchanges", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "370OD2nbmjx-5fcRBZBPS", + "originalText": "validator update changes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 703, + "versionNonce": 2018731436, + "index": "b0J", + "isDeleted": false, + "id": "ie5BrKn15zqO_4vMuqP5l", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7689.744990747786, + "y": 1693.5564956072294, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 115.76562499999993, + "seed": 350939968, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 265, + "versionNonce": 1967135508, + "index": "b0K", + "isDeleted": false, + "id": "7vZRT_rE-cuoqHmwpDGO5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7700.528193872786, + "y": 1707.3611831072294, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 133.8559112548828, + "height": 100, + "seed": 1837187264, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "FbQCK9PJlv5tvLbIyFuAv", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "validator update\nchanges\nnew delegator D\nadded to\nvalidator V ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "validator update\nchanges\nnew delegator D\nadded to\nvalidator V ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 242, + "versionNonce": 313643052, + "index": "b0L", + "isDeleted": false, + "id": "KKqchjFIeApyqGBogjCU3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7684.647334497786, + "y": 1624.0481870320623, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 161.11707693257995, + "height": 136.34815232516712, + "seed": 1166366912, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "370OD2nbmjx-5fcRBZBPS", + "focus": 0.6938927259180641, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "Mab9Aiy_tLAyRWFsWzix1", + "focus": -0.27421431285834974, + "gap": 11.34765625, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -161.11707693257995, + 136.34815232516712 + ] + ] + }, + { + "type": "text", + "version": 258, + "versionNonce": 104044692, + "index": "b0M", + "isDeleted": false, + "id": "VplJpDfL_IoIsnSubUj2S", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.6184965495190715, + "x": 7516.438350122786, + "y": 1682.6893081072294, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 83.16793823242188, + "height": 20, + "seed": 146297664, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "VSCPacket", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 501, + "versionNonce": 1524558508, + "index": "b0N", + "isDeleted": false, + "id": "Mab9Aiy_tLAyRWFsWzix1", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7420.123896997786, + "y": 1771.7439956072294, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1923638080, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "0PS23YuWvJ4ZBsIngloM1" + }, + { + "id": "KKqchjFIeApyqGBogjCU3", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 367, + "versionNonce": 1994090004, + "index": "b0O", + "isDeleted": false, + "id": "0PS23YuWvJ4ZBsIngloM1", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7441.923236292219, + "y": 1789.2439956072294, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 103.95991516113281, + "height": 50, + "seed": 507116352, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "VSCPacket\napplied", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Mab9Aiy_tLAyRWFsWzix1", + "originalText": "VSCPacket\napplied", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 223, + "versionNonce": 59028780, + "index": "b0P", + "isDeleted": false, + "id": "jCZ-4qn6c73Wjauf6ICQ6", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7479.451014917708, + "y": 1886.4236831072294, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 1951488832, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 381, + "versionNonce": 1814922132, + "index": "b0Q", + "isDeleted": false, + "id": "FbQCK9PJlv5tvLbIyFuAv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 7691.684443872787, + "y": 1799.4246226571236, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 162.55234937446494, + "height": 326.3120252809208, + "seed": 932774720, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "7vZRT_rE-cuoqHmwpDGO5", + "focus": 0.5969132483766904, + "gap": 8.84374999999909, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -162.55234937446494, + 326.3120252809208 + ] + ] + }, + { + "type": "text", + "version": 431, + "versionNonce": 1510813612, + "index": "b0R", + "isDeleted": false, + "id": "E1NVW_0OvnOZfBqSxaUH4", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.295872943537358, + "x": 7538.151256006574, + "y": 2088.076026857229, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 83.16793823242188, + "height": 20, + "seed": 1213522752, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "VSCPacket", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 339, + "versionNonce": 2086662420, + "index": "b0S", + "isDeleted": false, + "id": "T69Oa2ve3BNe0Z_Uocxq3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 8846.280954920769, + "y": 2028.1358027509852, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 984023872, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "UyEXLsBJorhJiY4qaFFfg" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 186, + "versionNonce": 1856133676, + "index": "b0T", + "isDeleted": false, + "id": "UyEXLsBJorhJiY4qaFFfg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 8871.410303675651, + "y": 2033.1358027509852, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 761568064, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HCi\ntimestamp\n10:00:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "T69Oa2ve3BNe0Z_Uocxq3", + "originalText": "HCi\ntimestamp\n10:00:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 294, + "versionNonce": 115912340, + "index": "b0U", + "isDeleted": false, + "id": "wl0ddOS318GpaTMH4Kkh_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 8874.129617221162, + "y": 1752.4027596924545, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 84.87991333007812, + "height": 50, + "seed": 615461696, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "consumer\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 219, + "versionNonce": 1009661100, + "index": "b0V", + "isDeleted": false, + "id": "sqSPz8AymzR6DFxV_C7Jp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9157.331171579057, + "y": 1749.9172860634174, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 75.29991149902344, + "height": 50, + "seed": 115788608, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "provider\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 431, + "versionNonce": 209566740, + "index": "b0W", + "isDeleted": false, + "id": "DjlP-8qm1XQagbZreU2h6", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9113.982126795769, + "y": 1970.1787715009852, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1852531520, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "TQTCj_om-NhVWBTYilku9" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 264, + "versionNonce": 1348124460, + "index": "b0X", + "isDeleted": false, + "id": "TQTCj_om-NhVWBTYilku9", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9139.111475550651, + "y": 1975.1787715009852, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 698153792, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HPx\ntimestamp\n09:59:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "DjlP-8qm1XQagbZreU2h6", + "originalText": "HPx\ntimestamp\n09:59:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 498, + "versionNonce": 118823316, + "index": "b0Y", + "isDeleted": false, + "id": "OuW6lIaonvUhkUC9Khoe4", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9115.005564295769, + "y": 2096.389709000985, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 987468608, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "qqJOitbIcz-2uxRrRcxF2" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 322, + "versionNonce": 1938946476, + "index": "b0Z", + "isDeleted": false, + "id": "qqJOitbIcz-2uxRrRcxF2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9140.134913050651, + "y": 2101.389709000985, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 1485253440, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HPy\ntimestamp\n10:01:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "OuW6lIaonvUhkUC9Khoe4", + "originalText": "HPy\ntimestamp\n10:01:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 225, + "versionNonce": 1105512212, + "index": "b0a", + "isDeleted": false, + "id": "U5ZO2gPXQG0ZzrU3vbhY8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 8994.637010888999, + "y": 2026.541580219769, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 125.28125, + "height": 55.5859375, + "seed": 1828700992, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 125.28125, + -55.5859375 + ] + ] + }, + { + "type": "line", + "version": 433, + "versionNonce": 1358816300, + "index": "b0b", + "isDeleted": false, + "id": "-S_ZiKyCJkhPrHGv961p5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 8992.779362880707, + "y": 2090.9786244205634, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 128.5078125, + "height": 86.96875, + "seed": 379935552, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 128.5078125, + 86.96875 + ] + ] + }, + { + "type": "text", + "version": 143, + "versionNonce": 828556436, + "index": "b0c", + "isDeleted": false, + "id": "lY8QihvT6TkJZX4yRfWRw", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9171.139857389553, + "y": 2052.670959000985, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 668463936, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 300, + "versionNonce": 512261804, + "index": "b0d", + "isDeleted": false, + "id": "yozE4S7M7pla0uRMmK45j", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 8778.241892420769, + "y": 1939.5068965009852, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1.15625, + "height": 201.69140625, + "seed": 653757248, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -1.15625, + 201.69140625 + ] + ] + }, + { + "type": "text", + "version": 205, + "versionNonce": 1262817812, + "index": "b0e", + "isDeleted": false, + "id": "cxaQd8JQlWJS3KDvXSNSj", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 8724.866892420769, + "y": 2006.1358027509852, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 39.27995300292969, + "height": 25, + "seed": 1315185472, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "time", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 146, + "versionNonce": 1155254572, + "index": "b0f", + "isDeleted": false, + "id": "f69sTcwqHZlGNnE2LYTGg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9049.718454920769, + "y": 1753.6084590009852, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 534.42578125, + "seed": 209566528, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 534.42578125 + ] + ] + }, + { + "type": "rectangle", + "version": 501, + "versionNonce": 1585557396, + "index": "b0g", + "isDeleted": false, + "id": "Gv0dQ3pFfTi5P5oIV5zUa", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9111.171290771616, + "y": 1830.362000850525, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1378328768, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "EBzvEyJT5egHJwTtk8Naa" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 339, + "versionNonce": 123847596, + "index": "b0h", + "isDeleted": false, + "id": "EBzvEyJT5egHJwTtk8Naa", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9136.300639526498, + "y": 1835.362000850525, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 368412864, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HPs\ntimestamp\n0:8:59:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Gv0dQ3pFfTi5P5oIV5zUa", + "originalText": "HPs\ntimestamp\n0:8:59:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 224, + "versionNonce": 1800314132, + "index": "b0i", + "isDeleted": false, + "id": "t9Sgn74o0U17Tp8wAQn_4", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9172.185812209365, + "y": 1927.3172116512737, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 976509760, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 347, + "versionNonce": 742682156, + "index": "b0j", + "isDeleted": false, + "id": "o0sNqC6mufcpUptuORLEM", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10038.403206243187, + "y": 2077.802277583949, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 110, + "seed": 459702464, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "G0aRIUfIQQ5TVropo8P-m" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 238, + "versionNonce": 2065816212, + "index": "b0k", + "isDeleted": false, + "id": "G0aRIUfIQQ5TVropo8P-m", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10055.20254553762, + "y": 2082.802277583949, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 113.95991516113281, + "height": 100, + "seed": 341338304, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HCb\nACK for \nVSCPacket \nsent", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "o0sNqC6mufcpUptuORLEM", + "originalText": "HCb\nACK for VSCPacket sent", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 489, + "versionNonce": 611174572, + "index": "b0l", + "isDeleted": false, + "id": "bHcqqMKDfNJex-cBHrsNi", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10068.757357061531, + "y": 1666.0500000177954, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 84.87991333007812, + "height": 50, + "seed": 1724731584, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "consumer\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 412, + "versionNonce": 2024892436, + "index": "b0m", + "isDeleted": false, + "id": "5BPt0i0luaqVTS8fXRJ1-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10343.663607061531, + "y": 1669.3507812677954, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 75.29991149902344, + "height": 50, + "seed": 1785018560, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "provider\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 525, + "versionNonce": 864539436, + "index": "b0n", + "isDeleted": false, + "id": "-aH7_YC0hrhNF_jvKfkFm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10309.824429243978, + "y": 2210.14372703673, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1010757824, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "LNYE-Za-cHbslxJ2n99R-" + }, + { + "id": "Fc49-vJOvQny1BG9Cr_uX", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 348, + "versionNonce": 133383572, + "index": "b0o", + "isDeleted": false, + "id": "LNYE-Za-cHbslxJ2n99R-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10334.95377799886, + "y": 2215.14372703673, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 97.29989624023438, + "height": 75, + "seed": 1621285056, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HPy\ntimestamp\n10:01:00", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "-aH7_YC0hrhNF_jvKfkFm", + "originalText": "HPy\ntimestamp\n10:01:00", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 238, + "versionNonce": 402427308, + "index": "b0p", + "isDeleted": false, + "id": "gPmvpbbfwocSZ2FfutAbZ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10366.148600204737, + "y": 2013.9703053108428, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 2078314688, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 301, + "versionNonce": 1578988308, + "index": "b0q", + "isDeleted": false, + "id": "-zBQN_WDVw4UYRwrARamr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9971.651888311531, + "y": 1988.5421875177954, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1.15625, + "height": 201.69140625, + "seed": 2064677056, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -1.15625, + 201.69140625 + ] + ] + }, + { + "type": "text", + "version": 206, + "versionNonce": 854980652, + "index": "b0r", + "isDeleted": false, + "id": "IbGwivKFBPtoQp_7qe1Py", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 9918.276888311531, + "y": 2055.1710937677954, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 39.27995300292969, + "height": 25, + "seed": 1543725248, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "time", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 232, + "versionNonce": 430305428, + "index": "b0s", + "isDeleted": false, + "id": "IrfXyv23m4OpSJLmAjumx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10242.894075811531, + "y": 1667.3078125177954, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 2.0625, + "height": 670.69921875, + "seed": 1851345088, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 2.0625, + 670.69921875 + ] + ] + }, + { + "type": "rectangle", + "version": 497, + "versionNonce": 811471532, + "index": "b0t", + "isDeleted": false, + "id": "JvybkG_vzpLHLgpc69Q8L", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10302.875725969952, + "y": 1735.773161392481, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 229781696, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "G4zP2KB4g_o7eR5LaFQzA" + }, + { + "id": "iBuvPOJ5-fQsN--EkoTol", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 125, + "versionNonce": 440581652, + "index": "b0u", + "isDeleted": false, + "id": "G4zP2KB4g_o7eR5LaFQzA", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10309.727067217511, + "y": 1748.273161392481, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 133.8559112548828, + "height": 60, + "seed": 565057728, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "HPx\nvalidator update\nchanges", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "JvybkG_vzpLHLgpc69Q8L", + "originalText": "HPx\nvalidator update changes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 252, + "versionNonce": 786357548, + "index": "b0v", + "isDeleted": false, + "id": "iBuvPOJ5-fQsN--EkoTol", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10301.875725969952, + "y": 1768.8018625177629, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 160.48196670803736, + "height": 136.2877051247183, + "seed": 1504956608, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "JvybkG_vzpLHLgpc69Q8L", + "focus": 0.6939845547779555, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "vyonfGMb3VN29PIUtqrxk", + "focus": -0.2742143128583389, + "gap": 11.34765625, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -160.48196670803736, + 136.2877051247183 + ] + ] + }, + { + "type": "text", + "version": 260, + "versionNonce": 1491721108, + "index": "b0w", + "isDeleted": false, + "id": "-olb-bc-N5ZdXCt2sqbeJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.6184965495190715, + "x": 10134.074739874031, + "y": 1826.9809130865124, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 83.16793823242188, + "height": 20, + "seed": 1014741184, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "VSCPacket", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 505, + "versionNonce": 1742886828, + "index": "b0x", + "isDeleted": false, + "id": "vyonfGMb3VN29PIUtqrxk", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10038.161910055, + "y": 1916.4372238924811, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1309057216, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "R7jUKVhMx7qS45G2zQ8_3" + }, + { + "id": "iBuvPOJ5-fQsN--EkoTol", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 382, + "versionNonce": 1070680340, + "index": "b0y", + "isDeleted": false, + "id": "R7jUKVhMx7qS45G2zQ8_3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10059.961249349433, + "y": 1921.4372238924811, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 103.95991516113281, + "height": 75, + "seed": 1039435968, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HCa\nVSCPacket\napplied", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "vyonfGMb3VN29PIUtqrxk", + "originalText": "HCa\nVSCPacket\napplied", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 225, + "versionNonce": 1469219372, + "index": "b0z", + "isDeleted": false, + "id": "Zw3z0456cvc-tk9jJdpig", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10097.087404668953, + "y": 2030.7152880865124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 1206218944, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 433, + "versionNonce": 40830612, + "index": "b10", + "isDeleted": false, + "id": "Fc49-vJOvQny1BG9Cr_uX", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10167.193489848203, + "y": 2186.9661389699663, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 135.21079816800557, + "height": 53.169177604661854, + "seed": 1346107584, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "-aH7_YC0hrhNF_jvKfkFm", + "focus": -0.2715864166642726, + "gap": 7.420141227768909, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 135.21079816800557, + 53.169177604661854 + ] + ] + }, + { + "type": "rectangle", + "version": 383, + "versionNonce": 1691966636, + "index": "b11", + "isDeleted": false, + "id": "RErnF-DWN_IW-WIeoI4Tr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 11037.159810244766, + "y": 2129.390097693127, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 110, + "seed": 1293335360, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "eTQmoPfwnaY1eJhuN9ilz" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 336, + "versionNonce": 1970869268, + "index": "b12", + "isDeleted": false, + "id": "eTQmoPfwnaY1eJhuN9ilz", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 11043.279164492813, + "y": 2134.390097693127, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 135.31988525390625, + "height": 100, + "seed": 1226658624, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Hy\nnew delegator\nD delegates \nto V", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "RErnF-DWN_IW-WIeoI4Tr", + "originalText": "Hy\nnew delegator D delegates to V", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 333, + "versionNonce": 157345580, + "index": "b13", + "isDeleted": false, + "id": "Uxm9wn5PFnZiZFH3DS34Q", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10970.81649059219, + "y": 2039.3395109612572, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1.15625, + "height": 201.69140625, + "seed": 810935104, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -1.15625, + 201.69140625 + ] + ] + }, + { + "type": "text", + "version": 237, + "versionNonce": 1726312852, + "index": "b14", + "isDeleted": false, + "id": "Y40HfNn49oaiVzQCKYyeh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 10917.44149059219, + "y": 2105.9684172112575, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 39.27995300292969, + "height": 25, + "seed": 1245150016, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "time", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 543, + "versionNonce": 2039685548, + "index": "b15", + "isDeleted": false, + "id": "c-03Xykc7QaFMfX5E4TnV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 11037.326512335656, + "y": 1967.2345473359435, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 833751872, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "QGVnuEuHqTEvxY0ZaYpAz" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 497, + "versionNonce": 1978277652, + "index": "b16", + "isDeleted": false, + "id": "QGVnuEuHqTEvxY0ZaYpAz", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 11051.365849493859, + "y": 1972.2345473359435, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 119.47991943359375, + "height": 75, + "seed": 500081472, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Hi\nvalidator V \ndouble signs", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "c-03Xykc7QaFMfX5E4TnV", + "originalText": "Hi\nvalidator V double signs", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 256, + "versionNonce": 1285164076, + "index": "b17", + "isDeleted": false, + "id": "9M0aQ6Ao1en89KrXVWuP7", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 11096.252006949611, + "y": 2081.5126115299745, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 177748800, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 493, + "versionNonce": 1794972820, + "index": "b18", + "isDeleted": false, + "id": "V2uHp_TDQ8ihrS_8j9zZZ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 11041.382064048033, + "y": 2300.587121181615, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 110, + "seed": 1267824832, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "B9TuOBjtRYidVybUQOV2L" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 475, + "versionNonce": 610248364, + "index": "b19", + "isDeleted": false, + "id": "B9TuOBjtRYidVybUQOV2L", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 11048.921408835631, + "y": 2305.587121181615, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 132.4799041748047, + "height": 100, + "seed": 1952735424, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Hz\nwe get the \nevidence and \nslash", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "V2uHp_TDQ8ihrS_8j9zZZ", + "originalText": "Hz\nwe get the evidence and slash", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 322, + "versionNonce": 265579028, + "index": "b1A", + "isDeleted": false, + "id": "BG_HbKhN22R0cx71sTRmm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 11091.999670934241, + "y": 2258.376478487802, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 1749650240, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 423, + "versionNonce": 1435365676, + "index": "b1B", + "isDeleted": false, + "id": "4s2Kjn7UbkseO0Z3r9z6X", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12111.543591035874, + "y": 1870.3196705218963, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1077595266, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "EG3O4sSTEHG8vMl6WlHiX" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 83, + "versionNonce": 124127124, + "index": "b1C", + "isDeleted": false, + "id": "EG3O4sSTEHG8vMl6WlHiX", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12179.202892793686, + "y": 1902.8196705218963, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 12.239990234375, + "height": 20, + "seed": 1002195358, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "h1", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "4s2Kjn7UbkseO0Z3r9z6X", + "originalText": "h1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 296, + "versionNonce": 261024684, + "index": "b1D", + "isDeleted": false, + "id": "LJkvSHF5kP2Mz5sEZEZ9h", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12145.945725693977, + "y": 1730.360804773183, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 84.87991333007812, + "height": 50, + "seed": 523179010, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "consumer\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 221, + "versionNonce": 635958548, + "index": "b1E", + "isDeleted": false, + "id": "sbmH8RFjjaA9ZBGO3CJ4_", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12429.147280051873, + "y": 1727.8753311441458, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 75.29991149902344, + "height": 50, + "seed": 636568514, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "provider\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 436, + "versionNonce": 76322348, + "index": "b1F", + "isDeleted": false, + "id": "kqglpldWlWOQG0j2EISKp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12385.798235268585, + "y": 1948.1368165817137, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1012366210, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 502, + "versionNonce": 1221603988, + "index": "b1G", + "isDeleted": false, + "id": "arADPRPI002R9r5J5Xok0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12386.426424435727, + "y": 2074.347754081713, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1898709762, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 157, + "versionNonce": 292614316, + "index": "b1H", + "isDeleted": false, + "id": "7IHsotdC5zyFHbcziP_C5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12442.955965862368, + "y": 2042.0178774414605, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 297366018, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 302, + "versionNonce": 785694740, + "index": "b1I", + "isDeleted": false, + "id": "aOcytD5OkjoJKbZAL1jV2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12050.058000893585, + "y": 1917.4649415817137, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1.15625, + "height": 201.69140625, + "seed": 1400889794, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -1.15625, + 201.69140625 + ] + ] + }, + { + "type": "text", + "version": 207, + "versionNonce": 1709570860, + "index": "b1J", + "isDeleted": false, + "id": "uJPPFApK1e3VlQjST_EHK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 11996.683000893585, + "y": 1984.0938478317137, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 39.27995300292969, + "height": 25, + "seed": 979523970, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "time", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 201, + "versionNonce": 1340841364, + "index": "b1K", + "isDeleted": false, + "id": "bJ0BnC59qt4Bho1KGiSKr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12321.534563393585, + "y": 1731.5665040817137, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 534.42578125, + "seed": 1436539202, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 534.42578125 + ] + ] + }, + { + "type": "rectangle", + "version": 507, + "versionNonce": 743814572, + "index": "b1L", + "isDeleted": false, + "id": "Ua2EnHvjRMgz2rpqVi2Sj", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12381.572155213875, + "y": 1808.3200459312532, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1956077826, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "jseEunDe3SmALOh7zxMaz", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 226, + "versionNonce": 894094100, + "index": "b1M", + "isDeleted": false, + "id": "tsB1D101pmcWa11ZAZvvV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12444.00192068218, + "y": 1905.275256732002, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 600868994, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 293, + "versionNonce": 837427244, + "index": "b1N", + "isDeleted": false, + "id": "jseEunDe3SmALOh7zxMaz", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12380.572155213875, + "y": 1826.130958668793, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 139.0110450140819, + "height": 37.443324743102494, + "seed": 1799266690, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "Ua2EnHvjRMgz2rpqVi2Sj", + "focus": 0.7189712401961142, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "ek6yVOByWoOz5bdSepTjJ", + "focus": 2.1329843083009012, + "gap": 15.637763525525088, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -139.0110450140819, + 37.443324743102494 + ] + ] + }, + { + "type": "text", + "version": 368, + "versionNonce": 1365788820, + "index": "b1O", + "isDeleted": false, + "id": "ek6yVOByWoOz5bdSepTjJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.934815687284526, + "x": 12227.218045311303, + "y": 1816.404645432264, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 83.16793823242188, + "height": 20, + "seed": 1113707358, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "jseEunDe3SmALOh7zxMaz", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "VSCPacket", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 479, + "versionNonce": 244136620, + "index": "b1P", + "isDeleted": false, + "id": "faoL09yS1WW8lLp_RrlR1", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12108.170064377848, + "y": 2001.6250599164398, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1558483074, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "blynYNb58xtWmz7D08sEu", + "type": "arrow" + }, + { + "id": "WRc-QKUh1CaWLhqtMbfis", + "type": "arrow" + }, + { + "id": "zjWRCbDgJXYyaednY4E33", + "type": "arrow" + }, + { + "type": "text", + "id": "QmfUB9aNKPJLl8ta__7Ln" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 87, + "versionNonce": 1476007444, + "index": "b1Q", + "isDeleted": false, + "id": "QmfUB9aNKPJLl8ta__7Ln", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12164.821370530191, + "y": 2034.1250599164398, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 34.2559814453125, + "height": 20, + "seed": 1779588610, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "h100", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "faoL09yS1WW8lLp_RrlR1", + "originalText": "h100", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 451, + "versionNonce": 1290339628, + "index": "b1R", + "isDeleted": false, + "id": "blynYNb58xtWmz7D08sEu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12262.55070570926, + "y": 2048.421422949044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.23746485616357, + "height": 71.95459296547278, + "seed": 503796702, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "faoL09yS1WW8lLp_RrlR1", + "focus": -0.5700316808481465, + "gap": 6.822047581412335, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 97.23746485616357, + 71.95459296547278 + ] + ] + }, + { + "type": "arrow", + "version": 389, + "versionNonce": 368456596, + "index": "b1S", + "isDeleted": false, + "id": "WRc-QKUh1CaWLhqtMbfis", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12385.982935076934, + "y": 1956.4818322137896, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 122.88398168016283, + "height": 59.89144255075621, + "seed": 1232706754, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "faoL09yS1WW8lLp_RrlR1", + "focus": 0.15038569587300613, + "gap": 7.370295268923655, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -122.88398168016283, + 59.89144255075621 + ] + ] + }, + { + "type": "arrow", + "version": 625, + "versionNonce": 308772780, + "index": "b1T", + "isDeleted": false, + "id": "zjWRCbDgJXYyaednY4E33", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12224.885331815989, + "y": 2102.122827260678, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 138.0341800213737, + "height": 126.6356916226141, + "seed": 1350866818, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "faoL09yS1WW8lLp_RrlR1", + "focus": 0.16916563605900317, + "gap": 15.497767344238468, + "fixedPoint": null + }, + "endBinding": { + "elementId": "-lQLXDc3HZ_CZzWl8btPD", + "focus": -0.5815705246282542, + "gap": 16.900906729888447, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 138.0341800213737, + 126.6356916226141 + ] + ] + }, + { + "type": "rectangle", + "version": 586, + "versionNonce": 1234346260, + "index": "b1U", + "isDeleted": false, + "id": "-lQLXDc3HZ_CZzWl8btPD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12379.820418567251, + "y": 2205.3692005316043, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1343849438, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "zjWRCbDgJXYyaednY4E33", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 262, + "versionNonce": 1194502700, + "index": "b1V", + "isDeleted": false, + "id": "qesf20ii7wKGV-s62_Eai", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 13005.418582495826, + "y": 1742.8479597091668, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 75.29991149902344, + "height": 50, + "seed": 1621617346, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "provider\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 478, + "versionNonce": 2051366548, + "index": "b1W", + "isDeleted": false, + "id": "1XS4-UJQ_yfQcWlbc4gTo", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12962.069537712538, + "y": 1963.1094451467347, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1470186114, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "hrrGMl5wLMLCfebCimyUN" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 105, + "versionNonce": 1043629228, + "index": "b1X", + "isDeleted": false, + "id": "hrrGMl5wLMLCfebCimyUN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12999.840861870252, + "y": 1995.6094451467347, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 72.01594543457031, + "height": 20, + "seed": 1912758622, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "0x99234", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "1XS4-UJQ_yfQcWlbc4gTo", + "originalText": "0x99234", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 548, + "versionNonce": 1355050004, + "index": "b1Y", + "isDeleted": false, + "id": "vIqJIJAeQ2X9RqAU7pYJF", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12961.875355348406, + "y": 2089.3203826467357, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 488219202, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "KNAwewx6tVzu9C_sshvrR" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 91, + "versionNonce": 1561792300, + "index": "b1Z", + "isDeleted": false, + "id": "KNAwewx6tVzu9C_sshvrR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 13000.182674989519, + "y": 2121.8203826467357, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 70.94395446777344, + "height": 20, + "seed": 1473619422, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "0x912341", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "vIqJIJAeQ2X9RqAU7pYJF", + "originalText": "0x912341", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 198, + "versionNonce": 1862650260, + "index": "b1a", + "isDeleted": false, + "id": "rbZi874Vk5p7B7dyzcCcq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 13019.22726830632, + "y": 2056.9905060064816, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 468716034, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 552, + "versionNonce": 1145325996, + "index": "b1b", + "isDeleted": false, + "id": "gifrdCI17KeKDQP8KvQpE", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12957.435459378747, + "y": 1823.681547856022, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 186874306, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "IV4dF10ochQKCLABbIWJt" + }, + { + "id": "0HCqGOAzhHLTJKC0YaEX0", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 99, + "versionNonce": 1212118804, + "index": "b1c", + "isDeleted": false, + "id": "IV4dF10ochQKCLABbIWJt", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12997.086773160485, + "y": 1856.181547856022, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 68.25596618652344, + "height": 20, + "seed": 1062584030, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "0x23142", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "gifrdCI17KeKDQP8KvQpE", + "originalText": "0x23142", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 267, + "versionNonce": 1994798124, + "index": "b1d", + "isDeleted": false, + "id": "jkcHos_h_LkK1Zn8_f_pi", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 13020.273223126133, + "y": 1920.247885297023, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 1775432066, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 668, + "versionNonce": 2028434580, + "index": "b1e", + "isDeleted": false, + "id": "d8CQ6Jz2nSa-6JOFrBosp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12957.551589853532, + "y": 2221.9929471322757, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 2067624258, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 118, + "versionNonce": 48680620, + "index": "b1f", + "isDeleted": false, + "id": "Wv2feV-JWwx1bMUMg0Uho", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12998.532416937374, + "y": 2248.6341973048766, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 68.25596618652344, + "height": 20, + "seed": 1346578270, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "0x23142", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "0x23142", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 285, + "versionNonce": 515097108, + "index": "b1g", + "isDeleted": false, + "id": "aYzjcmCWBbjIWTe5FEALw", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 13020.690410791927, + "y": 2184.4969151089185, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 1016744386, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 811, + "versionNonce": 686823724, + "index": "b1h", + "isDeleted": false, + "id": "s48-4wXmB4eSn25hza5zD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12951.483382315184, + "y": 2488.1502577721385, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 977784862, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "L_kP5_C4o9-YCWJ-svCWq" + }, + { + "id": "bJg5FZtFajICR-PbOHhzG", + "type": "arrow" + }, + { + "id": "0HCqGOAzhHLTJKC0YaEX0", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 214, + "versionNonce": 815423380, + "index": "b1i", + "isDeleted": false, + "id": "L_kP5_C4o9-YCWJ-svCWq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12962.302718252684, + "y": 2500.6502577721385, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 125.919921875, + "height": 60, + "seed": 20649986, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "height at which \nwe receive\nthe evidence", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "s48-4wXmB4eSn25hza5zD", + "originalText": "height at which we receive\nthe evidence", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 391, + "versionNonce": 74191788, + "index": "b1j", + "isDeleted": false, + "id": "J7DxLlL0OPFNMvhVR1BKr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 13016.011180528749, + "y": 2434.701859754225, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 76686558, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 731, + "versionNonce": 1456557332, + "index": "b1k", + "isDeleted": false, + "id": "4fHHL5RED87a3qZwgbBnW", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 12959.65609784299, + "y": 2345.510234422191, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.55859375, + "height": 85, + "seed": 1166488926, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 350, + "versionNonce": 864337452, + "index": "b1l", + "isDeleted": false, + "id": "tr2_Jq0_uKlXIZNaJ9OjP", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 13018.867168482302, + "y": 2312.0282521867152, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 21.91998291015625, + "height": 25, + "seed": 901818050, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "....", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "....", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 138, + "versionNonce": 1120832148, + "index": "b1m", + "isDeleted": false, + "id": "1Ov9G14kVQr-6GSG93Xdq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 13001.643403815366, + "y": 2382.4448828966265, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 73.37594604492188, + "height": 20, + "seed": 384312834, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "0x87234", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "0x87234", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 280, + "versionNonce": 2133072044, + "index": "b1n", + "isDeleted": false, + "id": "bJg5FZtFajICR-PbOHhzG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 13109.068075702291, + "y": 2531.4726293034064, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 253.81317942591158, + "height": 253.78130456035797, + "seed": 562439646, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "s48-4wXmB4eSn25hza5zD", + "focus": 0.5914138211389951, + "gap": 10.026099637107109, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 248.36257741633744, + -150.31549097512334 + ], + [ + -5.4506020095741405, + -253.78130456035797 + ] + ] + }, + { + "type": "arrow", + "version": 436, + "versionNonce": 122165268, + "index": "b1o", + "isDeleted": false, + "id": "0HCqGOAzhHLTJKC0YaEX0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 13105.73315938987, + "y": 2542.5420574198656, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 525.3424091262132, + "height": 676.0924940267705, + "seed": 395256734, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "s48-4wXmB4eSn25hza5zD", + "focus": 0.6070122324089865, + "gap": 6.69118332468679, + "fixedPoint": null + }, + "endBinding": { + "elementId": "gifrdCI17KeKDQP8KvQpE", + "focus": -0.7009840857057751, + "gap": 10.798813829669598, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 525.3424091262132, + -204.71951150108725 + ], + [ + 10.059707568545491, + -676.0924940267705 + ] + ] + }, + { + "type": "rectangle", + "version": 346, + "versionNonce": 49554220, + "index": "b1p", + "isDeleted": false, + "id": "8-hLmdQLFdA95MfH6j0mu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14635.568945854822, + "y": 2063.0436460083924, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 196.05601720429894, + "height": 73.32421875, + "seed": 114105224, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "zC86m-VvCsrJyvvEgJoOL", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 109, + "versionNonce": 1882453396, + "index": "b1q", + "isDeleted": false, + "id": "8CSUKgs4sTHHfAGzgkRWP", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14660.631445854822, + "y": 2088.1998960083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 145.19989013671875, + "height": 20, + "seed": 724714744, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "validators_hash H", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "validators_hash H", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 232, + "versionNonce": 1432280492, + "index": "b1r", + "isDeleted": false, + "id": "3YqmGfFkqB8FW0idL2d8N", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14729.996870964686, + "y": 2156.5983335083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 1275489272, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 493, + "versionNonce": 1523065620, + "index": "b1s", + "isDeleted": false, + "id": "EI68iLTVBPlyt6h-k-PcR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14635.247968502674, + "y": 2282.9635678833924, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 196.05601720429894, + "height": 73.32421875, + "seed": 51409544, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "44elEZDJg7ESVe4rAUjAF", + "type": "arrow" + }, + { + "id": "sNjmJifMD7oXLsE7-T-P5", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 435, + "versionNonce": 797853740, + "index": "b1t", + "isDeleted": false, + "id": "IshfYkHtcnzIoLQOVQ6O4", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14720.074995964686, + "y": 2381.2858335083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 120130552, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 422, + "versionNonce": 226140308, + "index": "b1u", + "isDeleted": false, + "id": "w_2FinwCPcIm0WoovXWgD", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14638.271406002674, + "y": 1970.6120053833924, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "width": 196.05601720429894, + "height": 73.32421875, + "seed": 1969768840, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "WU8kx1dSS0mM713XcvC8V", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 205, + "versionNonce": 359424684, + "index": "b1v", + "isDeleted": false, + "id": "BB9zjWzGwmiunZg5KIZSV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14664.01762291781, + "y": 2000.2155210083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 145.19989013671875, + "height": 20, + "seed": 1368896136, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "validators_hash H", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "validators_hash H", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 274, + "versionNonce": 268529172, + "index": "b1w", + "isDeleted": false, + "id": "pSlWhMu9boiHdZG16fPuA", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14728.305464714686, + "y": 1935.9108335083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 978751624, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 231, + "versionNonce": 2107845932, + "index": "b1x", + "isDeleted": false, + "id": "Uf8TSlOHlpL15VcuXRYK5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14666.742438286463, + "y": 2311.4381772583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 145.19989013671875, + "height": 20, + "seed": 2012570248, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "validators_hash H", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "validators_hash H", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 501, + "versionNonce": 55741332, + "index": "b1y", + "isDeleted": false, + "id": "D1MUd6cNcEqQepVESsYMx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14634.263593502674, + "y": 2189.0690366333924, + "strokeColor": "#e03131", + "backgroundColor": "#ffc9c9", + "width": 196.05601720429894, + "height": 73.32421875, + "seed": 1188316152, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 312, + "versionNonce": 2040309676, + "index": "b1z", + "isDeleted": false, + "id": "e8oGjSNie2Ube0depV1ru", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14639.755781002674, + "y": 2215.5924741333924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 188.87986755371094, + "height": 20, + "seed": 345572600, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "validators_hash H' != H", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "validators_hash H' != H", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 439, + "versionNonce": 2040789268, + "index": "b20", + "isDeleted": false, + "id": "44elEZDJg7ESVe4rAUjAF", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14833.721289604822, + "y": 2320.6178647583924, + "strokeColor": "#2f9e44", + "backgroundColor": "#ffc9c9", + "width": 49.609375, + "height": 192.49609375, + "seed": 440510600, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "EI68iLTVBPlyt6h-k-PcR", + "focus": -0.8497236060748172, + "gap": 2.4173038978506156, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 49.609375, + 92.9921875 + ], + [ + 10.15625, + 192.49609375 + ] + ] + }, + { + "type": "text", + "version": 161, + "versionNonce": 1568854572, + "index": "b21", + "isDeleted": false, + "id": "1lUGu6tYZ_cWIo87MfcIp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14902.885352104822, + "y": 2402.8405210083924, + "strokeColor": "#2f9e44", + "backgroundColor": "#ffc9c9", + "width": 272.7198486328125, + "height": 40, + "seed": 39362440, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "only slash unbondings/redelegations\nafter this point", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "only slash unbondings/redelegations\nafter this point", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 176, + "versionNonce": 1315681940, + "index": "b22", + "isDeleted": false, + "id": "WU8kx1dSS0mM713XcvC8V", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14628.455664604822, + "y": 2014.1998960083924, + "strokeColor": "#2f9e44", + "backgroundColor": "#ffc9c9", + "width": 214.6875, + "height": 136.10546875, + "seed": 416080120, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "w_2FinwCPcIm0WoovXWgD", + "focus": 0.6218459297065645, + "gap": 9.815741397850616, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -214.6875, + 136.10546875 + ] + ] + }, + { + "type": "arrow", + "version": 152, + "versionNonce": 1749003436, + "index": "b23", + "isDeleted": false, + "id": "zC86m-VvCsrJyvvEgJoOL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14632.244727104822, + "y": 2093.9498960083924, + "strokeColor": "#2f9e44", + "backgroundColor": "#ffc9c9", + "width": 215.58984375, + "height": 68.85546875, + "seed": 1062810104, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "8-hLmdQLFdA95MfH6j0mu", + "focus": 0.5609188037743441, + "gap": 3.3242187499990905, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -215.58984375, + 68.85546875 + ] + ] + }, + { + "type": "arrow", + "version": 296, + "versionNonce": 2120205332, + "index": "b24", + "isDeleted": false, + "id": "sNjmJifMD7oXLsE7-T-P5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14625.397070854824, + "y": 2322.5813142710626, + "strokeColor": "#2f9e44", + "backgroundColor": "#ffc9c9", + "width": 211.76210021972838, + "height": 146.67833267004744, + "seed": 835786488, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "EI68iLTVBPlyt6h-k-PcR", + "focus": -0.7378097175347069, + "gap": 9.850897647850616, + "fixedPoint": null + }, + "endBinding": { + "elementId": "MjZa1_xfNgz5eNkLSH7BC", + "focus": -0.5257726979382138, + "gap": 13.092437744140625, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -211.76210021972838, + -146.67833267004744 + ] + ] + }, + { + "type": "text", + "version": 229, + "versionNonce": 1803368236, + "index": "b25", + "isDeleted": false, + "id": "MjZa1_xfNgz5eNkLSH7BC", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14255.166602104822, + "y": 2119.2467710083924, + "strokeColor": "#2f9e44", + "backgroundColor": "#ffc9c9", + "width": 145.3759307861328, + "height": 100, + "seed": 974426504, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "sNjmJifMD7oXLsE7-T-P5", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "> high probablity\nall of them would\nhave the same\nvoting power, but\nif not, get the min", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "> high probablity\nall of them would\nhave the same\nvoting power, but\nif not, get the min", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 246, + "versionNonce": 2138448276, + "index": "b26", + "isDeleted": false, + "id": "p-35YYYXfmS8QbILt0-cb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14563.166602104822, + "y": 3002.307122474697, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 190.64453125, + "height": 78.5859375, + "seed": 212246325, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 346, + "versionNonce": 1940222380, + "index": "b27", + "isDeleted": false, + "id": "dObDqQVcLqWBRN_aWa2Mg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14595.383425271752, + "y": 3017.229122557278, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 152.89588928222656, + "height": 60, + "seed": 1238721915, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "p5, p6, p7, p8\nblockID of previous\nhash", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "p5, p6, p7, p8\nblockID of previous\nhash", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 358, + "versionNonce": 417648404, + "index": "b28", + "isDeleted": false, + "id": "vlU3Q5JQk3XNIGSESHBB1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14853.899023979822, + "y": 3006.0123960083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 190.64453125, + "height": 78.5859375, + "seed": 1056353243, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 427, + "versionNonce": 1877105708, + "index": "b29", + "isDeleted": false, + "id": "Jsn-sC1EZepcJoTtjepx3", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14889.211523979822, + "y": 3035.0553647583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.82389831542969, + "height": 20, + "seed": 1888123003, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "p7, p8, p9, p10", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "p7, p8, p9, p10", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 502, + "versionNonce": 992070804, + "index": "b2A", + "isDeleted": false, + "id": "G4ccygf9L1zJS2hBjUTTw", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15138.609961479822, + "y": 3007.1881772583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 190.64453125, + "height": 78.5859375, + "seed": 1511662107, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 657, + "versionNonce": 1511913132, + "index": "b2B", + "isDeleted": false, + "id": "CMjxpEgmCT-OE1I39Wldp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15171.039648979822, + "y": 3036.7389585083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 117.37591552734375, + "height": 20, + "seed": 1013262011, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "p9, p10, p11, p12", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "p9, p10, p11, p12", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 199, + "versionNonce": 1474501140, + "index": "b2C", + "isDeleted": false, + "id": "NU2L40DC2S9Spl_AtGgbI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14597.553320854822, + "y": 3104.6178647583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 119.34391784667969, + "height": 20, + "seed": 2124603029, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "10th of August", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "10th of August", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 293, + "versionNonce": 1593983276, + "index": "b2D", + "isDeleted": false, + "id": "4BxC5VG2tGVs1CIHlBT-m", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14886.219923943201, + "y": 3110.3483335083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 126.39991760253906, + "height": 20, + "seed": 1921597173, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "20th of August", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "20th of August", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 546, + "versionNonce": 975091604, + "index": "b2E", + "isDeleted": false, + "id": "Ff6BDbXRt4Cj8grCNWFLa", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15145.384612053553, + "y": 3111.1803647583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 191.13587951660156, + "height": 20, + "seed": 1312348341, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "(today) 30th of August", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "(today) 30th of August", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 848, + "versionNonce": 100219820, + "index": "b2F", + "isDeleted": false, + "id": "U5LjFOKENC-LJkXF2EZm9", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14785.18613335482, + "y": 2931.5319272583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 0.2109375, + "height": 214.40625, + "seed": 804224981, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0.2109375, + 214.40625 + ] + ] + }, + { + "type": "text", + "version": 837, + "versionNonce": 1577755924, + "index": "b2G", + "isDeleted": false, + "id": "yvPtthsYuQ5JkXTKQUFO9", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14678.400977104822, + "y": 3163.0280210083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 208.59185791015625, + "height": 20, + "seed": 1917067061, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "p5 and p6 start unbonding", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "p5 and p6 start unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 621, + "versionNonce": 1496114732, + "index": "b2H", + "isDeleted": false, + "id": "mBZe4ilYFQlaAuSyhecUc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14317.719336479822, + "y": 3004.1139585083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 190.64453125, + "height": 78.5859375, + "seed": 1679993595, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "mhHBkYGtwCxD0QJs04Ty8" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 589, + "versionNonce": 1226629780, + "index": "b2I", + "isDeleted": false, + "id": "mhHBkYGtwCxD0QJs04Ty8", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14358.465651482264, + "y": 3033.4069272583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 109.15190124511719, + "height": 20, + "seed": 796746523, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "p3, p4, p5, p6", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "mBZe4ilYFQlaAuSyhecUc", + "originalText": "p3, p4, p5, p6", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 137, + "versionNonce": 226967724, + "index": "b2J", + "isDeleted": false, + "id": "_5ywr3Oxk-m4cDJCkKjxZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14402.436133354822, + "y": 2974.2975522583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 13.151992797851562, + "height": 20, + "seed": 289633813, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "H1", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "H1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 269, + "versionNonce": 1644916756, + "index": "b2K", + "isDeleted": false, + "id": "_wEvn4cuNSvaZvUCJ2JYg", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14649.79757592074, + "y": 2975.1764585083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 20.207992553710938, + "height": 20, + "seed": 1099935227, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "H2", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "H2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 413, + "versionNonce": 716327724, + "index": "b2L", + "isDeleted": false, + "id": "F1Rd5qWkjk6-lEHlLrYiZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14936.629668205896, + "y": 2976.5827085083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 19.711990356445312, + "height": 20, + "seed": 903982965, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "H3", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "H3", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 590, + "versionNonce": 1221348756, + "index": "b2M", + "isDeleted": false, + "id": "heYgi3fGMcfjZdW4cLWAa", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15220.507918327967, + "y": 2976.6647397583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 19.055984497070312, + "height": 20, + "seed": 1016659451, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "H4", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "H4", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 349, + "versionNonce": 857212332, + "index": "b2N", + "isDeleted": false, + "id": "IvGSZcN7y0kZ3Ht918zzc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14527.086699455896, + "y": 3034.4733335083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 13.151962280273438, + "height": 20, + "seed": 1795683605, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 397, + "versionNonce": 781548308, + "index": "b2O", + "isDeleted": false, + "id": "b3dV-xCtxIC6lmVBjlYWK", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14815.305464714686, + "y": 3032.1295835083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 13.151962280273438, + "height": 20, + "seed": 1547045269, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 561, + "versionNonce": 1273131052, + "index": "b2P", + "isDeleted": false, + "id": "_As8kC9A7bPfcvhT31ing", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15084.250777214686, + "y": 3034.1256772583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 13.151962280273438, + "height": 20, + "seed": 402063349, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 247, + "versionNonce": 769456276, + "index": "b2Q", + "isDeleted": false, + "id": "D1hNFjUq-gJfRHkTEulWh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14358.842299431482, + "y": 3103.5866147583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 109.11991882324219, + "height": 20, + "seed": 94248469, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "1st of August", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "1st of August", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 2303, + "versionNonce": 1694206636, + "index": "b2R", + "isDeleted": false, + "id": "qwrWD8VeLmIKrkUIvTTf3", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14343.659574832793, + "y": 2712.1549431464628, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 901.99951171875, + "height": 160, + "seed": 1829992661, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "\nLet's say you trust headers H0, H2, H3, and H4 and you would like to verify header H1.\nBut H1 is more than trustingPeriod (i.e., 2 weeks) in the past. In such a scenario, it does not\nseem we can verify H1 in any secure way. The reason for this is because although H1 and H2 have an intersection\nwith validators {p5, p6}, validators {p5, p6} have already unbonded and hence H1 could\nhave been signed by {p5, p6} after validators {p5, p6} went rogue. Similarly, we cannot use the fact that H0\nis verified to verify H1 because the validators of the intersection {p3, p4} between H0 and H1 have\nalready unbonded.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "\nLet's say you trust headers H0, H2, H3, and H4 and you would like to verify header H1.\nBut H1 is more than trustingPeriod (i.e., 2 weeks) in the past. In such a scenario, it does not\nseem we can verify H1 in any secure way. The reason for this is because although H1 and H2 have an intersection\nwith validators {p5, p6}, validators {p5, p6} have already unbonded and hence H1 could\nhave been signed by {p5, p6} after validators {p5, p6} went rogue. Similarly, we cannot use the fact that H0\nis verified to verify H1 because the validators of the intersection {p3, p4} between H0 and H1 have\nalready unbonded.", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 155, + "versionNonce": 576243220, + "index": "b2S", + "isDeleted": false, + "id": "Sm3V-T39bdqzCqaGc6gnh", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15045.127267362424, + "y": 3181.4945365555964, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 185.4140625, + "height": 0, + "seed": 869471765, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 185.4140625, + 0 + ] + ] + }, + { + "type": "text", + "version": 127, + "versionNonce": 1628263724, + "index": "b2T", + "isDeleted": false, + "id": "MDSVBWKREwqK90nhGmW4Q", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15098.709570854822, + "y": 3198.2389585083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 31.423980712890625, + "height": 20, + "seed": 57581301, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "time", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 335, + "versionNonce": 16704404, + "index": "b2U", + "isDeleted": false, + "id": "OnGiUzaEQqgTasbl-0xKM", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14071.301367729822, + "y": 3007.8561460083924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 190.64453125, + "height": 78.5859375, + "seed": 1367621275, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "9MYIHmegE0XBbsd04G17f" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 93, + "versionNonce": 1031917484, + "index": "b2V", + "isDeleted": false, + "id": "9MYIHmegE0XBbsd04G17f", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14114.247672051111, + "y": 3037.1491147583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 104.75192260742188, + "height": 20, + "seed": 1019189755, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "p1, p2, p3, p4", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "OnGiUzaEQqgTasbl-0xKM", + "originalText": "p1, p2, p3, p4", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 446, + "versionNonce": 805654804, + "index": "b2W", + "isDeleted": false, + "id": "f-k0ofkfLA-cSED_GnI4a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14287.332808464686, + "y": 3039.5866147583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 13.151962280273438, + "height": 20, + "seed": 1520816603, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 347, + "versionNonce": 981662252, + "index": "b2X", + "isDeleted": false, + "id": "6WAx8doYpIesuNQ9C6YlU", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14116.477736443201, + "y": 3110.5319272583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 101.80793762207031, + "height": 20, + "seed": 223233333, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "25th of July", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "25th of July", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 215, + "versionNonce": 1591873172, + "index": "b2Y", + "isDeleted": false, + "id": "EtloBmPUVEEJ89iM-BUim", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14147.39523217074, + "y": 2973.1959897583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 19.823989868164062, + "height": 20, + "seed": 1383452821, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "H0", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "H0", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 1027, + "versionNonce": 49992876, + "index": "b2Z", + "isDeleted": false, + "id": "8uBmK5-l9DnWZMNKnO6J_", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14274.510908285156, + "y": 2936.132549865024, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 0.2109375, + "height": 214.40625, + "seed": 1164887829, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0.2109375, + 214.40625 + ] + ] + }, + { + "type": "text", + "version": 888, + "versionNonce": 1581980692, + "index": "b2a", + "isDeleted": false, + "id": "hUFArL8DSE1oz4mbgmXIh", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14188.976141899744, + "y": 3166.7741147583924, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 204.19187927246094, + "height": 20, + "seed": 1985367093, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "p1 and p2 start unbonding", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "p1 and p2 start unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 409, + "versionNonce": 1418944300, + "index": "b2b", + "isDeleted": false, + "id": "VqnmYrAInp7iuEFNGKBM2", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15716.063581030454, + "y": 3518.0735898285743, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 229.22940624189496, + "height": 326.84774951837966, + "seed": 806430165, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "AYxBVnAfBEnvolyaEJIuz", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "arrow", + "version": 578, + "versionNonce": 2016835988, + "index": "b2c", + "isDeleted": false, + "id": "DeN__25763gQB1au9iAWF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15132.425318129372, + "y": 3775.3139965444047, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 342.8041433637027, + "height": 0, + "seed": 1832568789, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 342.8041433637027, + 0 + ] + ] + }, + { + "type": "rectangle", + "version": 168, + "versionNonce": 666278316, + "index": "b2d", + "isDeleted": false, + "id": "CikM8rmM1heQmbvMQbmzw", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14392.250059484935, + "y": 3424.9742777473452, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 116.28526619471282, + "height": 70, + "seed": 1433149039, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "nPi4IaVJzpkfpyKqsJs0q", + "type": "arrow" + }, + { + "type": "text", + "id": "ag6DXJdFw53dPlC0D9hAH" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 103, + "versionNonce": 1205479188, + "index": "b2e", + "isDeleted": false, + "id": "ag6DXJdFw53dPlC0D9hAH", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14415.832710282488, + "y": 3429.9742777473452, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 69.11996459960938, + "height": 60, + "seed": 426255233, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 1\nstart \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "CikM8rmM1heQmbvMQbmzw", + "originalText": "Day 1\nstart unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 291, + "versionNonce": 1468957740, + "index": "b2f", + "isDeleted": false, + "id": "_C9cJL9dNzzZZK4Q8JmPq", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14392.700334332521, + "y": 3508.20543915816, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 116.28526619471282, + "height": 34.98206732575341, + "seed": 1497778543, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 124, + "versionNonce": 296494228, + "index": "b2g", + "isDeleted": false, + "id": "kDHPSc-HyoPPORVYMbyH1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14398.643247598711, + "y": 3392.5080317922448, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.82392883300781, + "height": 20, + "seed": 1488000591, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "provider chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 408, + "versionNonce": 1241849516, + "index": "b2h", + "isDeleted": false, + "id": "wotIvNYZ2vhfdxNR01QnX", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14618.858023753708, + "y": 3547.744752510798, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 116.28526619471282, + "height": 34.98206732575341, + "seed": 1060596911, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "HKhvZTki9IJfSBEL-PieT" + }, + { + "id": "nPi4IaVJzpkfpyKqsJs0q", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 243, + "versionNonce": 459436564, + "index": "b2i", + "isDeleted": false, + "id": "HKhvZTki9IJfSBEL-PieT", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14653.336663015616, + "y": 3555.235786173675, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 47.32798767089844, + "height": 20, + "seed": 1914690145, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 11", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "wotIvNYZ2vhfdxNR01QnX", + "originalText": "Day 11", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 486, + "versionNonce": 398747948, + "index": "b2j", + "isDeleted": false, + "id": "QKkG-6hRIlXtXVq98y4fB", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14620.752037001503, + "y": 3613.279397689401, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 116.28526619471282, + "height": 34.98206732575341, + "seed": 774110927, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 452, + "versionNonce": 66260884, + "index": "b2k", + "isDeleted": false, + "id": "sQ2lcE-BDR7K1Mk_d2Sp5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14618.086124014982, + "y": 3450.882056130723, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 20, + "seed": 1375292655, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 412, + "versionNonce": 875979692, + "index": "b2l", + "isDeleted": false, + "id": "PeybwxXDIA6klJH2_ELTm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14395.78078606761, + "y": 3658.8402437260597, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 116.28526619471282, + "height": 70, + "seed": 175363087, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "CAsQlSm_zILUV5sEXj8nf" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 114, + "versionNonce": 462683412, + "index": "b2m", + "isDeleted": false, + "id": "CAsQlSm_zILUV5sEXj8nf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14419.363436865162, + "y": 3663.8402437260597, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 69.11996459960938, + "height": 60, + "seed": 468889391, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21\ncomplete\nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "PeybwxXDIA6klJH2_ELTm", + "originalText": "Day 21\ncomplete\nunbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 611, + "versionNonce": 361041452, + "index": "b2n", + "isDeleted": false, + "id": "nPi4IaVJzpkfpyKqsJs0q", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14517.097695003635, + "y": 3446.8251214910047, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 95.19024694617474, + "height": 113.83497246225988, + "seed": 1315947535, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "hE78za6aFKPgW5fwamnT6" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "CikM8rmM1heQmbvMQbmzw", + "focus": -0.889676508063761, + "gap": 8.562369323985877, + "fixedPoint": null + }, + "endBinding": { + "elementId": "wotIvNYZ2vhfdxNR01QnX", + "focus": -0.836710447833988, + "gap": 6.570081803899484, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 95.19024694617474, + 113.83497246225988 + ] + ] + }, + { + "type": "text", + "version": 120, + "versionNonce": 1002125972, + "index": "b2o", + "isDeleted": false, + "id": "hE78za6aFKPgW5fwamnT6", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14513.910377474058, + "y": 3464.1739520662045, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 83.16793823242188, + "height": 20, + "seed": 288446031, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "VSCPacket", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "nPi4IaVJzpkfpyKqsJs0q", + "originalText": "VSCPacket", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 90, + "versionNonce": 1553623212, + "index": "b2p", + "isDeleted": false, + "id": "890WSfWQGlIbC87H_ehv5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14438.381789703359, + "y": 3585.2899915384005, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 863354913, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 669, + "versionNonce": 522110996, + "index": "b2q", + "isDeleted": false, + "id": "DELc20CfMttOZ5SPrvKjI", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14620.117721243985, + "y": 3677.0870958831038, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 116.28526619471282, + "height": 34.98206732575341, + "seed": 1812429697, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "8_DLKCmktdp7xTvt1P0rl" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 353, + "versionNonce": 2099278636, + "index": "b2r", + "isDeleted": false, + "id": "8_DLKCmktdp7xTvt1P0rl", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14651.068360627964, + "y": 3684.5781295459806, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 54.38398742675781, + "height": 20, + "seed": 1432029519, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "DELc20CfMttOZ5SPrvKjI", + "originalText": "Day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 496, + "versionNonce": 968140180, + "index": "b2s", + "isDeleted": false, + "id": "VsuS_BBa0j0ZM7qkfZDdn", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14620.521539162859, + "y": 3491.5131073082675, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 116.28526619471282, + "height": 34.98206732575341, + "seed": 1604232353, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "hM85rh4tC76Jn4VzZhPub" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 350, + "versionNonce": 1702964652, + "index": "b2t", + "isDeleted": false, + "id": "hM85rh4tC76Jn4VzZhPub", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14651.66417988961, + "y": 3499.0041409711444, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 53.99998474121094, + "height": 20, + "seed": 344156289, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 10", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "VsuS_BBa0j0ZM7qkfZDdn", + "originalText": "Day 10", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 189, + "versionNonce": 280154900, + "index": "b2u", + "isDeleted": false, + "id": "nxB8UdfZnrQaz2fNN9KLV", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14610.561888367383, + "y": 3469.5336196091107, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 138.30942401763787, + "height": 274.3639001874294, + "seed": 1210577071, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "nhzjhMppXuDSQbWaRMZqQ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 158, + "versionNonce": 652646444, + "index": "b2v", + "isDeleted": false, + "id": "7GKVWsLVyqDZmjSAYvjsI", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14891.29396139928, + "y": 3463.4834980458763, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 158.57179215912583, + "height": 250.19915003350707, + "seed": 1217948833, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 227, + "versionNonce": 311382164, + "index": "b2w", + "isDeleted": false, + "id": "3CR-DAG6TM7kJ3AH7yIsg", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14927.237329788537, + "y": 3509.365075571196, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 119.87191772460938, + "height": 120, + "seed": 2021877039, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "nhzjhMppXuDSQbWaRMZqQ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "some\nother chain\nwith light client\nLC tracking\nthe consumer\nchain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "some\nother chain\nwith light client\nLC tracking\nthe consumer\nchain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 312, + "versionNonce": 490386092, + "index": "b2x", + "isDeleted": false, + "id": "nhzjhMppXuDSQbWaRMZqQ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 14915.444417113597, + "y": 3617.2173900299795, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 158.88984344035453, + "height": 144.97050911253973, + "seed": 1407934895, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "3CR-DAG6TM7kJ3AH7yIsg", + "focus": -0.9878984074067556, + "gap": 11.792912674940453, + "fixedPoint": null + }, + "endBinding": { + "elementId": "nxB8UdfZnrQaz2fNN9KLV", + "focus": -1.0214547193619712, + "gap": 7.683261288218773, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -158.88984344035453, + -144.97050911253973 + ] + ] + }, + { + "type": "rectangle", + "version": 506, + "versionNonce": 1862278676, + "index": "b2y", + "isDeleted": false, + "id": "7aiw3USl21lL_feMUkx6o", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15385.60451744391, + "y": 3385.1990923849007, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 550.7685307389853, + "height": 58.76982914768361, + "seed": 1767248765, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 384, + "versionNonce": 388463916, + "index": "b2z", + "isDeleted": false, + "id": "xdAWiRhPH1AqSOBv-xy2L", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15728.48355302298, + "y": 3520.732728667858, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 17909014, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "72oq-s1Ixuq556LQQc-y0" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 130, + "versionNonce": 1861958548, + "index": "b30", + "isDeleted": false, + "id": "72oq-s1Ixuq556LQQc-y0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15752.798217132466, + "y": 3525.732728667858, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 60, + "seed": 1090523126, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 1\nValidator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "xdAWiRhPH1AqSOBv-xy2L", + "originalText": "Day 1\nValidator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 246, + "versionNonce": 2115434412, + "index": "b31", + "isDeleted": false, + "id": "0HXhDCht9ERifhj9yfnrD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15668.041301954008, + "y": 3411.2266004562857, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 103.70258573154024, + "height": 57.53511941410079, + "seed": 286590410, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 296, + "versionNonce": 1287039252, + "index": "b32", + "isDeleted": false, + "id": "TaM6Kurkj6a9nZEffN_O4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15813.251366691436, + "y": 3384.40308453565, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 103.70258573154024, + "height": 57.53511941410079, + "seed": 459331466, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 425, + "versionNonce": 2117280300, + "index": "b33", + "isDeleted": false, + "id": "Fw_gfVCBReEgUClSZY1pC", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15728.119044813006, + "y": 3772.5506593620044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 1121655670, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "6UF61W-VsMA-qBhU70Vlb" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 191, + "versionNonce": 195585684, + "index": "b34", + "isDeleted": false, + "id": "6UF61W-VsMA-qBhU70Vlb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15737.905709044562, + "y": 3777.5506593620044, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 60, + "seed": 320093366, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21\nValidator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Fw_gfVCBReEgUClSZY1pC", + "originalText": "Day 21\nValidator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 499, + "versionNonce": 778435756, + "index": "b35", + "isDeleted": false, + "id": "L5ceQF8p_fCFxguFB9IJi", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16017.204331434468, + "y": 3616.1847287830105, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 229.22940624189496, + "height": 231.33230407116883, + "seed": 1696539446, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r9wTL8tbfJV2UAHX4C2Yu", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 546, + "versionNonce": 1350988820, + "index": "b36", + "isDeleted": false, + "id": "eM-UiGY2jxhFhACFMxzWp", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16027.687406860383, + "y": 3622.1566040009807, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 654396534, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "qyavk6tPf5jhD2N_hFchu" + }, + { + "id": "AYxBVnAfBEnvolyaEJIuz", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 297, + "versionNonce": 945391404, + "index": "b37", + "isDeleted": false, + "id": "qyavk6tPf5jhD2N_hFchu", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16052.00207096987, + "y": 3627.1566040009807, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 60, + "seed": 1431063990, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day X + 1\nValidator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "eM-UiGY2jxhFhACFMxzWp", + "originalText": "Day X + 1\nValidator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 470, + "versionNonce": 960942484, + "index": "b38", + "isDeleted": false, + "id": "FrdGGXGXDRxEbxeQK1m_g", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16029.488506250715, + "y": 3775.1463528692298, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 488974070, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "vGlMMdeWELS2IKHEB-zne" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 236, + "versionNonce": 7848364, + "index": "b39", + "isDeleted": false, + "id": "vGlMMdeWELS2IKHEB-zne", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16039.275170482271, + "y": 3780.1463528692298, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 60, + "seed": 1058068534, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21\nValidator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "FrdGGXGXDRxEbxeQK1m_g", + "originalText": "Day 21\nValidator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 104, + "versionNonce": 891256596, + "index": "b3A", + "isDeleted": false, + "id": "AYxBVnAfBEnvolyaEJIuz", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15955.129040195712, + "y": 3570.8383130967472, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 58.76086761031365, + "height": 57.3814541883371, + "seed": 329608758, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "VqnmYrAInp7iuEFNGKBM2", + "focus": -0.8432544524889435, + "gap": 9.83605292336324, + "fixedPoint": null + }, + "endBinding": { + "elementId": "eM-UiGY2jxhFhACFMxzWp", + "focus": -0.6266267948112152, + "gap": 13.797499054357104, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 58.76086761031365, + 57.3814541883371 + ] + ] + }, + { + "type": "text", + "version": 630, + "versionNonce": 1307225132, + "index": "b3B", + "isDeleted": false, + "id": "PINqK23breyTkzLNXaYlm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.742788151838286, + "x": 15960.79521032508, + "y": 3544.023223939778, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 69.60115051269531, + "height": 66.99243485314767, + "seed": 2051360874, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 13.398486970629534, + "fontFamily": 1, + "text": "VSCPacket\ndelayed\nX days\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket\ndelayed\nX days\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 112, + "versionNonce": 1552317588, + "index": "b3C", + "isDeleted": false, + "id": "lyh11dqJfnVEAxsj48sXd", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 15783.592191313955, + "y": 3487.6268065403906, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.82392883300781, + "height": 20, + "seed": 1860946422, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "provider chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 189, + "versionNonce": 1922844332, + "index": "b3D", + "isDeleted": false, + "id": "_aFsdGIb0FcvNjSaF-LHR", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16082.005389923519, + "y": 3584.445580106037, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 20, + "seed": 825748918, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 789, + "versionNonce": 1227999764, + "index": "b3E", + "isDeleted": false, + "id": "FJ8k4e5TNgfv5dbCNNglC", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16363.569323917274, + "y": 3712.1504490778098, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 229.22940624189496, + "height": 124.89233315508174, + "seed": 1095699498, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 766, + "versionNonce": 1932955948, + "index": "b3F", + "isDeleted": false, + "id": "-6KcpLRsv8eppbv8RsilU", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16376.82552062673, + "y": 3726.034231992956, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 94.13616127471043, + "seed": 2027603050, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "M58ksqNt0w78Oc5IztFGC" + }, + { + "id": "r9wTL8tbfJV2UAHX4C2Yu", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 576, + "versionNonce": 1847027604, + "index": "b3G", + "isDeleted": false, + "id": "M58ksqNt0w78Oc5IztFGC", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16389.884172773323, + "y": 3743.102312630311, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 179.00790405273438, + "height": 60, + "seed": 446342954, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Light client\ntracking the consumer \nchain", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "-6KcpLRsv8eppbv8RsilU", + "originalText": "Light client\ntracking the consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 401, + "versionNonce": 790858668, + "index": "b3H", + "isDeleted": false, + "id": "QNqvOf6_f0QkAybBUZYBL", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16415.30059244913, + "y": 3675.640531182338, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 122.44792175292969, + "height": 20, + "seed": 640359798, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "3rd party chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "3rd party chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 284, + "versionNonce": 1869436180, + "index": "b3I", + "isDeleted": false, + "id": "r9wTL8tbfJV2UAHX4C2Yu", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 16360.144118381868, + "y": 3742.546695253775, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 141.80798811120258, + "height": 151.09580024519346, + "seed": 899731562, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "-6KcpLRsv8eppbv8RsilU", + "focus": -0.6172020105952882, + "gap": 16.681402244860692, + "fixedPoint": null + }, + "endBinding": { + "elementId": "L5ceQF8p_fCFxguFB9IJi", + "focus": -0.9781147322041602, + "gap": 24.733833774429286, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -141.80798811120258, + -151.09580024519346 + ] + ] + }, + { + "type": "rectangle", + "version": 607, + "versionNonce": 143472172, + "index": "b3J", + "isDeleted": false, + "id": "_P8w0ZMTSL8AuoqvFf5pg", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17271.957898670425, + "y": 3746.977846898182, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189522, + "height": 562.7313924176319, + "seed": 471595834, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "d8jH5_d7g-tL-AplGJewj", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 391, + "versionNonce": 2057933460, + "index": "b3K", + "isDeleted": false, + "id": "V1HNrsQmqpXCxLlUdixbv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17282.247937292304, + "y": 3754.668329134922, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 1143768058, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Jx8tJ54bWXAHDwp6JcLsz" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 136, + "versionNonce": 207458476, + "index": "b3L", + "isDeleted": false, + "id": "Jx8tJ54bWXAHDwp6JcLsz", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17306.56260140179, + "y": 3759.668329134922, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 60, + "seed": 1387132090, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 1\nValidator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "V1HNrsQmqpXCxLlUdixbv", + "originalText": "Day 1\nValidator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 550, + "versionNonce": 511844372, + "index": "b3M", + "isDeleted": false, + "id": "mEgpf2hBcT6nGGrlVkA2t", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17285.61469922068, + "y": 4223.661728840185, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 423841146, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "4rGw-DDuVU1VwXmuf9PcR" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 315, + "versionNonce": 440310572, + "index": "b3N", + "isDeleted": false, + "id": "4rGw-DDuVU1VwXmuf9PcR", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17295.401363452238, + "y": 4228.661728840185, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 60, + "seed": 1026526778, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21\nValidator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "mEgpf2hBcT6nGGrlVkA2t", + "originalText": "Day 21\nValidator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 551, + "versionNonce": 585956756, + "index": "b3O", + "isDeleted": false, + "id": "AXevoxbrKJSgxdbA_quTt", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17581.451791129708, + "y": 3856.482405211404, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 473483194, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ngPuqaUSGayenSUn0YZVb" + }, + { + "id": "d8jH5_d7g-tL-AplGJewj", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 314, + "versionNonce": 211441068, + "index": "b3P", + "isDeleted": false, + "id": "ngPuqaUSGayenSUn0YZVb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17605.766455239194, + "y": 3861.482405211404, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 60, + "seed": 805027962, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 8\nValidator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "AXevoxbrKJSgxdbA_quTt", + "originalText": "Day 8\nValidator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 558, + "versionNonce": 1629498132, + "index": "b3Q", + "isDeleted": false, + "id": "AyglgJZJFH8dgKxSfZCwS", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17584.54847042919, + "y": 4225.641415280339, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 1784783162, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "GcM5Hn7J1TJYDChlZdX73" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 324, + "versionNonce": 1620754476, + "index": "b3R", + "isDeleted": false, + "id": "GcM5Hn7J1TJYDChlZdX73", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17594.335134660745, + "y": 4230.641415280339, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 60, + "seed": 1187867130, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21\nValidator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "AyglgJZJFH8dgKxSfZCwS", + "originalText": "Day 21\nValidator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1125, + "versionNonce": 462530708, + "index": "b3S", + "isDeleted": false, + "id": "d8jH5_d7g-tL-AplGJewj", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17516.37608869517, + "y": 3794.507836907568, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 51.41365882467653, + "height": 64.57198845169069, + "seed": 1547836090, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "_P8w0ZMTSL8AuoqvFf5pg", + "gap": 15.188783782850805, + "focus": -0.9332552955375547, + "fixedPoint": null + }, + "endBinding": { + "elementId": "AXevoxbrKJSgxdbA_quTt", + "gap": 13.66204360986012, + "focus": -0.6932816298391926, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 51.41365882467653, + 64.57198845169069 + ] + ] + }, + { + "type": "text", + "version": 923, + "versionNonce": 1579801260, + "index": "b3T", + "isDeleted": false, + "id": "BcwausjgyL5PQshqJixFd", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.9151181395173165, + "x": 17532.3024814452, + "y": 3764.6759178447924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 73.96746826171875, + "height": 71.17988561441425, + "seed": 1768076154, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "d8jH5_d7g-tL-AplGJewj", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 14.235977122882849, + "fontFamily": 1, + "text": "VSCPacket\ndelayed\n8 days\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket\ndelayed\n8 days\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 193, + "versionNonce": 1442280980, + "index": "b3U", + "isDeleted": false, + "id": "JfEV5YHshk3MOVQf3UND0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17635.769774192842, + "y": 3818.278223150054, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 20, + "seed": 1618097210, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 797, + "versionNonce": 1072801068, + "index": "b3V", + "isDeleted": false, + "id": "oGYytCpmIQar_EZW0x1hg", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17916.843875226514, + "y": 3945.983092121827, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189496, + "height": 124.89233315508174, + "seed": 1934859514, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "bJlcDLF6Hj0skLDkWJjVF", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 777, + "versionNonce": 759665556, + "index": "b3W", + "isDeleted": false, + "id": "hUdyUxWOrq0DdDlDLwCtg", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17931.047326963453, + "y": 3959.8668750369725, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 90, + "seed": 529132986, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "sH535DtsyF0YxOWzTYaRT" + }, + { + "id": "bJlcDLF6Hj0skLDkWJjVF", + "type": "arrow" + }, + { + "id": "EGLtFlDZTCOeWEk1eLKe4", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 626, + "versionNonce": 1532764076, + "index": "b3X", + "isDeleted": false, + "id": "sH535DtsyF0YxOWzTYaRT", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17936.313994551943, + "y": 3964.8668750369725, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 194.5918731689453, + "height": 80, + "seed": 976758394, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC: light client\ntracking the consumer \nchain with \ntrustingPeriod = 10 days", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "hUdyUxWOrq0DdDlDLwCtg", + "originalText": "LC: light client\ntracking the consumer chain with \ntrustingPeriod = 10 days", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 410, + "versionNonce": 800588052, + "index": "b3Y", + "isDeleted": false, + "id": "Dz_XW5DKjRN2tdgi51yZK", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17968.600407431262, + "y": 3908.919585765288, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 121.02391052246094, + "height": 20, + "seed": 2082555706, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "3rd-party chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "3rd-party chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1275, + "versionNonce": 1217612332, + "index": "b3Z", + "isDeleted": false, + "id": "bJlcDLF6Hj0skLDkWJjVF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17904.12796121132, + "y": 3971.8043825749246, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 97.71397035429254, + "height": 107.80014556361402, + "seed": 229134330, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "oGYytCpmIQar_EZW0x1hg", + "focus": -0.407842097720293, + "gap": 12.715914015192538, + "fixedPoint": null + }, + "endBinding": { + "elementId": "SZQdBff7bj0BVLFsdgwsf", + "focus": -1.013448668493488, + "gap": 10.640901795508398, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -44.081049102405814, + -33.965325335794205 + ], + [ + -97.71397035429254, + -107.80014556361402 + ] + ] + }, + { + "type": "text", + "version": 97, + "versionNonce": 884915860, + "index": "b3a", + "isDeleted": false, + "id": "CslZHsGJAmEOgs-OkDRCr", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17324.20043511851, + "y": 3727.9342043665497, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.82392883300781, + "height": 20, + "seed": 1752071782, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "provider chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 984, + "versionNonce": 176235692, + "index": "b3b", + "isDeleted": false, + "id": "EGLtFlDZTCOeWEk1eLKe4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17920.57874991987, + "y": 4024.9655121591754, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 114.63736234776297, + "height": 108.51581399639645, + "seed": 157055226, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "hUdyUxWOrq0DdDlDLwCtg", + "focus": 0.7616040318342983, + "gap": 10.468577043582627, + "fixedPoint": null + }, + "endBinding": { + "elementId": "NjWKbr1PT6xxfrsuJoL-g", + "focus": -0.18774619246635826, + "gap": 20.593751337524736, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -45.717798585690616, + 71.18496639389514 + ], + [ + -114.63736234776297, + 108.51581399639645 + ] + ] + }, + { + "type": "text", + "version": 143, + "versionNonce": 890358804, + "index": "b3c", + "isDeleted": false, + "id": "PkQh0qmVtAQUjGuGAvSuA", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18586.39230510735, + "y": 3851.348822314748, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 22.815994262695312, + "height": 240, + "seed": 478849532, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "x0rezLFRI1JYnnV65_XAH", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "U1\nU2\n...\n\nUk\n...\nUi\n...\nUj\n...\nUn\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "U1\nU2\n...\n\nUk\n...\nUi\n...\nUj\n...\nUn\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 186, + "versionNonce": 919580460, + "index": "b3d", + "isDeleted": false, + "id": "W4n9DgMsrQxhjQNoAUBBa", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18540.253427669122, + "y": 3888.5929847081493, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0.4073915287699492, + "height": 126.06623649510857, + "seed": 1179998588, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0.4073915287699492, + 126.06623649510857 + ] + ] + }, + { + "type": "text", + "version": 350, + "versionNonce": 581380500, + "index": "b3e", + "isDeleted": false, + "id": "4XHSA5rSpgbI6PoUNxgzD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18356.591320391588, + "y": 3922.6959439981347, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 175.59986877441406, + "height": 40, + "seed": 378964676, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "validator-set updates\non the provider chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "validator-set updates\non the provider chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 165, + "versionNonce": 501803436, + "index": "b3f", + "isDeleted": false, + "id": "Vp66LBGsSJzvbYRr087O8", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18562.670682581214, + "y": 3843.7298860047567, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 61.48395835525298, + "height": 235.74747159185335, + "seed": 2081217732, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 341, + "versionNonce": 1085593364, + "index": "b3g", + "isDeleted": false, + "id": "LklCS-uFdytH4wHi30GtT", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18711.920713312287, + "y": 3978.860584015011, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 61.48395835525298, + "height": 97.74537802574562, + "seed": 935096700, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "x0rezLFRI1JYnnV65_XAH", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "arrow", + "version": 414, + "versionNonce": 1928778796, + "index": "b3h", + "isDeleted": false, + "id": "x0rezLFRI1JYnnV65_XAH", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18621.685276494536, + "y": 3946.8010132934482, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 112.0540153393631, + "height": 22.226783077594973, + "seed": 2129165892, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "PkQh0qmVtAQUjGuGAvSuA", + "focus": -0.2395296314563665, + "gap": 12.476977124490077, + "fixedPoint": null + }, + "endBinding": { + "elementId": "LklCS-uFdytH4wHi30GtT", + "focus": 1.035743687141064, + "gap": 9.832787643968004, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 112.0540153393631, + 22.226783077594973 + ] + ] + }, + { + "type": "line", + "version": 152, + "versionNonce": 2075186324, + "index": "b3i", + "isDeleted": false, + "id": "vhNOqKbmNQpj_zG3qpG5m", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18545.059932986635, + "y": 4085.330930615262, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 358.82259659940974, + "height": 0.5253206555203178, + "seed": 664855548, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 358.82259659940974, + -0.5253206555203178 + ] + ] + }, + { + "type": "text", + "version": 117, + "versionNonce": 1944284844, + "index": "b3j", + "isDeleted": false, + "id": "fz4CkJWCuVvNrKAFbq3uU", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18915.410995128273, + "y": 4075.246203473238, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 51.00798034667969, + "height": 20, + "seed": 822574660, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "day 21", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 215, + "versionNonce": 1095836180, + "index": "b3k", + "isDeleted": false, + "id": "gm2PxfyDZwelYl3Xh5Cwu", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18923.945639266694, + "y": 3820.6576209850805, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 39.61598205566406, + "height": 20, + "seed": 640435524, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "day 1", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "day 1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 208, + "versionNonce": 291027244, + "index": "b3l", + "isDeleted": false, + "id": "ZhitZmGaLtV7Yt6kutc9S", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18549.79044896488, + "y": 3833.80963216052, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 358.82259659940974, + "height": 0.5253206555203178, + "seed": 1718420732, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 358.82259659940974, + -0.5253206555203178 + ] + ] + }, + { + "type": "text", + "version": 177, + "versionNonce": 1485553556, + "index": "b3m", + "isDeleted": false, + "id": "YWBmhz_PcFdtzjhB8Pdzz", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18792.70037833067, + "y": 4004.3171941483256, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 20, + "seed": 1649893500, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 211, + "versionNonce": 381727660, + "index": "b3n", + "isDeleted": false, + "id": "YytNpBBWbpSlGLatvf1sq", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19449.570051628383, + "y": 4164.498377820268, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 435.912509394504, + "height": 0.7897677882310745, + "seed": 237325820, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 435.912509394504, + -0.7897677882310745 + ] + ] + }, + { + "type": "text", + "version": 192, + "versionNonce": 966176020, + "index": "b3o", + "isDeleted": false, + "id": "QaVmI-pAac7h8OUDAvZWd", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19904.151099148305, + "y": 4154.810321377311, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 51.00798034667969, + "height": 20, + "seed": 1287794300, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "day 21", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 296, + "versionNonce": 1380277804, + "index": "b3p", + "isDeleted": false, + "id": "vAkyIV97p3UQNnujoznW9", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19899.902940669064, + "y": 3879.5305375594858, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 39.61598205566406, + "height": 20, + "seed": 1441726204, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "day 1", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "day 1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 458, + "versionNonce": 1709697684, + "index": "b3q", + "isDeleted": false, + "id": "klnh_5j3zqOBxe7m4icDj", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19518.428997288986, + "y": 3884.8206069516323, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 369.0681361870011, + "height": 3.1197614440061443, + "seed": 841858940, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 369.0681361870011, + 3.1197614440061443 + ] + ] + }, + { + "type": "text", + "version": 422, + "versionNonce": 1020311724, + "index": "b3r", + "isDeleted": false, + "id": "AfZeMwTBSbpeZC1_gkV0M", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19674.632944768662, + "y": 3852.730769851017, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 151.18389892578125, + "height": 20, + "seed": 1711342332, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC header updates", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "LC header updates", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 502, + "versionNonce": 1077245972, + "index": "b3s", + "isDeleted": false, + "id": "IApO5Q16VBMfln5vwufyf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19547.80236371203, + "y": 3941.9702090018604, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 56.688303116923635, + "seed": 1195542524, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "RmU20Q-ljKQr3z3LOeCan" + }, + { + "id": "28bmsnPMFa7ktrCf79F4W", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 291, + "versionNonce": 571261740, + "index": "b3t", + "isDeleted": false, + "id": "RmU20Q-ljKQr3z3LOeCan", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19568.72234654087, + "y": 3950.3143605603223, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 320.559814453125, + "height": 40, + "seed": 870608380, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "receives header signed from validator V \nthat would unbond on Day 21", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "IApO5Q16VBMfln5vwufyf", + "originalText": "receives header signed from validator V that would unbond on Day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 520, + "versionNonce": 1685411220, + "index": "b3u", + "isDeleted": false, + "id": "SZCgGzaWq_5f8DrrYjR31", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19547.611175582326, + "y": 4039.6011668860197, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 70, + "seed": 234728132, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "8TTtoRXmEui3rqT0RfO9a" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 431, + "versionNonce": 1214479788, + "index": "b3v", + "isDeleted": false, + "id": "8TTtoRXmEui3rqT0RfO9a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19561.99514766898, + "y": 4044.6011668860197, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 333.6318359375, + "height": 60, + "seed": 1778627140, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "figures out that consumer chain is \nunsecured and hence moves to sequential \nverification", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "SZCgGzaWq_5f8DrrYjR31", + "originalText": "figures out that consumer chain is unsecured and hence moves to sequential verification", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 107, + "versionNonce": 2145223444, + "index": "b3w", + "isDeleted": false, + "id": "kEMWe1O75vivtwxv0LnAQ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19707.873285224858, + "y": 4008.005159566673, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 1910477820, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 553, + "versionNonce": 419358764, + "index": "b3x", + "isDeleted": false, + "id": "OKWJSmqX6Zkr3A4PpkR0S", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19546.042360835567, + "y": 4183.526518863859, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 70, + "seed": 613999612, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "MRAvBL7AEoRzZ9LFHcdrw" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 199, + "versionNonce": 686030996, + "index": "b3y", + "isDeleted": false, + "id": "MRAvBL7AEoRzZ9LFHcdrw", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19554.79434439683, + "y": 4198.526518863859, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 344.89581298828125, + "height": 40, + "seed": 447643204, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "can only verify header at height h if it has\nreceived and verified header at (h - 1)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "OKWJSmqX6Zkr3A4PpkR0S", + "originalText": "can only verify header at height h if it has received and verified header at (h - 1)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 136, + "versionNonce": 1204355756, + "index": "b3z", + "isDeleted": false, + "id": "8cyW_KPh3XshBCZVlasCO", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19716.299318451205, + "y": 4128.920784698113, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 1150571460, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 142, + "versionNonce": 926862868, + "index": "b40", + "isDeleted": false, + "id": "lHDKcuGZo7Vrso3yPMPPL", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19709.002007032348, + "y": 3902.4396835808407, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 1158870724, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "freedraw", + "version": 551, + "versionNonce": 2070662444, + "index": "b41", + "isDeleted": false, + "id": "SFPoI1dGnb6ht0jaDOUel", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21423.62415030187, + "y": 3862.255479734119, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 82.3788554493076, + "height": 498.70798258360645, + "seed": 1924788092, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 16.699930427594836 + ], + [ + -0.22871103369470802, + 16.185674230295426 + ], + [ + -0.22871103369470802, + 15.69552379224543 + ], + [ + 0.08219302773431991, + 10.657420109333142 + ], + [ + 9.252076034976199, + -2.938228106753884 + ], + [ + 23.374982365690812, + -13.376021861303343 + ], + [ + 39.89220733040929, + -13.376021861303343 + ], + [ + 57.360012528926745, + 4.277429161594954 + ], + [ + 72.5264129508796, + 27.917143731175024 + ], + [ + 79.35558147264237, + 48.34275706763658 + ], + [ + 82.15014441561289, + 68.51927755853309 + ], + [ + 80.69568518570304, + 86.18076383451351 + ], + [ + 72.5264129508796, + 105.38501870239114 + ], + [ + 63.75677425260801, + 117.31736953034002 + ], + [ + 55.526750649460155, + 125.29637584155431 + ], + [ + 48.38310445636671, + 134.09497796721504 + ], + [ + 42.39730787136068, + 142.31504187091227 + ], + [ + 37.91242744498231, + 150.96097418799948 + ], + [ + 35.761114284279756, + 155.0669885133055 + ], + [ + 35.5216824208801, + 157.83111557378663 + ], + [ + 35.832586482309125, + 166.54132991553695 + ], + [ + 37.93386910438858, + 176.00685804706748 + ], + [ + 40.585487651300355, + 183.89747657437036 + ], + [ + 45.72791229955328, + 190.48638410226198 + ], + [ + 50.82030640918674, + 196.9547628339106 + ], + [ + 56.016335205964424, + 204.29898415158453 + ], + [ + 61.108729315597884, + 210.76736288323315 + ], + [ + 68.22378662947813, + 216.60095662134242 + ], + [ + 72.43349909344033, + 219.92755139761877 + ], + [ + 75.19232593739798, + 221.79976536591033 + ], + [ + 76.70753653563224, + 222.91666554441758 + ], + [ + 77.17925304262826, + 222.91666554441758 + ], + [ + 77.39366963672, + 222.91666554441758 + ], + [ + 77.39366963672, + 223.3987807293854 + ], + [ + 77.39366963672, + 223.87286066127018 + ], + [ + 77.39366963672, + 224.3469405931549 + ], + [ + 77.39366963672, + 225.33527672234007 + ], + [ + 75.24235647601745, + 229.497537819226 + ], + [ + 70.26789149313481, + 239.18805303707632 + ], + [ + 65.26483763103897, + 248.11521921206108 + ], + [ + 61.66263885032822, + 254.1336237710724 + ], + [ + 58.2355469547947, + 261.7992552120576 + ], + [ + 56.08423379409214, + 267.24715680219253 + ], + [ + 54.24382469482225, + 271.93974460254316 + ], + [ + 52.66428911836192, + 276.6323324028958 + ], + [ + 51.345627064707514, + 281.4374137464063 + ], + [ + 49.951919203125726, + 287.64062912632363 + ], + [ + 48.92271955149408, + 291.6903966800517 + ], + [ + 48.683287688094424, + 293.8117034939104 + ], + [ + 48.683287688094424, + 295.36250733888875 + ], + [ + 48.683287688094424, + 296.9534874492827 + ], + [ + 49.701766510021116, + 302.176401953098 + ], + [ + 51.863800500424986, + 306.39490982156383 + ], + [ + 55.037166092955886, + 312.24457406583946 + ], + [ + 59.84367141046823, + 319.4763018403535 + ], + [ + 65.81517355586766, + 326.9410519542684 + ], + [ + 71.55439105767437, + 336.03695844399095 + ], + [ + 74.31321790162838, + 340.95453333066126 + ], + [ + 76.26440890784579, + 349.086209450448 + ], + [ + 77.19712109213651, + 361.2917588832125 + ], + [ + 77.19712109213651, + 376.4623167035282 + ], + [ + 76.12861173159035, + 392.7337041961849 + ], + [ + 73.46627235497363, + 406.91592588731754 + ], + [ + 71.22204533683544, + 419.12147532008186 + ], + [ + 69.10646827514938, + 428.5870034516124 + ], + [ + 67.37684108282338, + 436.30084641109437 + ], + [ + 64.26422685862053, + 444.54501607404103 + ], + [ + 62.16294423654108, + 448.0644569243045 + ], + [ + 60.3475504065791, + 450.9410775279455 + ], + [ + 57.91034845375907, + 453.3436181996998 + ], + [ + 55.13722717019482, + 456.3889791180784 + ], + [ + 52.364105886634206, + 458.84776656141463 + ], + [ + 49.59098460307359, + 461.8931274797934 + ], + [ + 45.95662333325163, + 464.994735169752 + ], + [ + 42.847582718946796, + 467.5097693846661 + ], + [ + 40.07446143538618, + 469.96855682800015 + ], + [ + 37.30134015182557, + 471.84077079629174 + ], + [ + 33.8563802067838, + 473.12641128953885 + ], + [ + 31.083258923219546, + 475.5851987328729 + ], + [ + 28.981976301140094, + 477.93149263304923 + ], + [ + 26.88069367906064, + 480.27778653322565 + ], + [ + 23.582251739979256, + 482.0375069583573 + ], + [ + 21.480969117899804, + 482.62408043340196 + ], + [ + 19.665575287937827, + 483.2106539084445 + ], + [ + 18.421959042218077, + 484.2713073153738 + ], + [ + 16.892454004377214, + 485.33196072230317 + ], + [ + 15.077060174415237, + 485.33196072230317 + ], + [ + 14.119332720812963, + 485.33196072230317 + ], + [ + 13.901342516823206, + 485.33196072230317 + ], + [ + 13.901342516823206, + 485.33196072230317 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "line", + "version": 82, + "versionNonce": 467921812, + "index": "b42", + "isDeleted": false, + "id": "sqpRYi7TxnEWG95Ie_xYO", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19960.49176916167, + "y": 4028.5141067913637, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 153.6938146435823, + "height": 0.22871103369607226, + "seed": 1811987708, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 153.6938146435823, + 0.22871103369607226 + ] + ] + }, + { + "type": "line", + "version": 155, + "versionNonce": 1968261036, + "index": "b43", + "isDeleted": false, + "id": "CpsoRtC34Szs3KIAnH2Ie", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19580.87022276305, + "y": 4265.987459285077, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 543.6211118256215, + "height": 2.5908671785850856, + "seed": 479016060, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 543.6211118256215, + -2.5908671785850856 + ] + ] + }, + { + "type": "text", + "version": 92, + "versionNonce": 956913940, + "index": "b44", + "isDeleted": false, + "id": "yADEqxYM86uRWOvKzWnWJ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20052.07624371723, + "y": 4130.183308488952, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 109.40791320800781, + "height": 20, + "seed": 73043140, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "trustingPeriod", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "trustingPeriod", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 132, + "versionNonce": 967012908, + "index": "b45", + "isDeleted": false, + "id": "28bmsnPMFa7ktrCf79F4W", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19551.820888046277, + "y": 4220.466989040372, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 199.37884362431942, + "height": 248.31228400551709, + "seed": 896023164, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "IApO5Q16VBMfln5vwufyf", + "focus": 0.8613740271206081, + "gap": 6.502183215761761, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -199.37884362431942, + -91.50228152782984 + ], + [ + -10.5207075500075, + -248.31228400551709 + ] + ] + }, + { + "type": "line", + "version": 88, + "versionNonce": 975509140, + "index": "b46", + "isDeleted": false, + "id": "hHbqqMFsbVHN2_KZ5Ygwc", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19373.965896858677, + "y": 4034.053202138684, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 67.94504505716031, + "height": 63.22787998718604, + "seed": 105835388, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 67.94504505716031, + 63.22787998718604 + ] + ] + }, + { + "type": "line", + "version": 173, + "versionNonce": 927747244, + "index": "b47", + "isDeleted": false, + "id": "PQ0skkxpMv8QdmftdJiNE", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19425.79201413459, + "y": 4036.107301449586, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 44.923850071718334, + "height": 64.52152677152799, + "seed": 332140356, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -44.923850071718334, + 64.52152677152799 + ] + ] + }, + { + "type": "text", + "version": 115, + "versionNonce": 1810703380, + "index": "b48", + "isDeleted": false, + "id": "R3ZpgtoHCfioJxZqKH3A2", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19352.424176372453, + "y": 3973.6734892429913, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 119.37591552734375, + "height": 40, + "seed": 333423484, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "cannot use\nthis old header", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "cannot use\nthis old header", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 158, + "versionNonce": 1878382380, + "index": "b49", + "isDeleted": false, + "id": "L2jX6ucW5-Dlnibr8MjEj", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19717.264193124596, + "y": 4162.855784322729, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 773255420, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 196, + "versionNonce": 341279124, + "index": "b4A", + "isDeleted": false, + "id": "QCJoJKd5bmUp9jTgRBTk4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19717.13911677805, + "y": 4247.575354257516, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 2112138364, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 595, + "versionNonce": 537530796, + "index": "b4B", + "isDeleted": false, + "id": "aFHhNFT6FP4mcZmtNIDiA", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19550.262794129227, + "y": 4280.578616568713, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 70, + "seed": 185816132, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "5p7DJ5f7yWtv5RsRfk6K5" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 383, + "versionNonce": 1251618580, + "index": "b4C", + "isDeleted": false, + "id": "5p7DJ5f7yWtv5RsRfk6K5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19562.302802592832, + "y": 4295.578616568713, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 338.31976318359375, + "height": 40, + "seed": 1504193476, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "after trustingPeriod it can start skipping \nheaders again", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "aFHhNFT6FP4mcZmtNIDiA", + "originalText": "after trustingPeriod it can start skipping headers again", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 217, + "versionNonce": 1723005996, + "index": "b4D", + "isDeleted": false, + "id": "FnduLqI2Qb0l2O_gswLIO", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19719.49412570314, + "y": 4259.754216801818, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 38442620, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 636, + "versionNonce": 1328229524, + "index": "b4E", + "isDeleted": false, + "id": "xW_6dvza-BdHGgHVJvBSy", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20847.476041152808, + "y": 3918.7952841659135, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 70, + "seed": 1486197628, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "-Rf0vK0ofA7Wf0YysZjps" + }, + { + "id": "xYixIX-uWw9ZuWIKDCh4u", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 465, + "versionNonce": 1843041964, + "index": "b4F", + "isDeleted": false, + "id": "-Rf0vK0ofA7Wf0YysZjps", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20868.396023981648, + "y": 3923.7952841659135, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 320.559814453125, + "height": 60, + "seed": 1007535100, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 1\nreceives header signed from validator V \nthat would unbond on Day 21", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "xW_6dvza-BdHGgHVJvBSy", + "originalText": "header 1\nreceives header signed from validator V that would unbond on Day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 246, + "versionNonce": 1673558548, + "index": "b4G", + "isDeleted": false, + "id": "_P3hJubaeD5eO1m6NkJqp", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20867.40963718334, + "y": 3865.518185574186, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 361.88775634765625, + "height": 40, + "seed": 1014555516, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Light-client LC's headers in a 3rd-party chain\nthat track the consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Light-client LC's headers in a 3rd-party chain\nthat track the consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 203, + "versionNonce": 304800044, + "index": "b4H", + "isDeleted": false, + "id": "JIDPCEKfIhvMbXdiI8nqL", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20704.838975544437, + "y": 4299.5223872812885, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 720.3039589655345, + "height": 1.350824542765622, + "seed": 153083388, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 720.3039589655345, + 1.350824542765622 + ] + ] + }, + { + "type": "text", + "version": 130, + "versionNonce": 592451476, + "index": "b4I", + "isDeleted": false, + "id": "hoI2NUU9gZLqcl8VyT4kP", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20643.376458848594, + "y": 4288.4084604876325, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 54.38398742675781, + "height": 20, + "seed": 388101188, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 154, + "versionNonce": 185457580, + "index": "b4J", + "isDeleted": false, + "id": "4CJVYMv7yqS3bknJ7kbzi", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21515.469498380207, + "y": 4073.8953789304737, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 109.40791320800781, + "height": 20, + "seed": 1295706180, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "trustingPeriod", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "trustingPeriod", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 154, + "versionNonce": 1510999316, + "index": "b4K", + "isDeleted": false, + "id": "63UvXV5MN3hlwWGUCmT6u", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20701.74780297964, + "y": 4092.0600380597834, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 695.1636133085012, + "height": 1.0899510199565157, + "seed": 143648508, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 695.1636133085012, + -1.0899510199565157 + ] + ] + }, + { + "type": "text", + "version": 317, + "versionNonce": 313361964, + "index": "b4L", + "isDeleted": false, + "id": "7YGBr0un8I_ORoHYlsnpo", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20582.419156949134, + "y": 4060.8506632943995, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 80, + "seed": 1917224956, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC figures\nout that\nconsumer chain\nis unsecure", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "LC figures\nout that\nconsumer chain\nis unsecure", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 712, + "versionNonce": 1568031380, + "index": "b4M", + "isDeleted": false, + "id": "Vipo_vTCaYvVADMGXVQAt", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20846.73273029328, + "y": 3995.970963598644, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 1844210372, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "MVMO3WR5iqgg4euuN2TiA" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 533, + "versionNonce": 234086572, + "index": "b4N", + "isDeleted": false, + "id": "MVMO3WR5iqgg4euuN2TiA", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20992.2046387813, + "y": 4000.970963598644, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 71.45596313476562, + "height": 20, + "seed": 1578791492, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 2", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Vipo_vTCaYvVADMGXVQAt", + "originalText": "header 2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 742, + "versionNonce": 1681444884, + "index": "b4O", + "isDeleted": false, + "id": "BhKvs9Zt-YQN7O-YXxACb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20846.32891237441, + "y": 4035.4953812954727, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 177954428, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "-tPY6LmMAvJiRJgUa8LxZ" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 565, + "versionNonce": 881519404, + "index": "b4P", + "isDeleted": false, + "id": "-tPY6LmMAvJiRJgUa8LxZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20992.048821961063, + "y": 4040.4953812954727, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 70.9599609375, + "height": 20, + "seed": 1629630204, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 3", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "BhKvs9Zt-YQN7O-YXxACb", + "originalText": "header 3", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 800, + "versionNonce": 1582149012, + "index": "b4Q", + "isDeleted": false, + "id": "i37dJbWjk_RMo4ztfHb5K", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20848.887617063883, + "y": 4104.8126925548095, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 1402547908, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "WuKF3rfpVqxIUdQmq-Ck7" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 627, + "versionNonce": 953984428, + "index": "b4R", + "isDeleted": false, + "id": "WuKF3rfpVqxIUdQmq-Ck7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20988.943532815087, + "y": 4109.8126925548095, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 82.28794860839844, + "height": 20, + "seed": 2039395908, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 15 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "i37dJbWjk_RMo4ztfHb5K", + "originalText": "header 15 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 100, + "versionNonce": 1290459924, + "index": "b4S", + "isDeleted": false, + "id": "3wCHg2cFoNvPBR5nX53Xu", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21013.259378093135, + "y": 4067.0325209885523, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 46949628, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 925, + "versionNonce": 1880297516, + "index": "b4T", + "isDeleted": false, + "id": "_6chvO3YfLsZvlc5fSwVI", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20855.477353722243, + "y": 4245.4521102282215, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 1563533052, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "c3kxKgNI84HB-5u8nFN6k" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 755, + "versionNonce": 445012116, + "index": "b4U", + "isDeleted": false, + "id": "c3kxKgNI84HB-5u8nFN6k", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20989.90926892413, + "y": 4250.4521102282215, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 93.53594970703125, + "height": 20, + "seed": 2015125372, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 134 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "_6chvO3YfLsZvlc5fSwVI", + "originalText": "header 134 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 156, + "versionNonce": 2048404140, + "index": "b4V", + "isDeleted": false, + "id": "_ohZPBR76YMAUqszGR0xR", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21011.990207656723, + "y": 4275.524557297124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 1006247676, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 219, + "versionNonce": 1926637076, + "index": "b4W", + "isDeleted": false, + "id": "WxyR0mxiOHaOZqqemQXqt", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21010.049737480203, + "y": 4180.209234004398, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 1393769340, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "freedraw", + "version": 608, + "versionNonce": 1771435308, + "index": "b4X", + "isDeleted": false, + "id": "liD3d13E9xAla8d83NfB5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 3.1598464320413715, + "x": 20775.367330146, + "y": 4121.114274854922, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 66.68781617442805, + "height": 183.45142781943966, + "seed": 2110859844, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + -0.04356353086879562, + -2.312480504207191 + ], + [ + -0.22871103369470802, + -2.501651395699301 + ], + [ + -0.22871103369470802, + -2.6819549016523476 + ], + [ + 0.022973852959496742, + -4.535238479237133 + ], + [ + 7.446231544422092, + -9.536443923053843 + ], + [ + 18.87908984397593, + -13.376021861303343 + ], + [ + 32.25021106374857, + -13.376021861303343 + ], + [ + 46.390851592145744, + -6.882139851808315 + ], + [ + 58.66844537334778, + 1.813809566459594 + ], + [ + 64.19683409056847, + 9.327440912902851 + ], + [ + 66.45910514073334, + 16.749442608780303 + ], + [ + 65.2816827399437, + 23.24628041345464 + ], + [ + 58.66844537334778, + 30.31063089260493 + ], + [ + 51.56919581183421, + 34.69998673425263 + ], + [ + 44.90677863980076, + 37.63509134755645 + ], + [ + 39.12381210619407, + 40.871687069176005 + ], + [ + 34.27815480565001, + 43.89546553786631 + ], + [ + 30.64752799240597, + 47.07590115107404 + ], + [ + 28.90598429394025, + 48.586312487829 + ], + [ + 28.712158001918958, + 49.603106029597924 + ], + [ + 28.963842888573165, + 52.8071880042424 + ], + [ + 30.664885570793782, + 56.289114725764726 + ], + [ + 32.81143943169285, + 59.191705592093115 + ], + [ + 36.974365315563226, + 61.61545763933318 + ], + [ + 41.09679018319145, + 63.9948727588794 + ], + [ + 45.30311001303873, + 66.69646955299807 + ], + [ + 49.425534880666945, + 69.07588467254432 + ], + [ + 55.18535797641929, + 71.22179197290576 + ], + [ + 58.59322920032411, + 72.44549117724378 + ], + [ + 60.82657095317401, + 73.13419145408166 + ], + [ + 62.053173159401204, + 73.5450469840402 + ], + [ + 62.435039883980195, + 73.5450469840402 + ], + [ + 62.60861566788188, + 73.5450469840402 + ], + [ + 62.60861566788188, + 73.72239469481391 + ], + [ + 62.60861566788188, + 73.89678661040797 + ], + [ + 62.60861566788188, + 74.07117852600202 + ], + [ + 62.60861566788188, + 74.43474133308855 + ], + [ + 60.86707196941617, + 75.96584323610055 + ], + [ + 56.84011378293417, + 79.53053222265113 + ], + [ + 52.79001215859782, + 82.81442066714341 + ], + [ + 49.87393898907424, + 85.02831125663393 + ], + [ + 47.09961937640557, + 87.84813985793483 + ], + [ + 45.35807567793985, + 89.85216898967727 + ], + [ + 43.86821686613128, + 91.57835337454038 + ], + [ + 42.58954192473476, + 93.30453775940424 + ], + [ + 41.52205085374734, + 95.07210327678146 + ], + [ + 40.39380825839816, + 97.35397715540255 + ], + [ + 39.56064449567713, + 98.84369792590118 + ], + [ + 39.366818203655846, + 99.62402785330559 + ], + [ + 39.366818203655846, + 100.1944963229605 + ], + [ + 39.366818203655846, + 100.77974376851382 + ], + [ + 40.19130317718149, + 102.70101063522803 + ], + [ + 41.94152566483965, + 104.25280310449709 + ], + [ + 44.5104472665628, + 106.40462199521791 + ], + [ + 48.40143775565643, + 109.06483765682243 + ], + [ + 53.23552333727332, + 111.81077137863413 + ], + [ + 57.881568486335446, + 115.15673152189687 + ], + [ + 60.1149102391824, + 116.9656781717882 + ], + [ + 61.6944498726736, + 119.95694289350347 + ], + [ + 62.44950453263916, + 124.44679577125643 + ], + [ + 62.44950453263916, + 130.0273370702675 + ], + [ + 61.584518542871365, + 136.01282230887767 + ], + [ + 59.429285892776925, + 141.22980080080288 + ], + [ + 57.61252602129048, + 145.71965367855586 + ], + [ + 55.89991162014269, + 149.20158040007817 + ], + [ + 54.499733630013814, + 152.03914377245644 + ], + [ + 51.97999183373114, + 155.0717896266858 + ], + [ + 50.278949151510524, + 156.36642791533336 + ], + [ + 48.80934084782156, + 157.42460258961637 + ], + [ + 46.83636277082419, + 158.30838534830463 + ], + [ + 44.59144929904711, + 159.42863172135804 + ], + [ + 42.34653582727299, + 160.33310504630413 + ], + [ + 40.101622355498854, + 161.4533514193576 + ], + [ + 37.15951281839208, + 162.59428835866817 + ], + [ + 34.64266395183825, + 163.51945224987054 + ], + [ + 32.397750480064126, + 164.42392557481583 + ], + [ + 30.152837008289993, + 165.11262585165366 + ], + [ + 27.364052746962354, + 165.58555308038342 + ], + [ + 25.119139275185283, + 166.4900264053287 + ], + [ + 23.418096592964663, + 167.35311859776067 + ], + [ + 21.71705391074405, + 168.21621079019252 + ], + [ + 19.04687976841403, + 168.8635299345163 + ], + [ + 17.345837086193413, + 169.07930298262448 + ], + [ + 15.87622878250445, + 169.29507603073188 + ], + [ + 14.869489235884688, + 169.68524099443414 + ], + [ + 13.631315310730322, + 170.07540595813634 + ], + [ + 12.16170700704136, + 170.07540595813634 + ], + [ + 11.38640183895325, + 170.07540595813634 + ], + [ + 11.209933125322717, + 170.07540595813634 + ], + [ + 11.209933125322717, + 170.07540595813634 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "text", + "version": 193, + "versionNonce": 449856404, + "index": "b4Y", + "isDeleted": false, + "id": "xWKkE9gPSw_2yRN9ZNeA4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20636.289990413923, + "y": 4171.315558455183, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 132.22390747070312, + "height": 60, + "seed": 103951684, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC cannot\nverify with those\nheaders ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "LC cannot\nverify with those\nheaders ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 714, + "versionNonce": 1811312556, + "index": "b4Z", + "isDeleted": false, + "id": "y4cL91zpGVFa_L6qShPTT", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20855.155728831083, + "y": 4313.831056702143, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 70, + "seed": 380532676, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "OUsXICl-z8IfJFknv8Qgl" + }, + { + "id": "xYixIX-uWw9ZuWIKDCh4u", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 624, + "versionNonce": 1219146004, + "index": "b4a", + "isDeleted": false, + "id": "OUsXICl-z8IfJFknv8Qgl", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20860.579709462658, + "y": 4328.831056702143, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 351.55181884765625, + "height": 40, + "seed": 487776068, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "We should not accept a header with a Root\nthat uses trustedHeader this one ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "y4cL91zpGVFa_L6qShPTT", + "originalText": "We should not accept a header with a Root\nthat uses trustedHeader this one ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 341, + "versionNonce": 1902352940, + "index": "b4b", + "isDeleted": false, + "id": "xYixIX-uWw9ZuWIKDCh4u", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21221.50434788304, + "y": 4350.389150619195, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 119.78740389817904, + "height": 394.6122997629009, + "seed": 259382980, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "y4cL91zpGVFa_L6qShPTT", + "focus": 0.9277386003003212, + "gap": 3.948838941152644, + "fixedPoint": null + }, + "endBinding": { + "elementId": "xW_6dvza-BdHGgHVJvBSy", + "focus": -0.9015730605291624, + "gap": 2.976817047903751, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 111.13569432665463, + -201.58376093354218 + ], + [ + -8.651709571524407, + -394.6122997629009 + ] + ] + }, + { + "type": "freedraw", + "version": 641, + "versionNonce": 2077978260, + "index": "b4c", + "isDeleted": false, + "id": "UhzcZ6PbWU4pOIBx2VVh2", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22844.660432229586, + "y": 3842.990595835822, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 82.3788554493076, + "height": 498.70798258360645, + "seed": 1623884100, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 16.699930427594836 + ], + [ + -0.22871103369470802, + 16.185674230295426 + ], + [ + -0.22871103369470802, + 15.69552379224543 + ], + [ + 0.08219302773431991, + 10.657420109333142 + ], + [ + 9.252076034976199, + -2.938228106753884 + ], + [ + 23.374982365690812, + -13.376021861303343 + ], + [ + 39.89220733040929, + -13.376021861303343 + ], + [ + 57.360012528926745, + 4.277429161594954 + ], + [ + 72.5264129508796, + 27.917143731175024 + ], + [ + 79.35558147264237, + 48.34275706763658 + ], + [ + 82.15014441561289, + 68.51927755853309 + ], + [ + 80.69568518570304, + 86.18076383451351 + ], + [ + 72.5264129508796, + 105.38501870239114 + ], + [ + 63.75677425260801, + 117.31736953034002 + ], + [ + 55.526750649460155, + 125.29637584155431 + ], + [ + 48.38310445636671, + 134.09497796721504 + ], + [ + 42.39730787136068, + 142.31504187091227 + ], + [ + 37.91242744498231, + 150.96097418799948 + ], + [ + 35.761114284279756, + 155.0669885133055 + ], + [ + 35.5216824208801, + 157.83111557378663 + ], + [ + 35.832586482309125, + 166.54132991553695 + ], + [ + 37.93386910438858, + 176.00685804706748 + ], + [ + 40.585487651300355, + 183.89747657437036 + ], + [ + 45.72791229955328, + 190.48638410226198 + ], + [ + 50.82030640918674, + 196.9547628339106 + ], + [ + 56.016335205964424, + 204.29898415158453 + ], + [ + 61.108729315597884, + 210.76736288323315 + ], + [ + 68.22378662947813, + 216.60095662134242 + ], + [ + 72.43349909344033, + 219.92755139761877 + ], + [ + 75.19232593739798, + 221.79976536591033 + ], + [ + 76.70753653563224, + 222.91666554441758 + ], + [ + 77.17925304262826, + 222.91666554441758 + ], + [ + 77.39366963672, + 222.91666554441758 + ], + [ + 77.39366963672, + 223.3987807293854 + ], + [ + 77.39366963672, + 223.87286066127018 + ], + [ + 77.39366963672, + 224.3469405931549 + ], + [ + 77.39366963672, + 225.33527672234007 + ], + [ + 75.24235647601745, + 229.497537819226 + ], + [ + 70.26789149313481, + 239.18805303707632 + ], + [ + 65.26483763103897, + 248.11521921206108 + ], + [ + 61.66263885032822, + 254.1336237710724 + ], + [ + 58.2355469547947, + 261.7992552120576 + ], + [ + 56.08423379409214, + 267.24715680219253 + ], + [ + 54.24382469482225, + 271.93974460254316 + ], + [ + 52.66428911836192, + 276.6323324028958 + ], + [ + 51.345627064707514, + 281.4374137464063 + ], + [ + 49.951919203125726, + 287.64062912632363 + ], + [ + 48.92271955149408, + 291.6903966800517 + ], + [ + 48.683287688094424, + 293.8117034939104 + ], + [ + 48.683287688094424, + 295.36250733888875 + ], + [ + 48.683287688094424, + 296.9534874492827 + ], + [ + 49.701766510021116, + 302.176401953098 + ], + [ + 51.863800500424986, + 306.39490982156383 + ], + [ + 55.037166092955886, + 312.24457406583946 + ], + [ + 59.84367141046823, + 319.4763018403535 + ], + [ + 65.81517355586766, + 326.9410519542684 + ], + [ + 71.55439105767437, + 336.03695844399095 + ], + [ + 74.31321790162838, + 340.95453333066126 + ], + [ + 76.26440890784579, + 349.086209450448 + ], + [ + 77.19712109213651, + 361.2917588832125 + ], + [ + 77.19712109213651, + 376.4623167035282 + ], + [ + 76.12861173159035, + 392.7337041961849 + ], + [ + 73.46627235497363, + 406.91592588731754 + ], + [ + 71.22204533683544, + 419.12147532008186 + ], + [ + 69.10646827514938, + 428.5870034516124 + ], + [ + 67.37684108282338, + 436.30084641109437 + ], + [ + 64.26422685862053, + 444.54501607404103 + ], + [ + 62.16294423654108, + 448.0644569243045 + ], + [ + 60.3475504065791, + 450.9410775279455 + ], + [ + 57.91034845375907, + 453.3436181996998 + ], + [ + 55.13722717019482, + 456.3889791180784 + ], + [ + 52.364105886634206, + 458.84776656141463 + ], + [ + 49.59098460307359, + 461.8931274797934 + ], + [ + 45.95662333325163, + 464.994735169752 + ], + [ + 42.847582718946796, + 467.5097693846661 + ], + [ + 40.07446143538618, + 469.96855682800015 + ], + [ + 37.30134015182557, + 471.84077079629174 + ], + [ + 33.8563802067838, + 473.12641128953885 + ], + [ + 31.083258923219546, + 475.5851987328729 + ], + [ + 28.981976301140094, + 477.93149263304923 + ], + [ + 26.88069367906064, + 480.27778653322565 + ], + [ + 23.582251739979256, + 482.0375069583573 + ], + [ + 21.480969117899804, + 482.62408043340196 + ], + [ + 19.665575287937827, + 483.2106539084445 + ], + [ + 18.421959042218077, + 484.2713073153738 + ], + [ + 16.892454004377214, + 485.33196072230317 + ], + [ + 15.077060174415237, + 485.33196072230317 + ], + [ + 14.119332720812963, + 485.33196072230317 + ], + [ + 13.901342516823206, + 485.33196072230317 + ], + [ + 13.901342516823206, + 485.33196072230317 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "rectangle", + "version": 726, + "versionNonce": 1422357676, + "index": "b4d", + "isDeleted": false, + "id": "ajhdYa9yl6Dtveb1bFAUk", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22268.51232308053, + "y": 3899.5304002676157, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 70, + "seed": 703707332, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "d9_Qwg5HOZPshQppC1mQw" + }, + { + "id": "W0j77U-vBXbV8gTtZaQT4", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 555, + "versionNonce": 1427667988, + "index": "b4e", + "isDeleted": false, + "id": "d9_Qwg5HOZPshQppC1mQw", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22289.43230590937, + "y": 3904.5304002676157, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 320.559814453125, + "height": 60, + "seed": 1212547140, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 1\nreceives header signed from validator V \nthat would unbond on Day 21", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ajhdYa9yl6Dtveb1bFAUk", + "originalText": "header 1\nreceives header signed from validator V that would unbond on Day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 336, + "versionNonce": 63700780, + "index": "b4f", + "isDeleted": false, + "id": "YtQvaxhe8cZzBlUHYJgxY", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22288.44591911106, + "y": 3846.253301675889, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 361.88775634765625, + "height": 40, + "seed": 866473924, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Light-client LC's headers in a 3rd-party chain\nthat track the consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Light-client LC's headers in a 3rd-party chain\nthat track the consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 293, + "versionNonce": 1851251092, + "index": "b4g", + "isDeleted": false, + "id": "T3NDeDTexaApl9nRO2z40", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22125.875257472155, + "y": 4280.257503382992, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 720.3039589655345, + "height": 1.350824542765622, + "seed": 942522180, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 720.3039589655345, + 1.350824542765622 + ] + ] + }, + { + "type": "text", + "version": 220, + "versionNonce": 651901356, + "index": "b4h", + "isDeleted": false, + "id": "xfXGcFWw93qNc0_LBHxkW", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22064.41274077631, + "y": 4269.143576589336, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 54.38398742675781, + "height": 20, + "seed": 1849505476, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 244, + "versionNonce": 852461332, + "index": "b4i", + "isDeleted": false, + "id": "0ftHPz04GvcIzbqsLaJfT", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22936.50578030793, + "y": 4054.6304950321764, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 109.40791320800781, + "height": 20, + "seed": 846315076, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "trustingPeriod", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "trustingPeriod", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 246, + "versionNonce": 1226777644, + "index": "b4j", + "isDeleted": false, + "id": "voGA8g7AG2ImH9qR-plDZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22123.04473027652, + "y": 4073.05579953064, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 695.1636133085012, + "height": 1.0899510199565157, + "seed": 497636804, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 695.1636133085012, + -1.0899510199565157 + ] + ] + }, + { + "type": "text", + "version": 406, + "versionNonce": 922059924, + "index": "b4k", + "isDeleted": false, + "id": "0i9vjz6oHKR8RonY-3gxI", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22004.936755212813, + "y": 4041.585779396102, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 80, + "seed": 2097282372, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC figures\nout that\nconsumer chain\nis unsecure", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "LC figures\nout that\nconsumer chain\nis unsecure", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 802, + "versionNonce": 8502956, + "index": "b4l", + "isDeleted": false, + "id": "HVnJGlGlMLCs6NJOXxrbM", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22267.769012221, + "y": 3976.706079700347, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 1239004356, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ias9Z_wyxAXXI_8kOv7hf" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 623, + "versionNonce": 276812308, + "index": "b4m", + "isDeleted": false, + "id": "ias9Z_wyxAXXI_8kOv7hf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22413.24092070902, + "y": 3981.706079700347, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 71.45596313476562, + "height": 20, + "seed": 567180356, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 2", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "HVnJGlGlMLCs6NJOXxrbM", + "originalText": "header 2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 832, + "versionNonce": 363661612, + "index": "b4n", + "isDeleted": false, + "id": "sL5Lkc5j7MlU86EZnlCXt", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22267.365194302136, + "y": 4016.230497397176, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 1052660676, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "6QTKTCDXqPOt8pb0_OsJP" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 655, + "versionNonce": 778334100, + "index": "b4o", + "isDeleted": false, + "id": "6QTKTCDXqPOt8pb0_OsJP", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22413.08510388879, + "y": 4021.230497397176, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 70.9599609375, + "height": 20, + "seed": 1858550596, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 3", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "sL5Lkc5j7MlU86EZnlCXt", + "originalText": "header 3", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 890, + "versionNonce": 738919340, + "index": "b4p", + "isDeleted": false, + "id": "raPhdrmarybOYBluTSASB", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22269.9238989916, + "y": 4085.5478086565117, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 205992644, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "LKLLEmGLE2z13zUBTNpCU" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 717, + "versionNonce": 819551508, + "index": "b4q", + "isDeleted": false, + "id": "LKLLEmGLE2z13zUBTNpCU", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22409.979814742805, + "y": 4090.5478086565117, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 82.28794860839844, + "height": 20, + "seed": 1977367108, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 15 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "raPhdrmarybOYBluTSASB", + "originalText": "header 15 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 190, + "versionNonce": 1774562860, + "index": "b4r", + "isDeleted": false, + "id": "E_pacl6rFZgd24jPt1g7L", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22434.295660020853, + "y": 4047.7676370902545, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 107237828, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1015, + "versionNonce": 1096063636, + "index": "b4s", + "isDeleted": false, + "id": "5Y44WJ4myfpW3MzvAJ1-r", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22276.513635649968, + "y": 4226.187226329924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 217938244, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "a_pmmlyByrHQPPg52YYbD" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 845, + "versionNonce": 533137580, + "index": "b4t", + "isDeleted": false, + "id": "a_pmmlyByrHQPPg52YYbD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22410.945550851855, + "y": 4231.187226329924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 93.53594970703125, + "height": 20, + "seed": 1158000836, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 134 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "5Y44WJ4myfpW3MzvAJ1-r", + "originalText": "header 134 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 246, + "versionNonce": 1787570196, + "index": "b4u", + "isDeleted": false, + "id": "z_BKJ9OsbwL2AIHkRrvbx", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22433.02648958444, + "y": 4256.2596733988275, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 1310390340, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 309, + "versionNonce": 1907954476, + "index": "b4v", + "isDeleted": false, + "id": "thIgnNTkikdPXff3RRczO", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22431.086019407925, + "y": 4160.9443501061005, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 605769668, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "freedraw", + "version": 698, + "versionNonce": 1886782868, + "index": "b4w", + "isDeleted": false, + "id": "ku2tIeuznpi0JRId4PWCm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 3.1598464320413715, + "x": 22196.403612073726, + "y": 4101.849390956625, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 66.68781617442805, + "height": 183.45142781943966, + "seed": 388282180, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + -0.04356353086879562, + -2.312480504207191 + ], + [ + -0.22871103369470802, + -2.501651395699301 + ], + [ + -0.22871103369470802, + -2.6819549016523476 + ], + [ + 0.022973852959496742, + -4.535238479237133 + ], + [ + 7.446231544422092, + -9.536443923053843 + ], + [ + 18.87908984397593, + -13.376021861303343 + ], + [ + 32.25021106374857, + -13.376021861303343 + ], + [ + 46.390851592145744, + -6.882139851808315 + ], + [ + 58.66844537334778, + 1.813809566459594 + ], + [ + 64.19683409056847, + 9.327440912902851 + ], + [ + 66.45910514073334, + 16.749442608780303 + ], + [ + 65.2816827399437, + 23.24628041345464 + ], + [ + 58.66844537334778, + 30.31063089260493 + ], + [ + 51.56919581183421, + 34.69998673425263 + ], + [ + 44.90677863980076, + 37.63509134755645 + ], + [ + 39.12381210619407, + 40.871687069176005 + ], + [ + 34.27815480565001, + 43.89546553786631 + ], + [ + 30.64752799240597, + 47.07590115107404 + ], + [ + 28.90598429394025, + 48.586312487829 + ], + [ + 28.712158001918958, + 49.603106029597924 + ], + [ + 28.963842888573165, + 52.8071880042424 + ], + [ + 30.664885570793782, + 56.289114725764726 + ], + [ + 32.81143943169285, + 59.191705592093115 + ], + [ + 36.974365315563226, + 61.61545763933318 + ], + [ + 41.09679018319145, + 63.9948727588794 + ], + [ + 45.30311001303873, + 66.69646955299807 + ], + [ + 49.425534880666945, + 69.07588467254432 + ], + [ + 55.18535797641929, + 71.22179197290576 + ], + [ + 58.59322920032411, + 72.44549117724378 + ], + [ + 60.82657095317401, + 73.13419145408166 + ], + [ + 62.053173159401204, + 73.5450469840402 + ], + [ + 62.435039883980195, + 73.5450469840402 + ], + [ + 62.60861566788188, + 73.5450469840402 + ], + [ + 62.60861566788188, + 73.72239469481391 + ], + [ + 62.60861566788188, + 73.89678661040797 + ], + [ + 62.60861566788188, + 74.07117852600202 + ], + [ + 62.60861566788188, + 74.43474133308855 + ], + [ + 60.86707196941617, + 75.96584323610055 + ], + [ + 56.84011378293417, + 79.53053222265113 + ], + [ + 52.79001215859782, + 82.81442066714341 + ], + [ + 49.87393898907424, + 85.02831125663393 + ], + [ + 47.09961937640557, + 87.84813985793483 + ], + [ + 45.35807567793985, + 89.85216898967727 + ], + [ + 43.86821686613128, + 91.57835337454038 + ], + [ + 42.58954192473476, + 93.30453775940424 + ], + [ + 41.52205085374734, + 95.07210327678146 + ], + [ + 40.39380825839816, + 97.35397715540255 + ], + [ + 39.56064449567713, + 98.84369792590118 + ], + [ + 39.366818203655846, + 99.62402785330559 + ], + [ + 39.366818203655846, + 100.1944963229605 + ], + [ + 39.366818203655846, + 100.77974376851382 + ], + [ + 40.19130317718149, + 102.70101063522803 + ], + [ + 41.94152566483965, + 104.25280310449709 + ], + [ + 44.5104472665628, + 106.40462199521791 + ], + [ + 48.40143775565643, + 109.06483765682243 + ], + [ + 53.23552333727332, + 111.81077137863413 + ], + [ + 57.881568486335446, + 115.15673152189687 + ], + [ + 60.1149102391824, + 116.9656781717882 + ], + [ + 61.6944498726736, + 119.95694289350347 + ], + [ + 62.44950453263916, + 124.44679577125643 + ], + [ + 62.44950453263916, + 130.0273370702675 + ], + [ + 61.584518542871365, + 136.01282230887767 + ], + [ + 59.429285892776925, + 141.22980080080288 + ], + [ + 57.61252602129048, + 145.71965367855586 + ], + [ + 55.89991162014269, + 149.20158040007817 + ], + [ + 54.499733630013814, + 152.03914377245644 + ], + [ + 51.97999183373114, + 155.0717896266858 + ], + [ + 50.278949151510524, + 156.36642791533336 + ], + [ + 48.80934084782156, + 157.42460258961637 + ], + [ + 46.83636277082419, + 158.30838534830463 + ], + [ + 44.59144929904711, + 159.42863172135804 + ], + [ + 42.34653582727299, + 160.33310504630413 + ], + [ + 40.101622355498854, + 161.4533514193576 + ], + [ + 37.15951281839208, + 162.59428835866817 + ], + [ + 34.64266395183825, + 163.51945224987054 + ], + [ + 32.397750480064126, + 164.42392557481583 + ], + [ + 30.152837008289993, + 165.11262585165366 + ], + [ + 27.364052746962354, + 165.58555308038342 + ], + [ + 25.119139275185283, + 166.4900264053287 + ], + [ + 23.418096592964663, + 167.35311859776067 + ], + [ + 21.71705391074405, + 168.21621079019252 + ], + [ + 19.04687976841403, + 168.8635299345163 + ], + [ + 17.345837086193413, + 169.07930298262448 + ], + [ + 15.87622878250445, + 169.29507603073188 + ], + [ + 14.869489235884688, + 169.68524099443414 + ], + [ + 13.631315310730322, + 170.07540595813634 + ], + [ + 12.16170700704136, + 170.07540595813634 + ], + [ + 11.38640183895325, + 170.07540595813634 + ], + [ + 11.209933125322717, + 170.07540595813634 + ], + [ + 11.209933125322717, + 170.07540595813634 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "text", + "version": 283, + "versionNonce": 2114309548, + "index": "b4x", + "isDeleted": false, + "id": "Vrw_GQDi2mjQu2xuH44rq", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22057.326272341645, + "y": 4152.050674556886, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 132.22390747070312, + "height": 60, + "seed": 1133850308, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC cannot\nverify with those\nheaders ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "LC cannot\nverify with those\nheaders ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 804, + "versionNonce": 675820308, + "index": "b4y", + "isDeleted": false, + "id": "otMixtSPVFOhBsINt-MA_", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22276.192010758805, + "y": 4294.566172803846, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 70, + "seed": 168474180, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "5n2U2Msk29AsYfwWoCy5M" + }, + { + "id": "W0j77U-vBXbV8gTtZaQT4", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 714, + "versionNonce": 97990700, + "index": "b4z", + "isDeleted": false, + "id": "5n2U2Msk29AsYfwWoCy5M", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22281.61599139038, + "y": 4309.566172803846, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 351.55181884765625, + "height": 40, + "seed": 123948484, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "We should not accept a header with a Root\nthat uses trustedHeader this one ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "otMixtSPVFOhBsINt-MA_", + "originalText": "We should not accept a header with a Root\nthat uses trustedHeader this one ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 609, + "versionNonce": 1350086804, + "index": "b50", + "isDeleted": false, + "id": "W0j77U-vBXbV8gTtZaQT4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22642.540629810766, + "y": 4331.124266720898, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 119.78740389817904, + "height": 394.6122997629009, + "seed": 213710148, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "otMixtSPVFOhBsINt-MA_", + "focus": 0.9277386003003393, + "gap": 3.948838941156282, + "fixedPoint": null + }, + "endBinding": { + "elementId": "ajhdYa9yl6Dtveb1bFAUk", + "focus": -0.9015730605291774, + "gap": 2.9768170479073888, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 111.13569432665463, + -201.58376093354218 + ], + [ + -8.651709571524407, + -394.6122997629009 + ] + ] + }, + { + "type": "rectangle", + "version": 729, + "versionNonce": 353850028, + "index": "b51", + "isDeleted": false, + "id": "uMSdfSjDRcfIfTPl3xuJM", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21630.693227406464, + "y": 5031.2694261319375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 70, + "seed": 1695907196, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "6QLcTI8e1yQ-o5kSIYbj1" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 557, + "versionNonce": 1757249044, + "index": "b52", + "isDeleted": false, + "id": "6QLcTI8e1yQ-o5kSIYbj1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21651.613210235304, + "y": 5036.2694261319375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 320.559814453125, + "height": 60, + "seed": 1157656060, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 1\nreceives header signed from validator V \nthat would unbond on Day 21", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "uMSdfSjDRcfIfTPl3xuJM", + "originalText": "header 1\nreceives header signed from validator V that would unbond on Day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 393, + "versionNonce": 711990572, + "index": "b53", + "isDeleted": false, + "id": "ltp4OKGl8ez_cE_k25VQ9", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21641.07661420786, + "y": 4936.016205354839, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 361.88775634765625, + "height": 40, + "seed": 993611388, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Light-client LC's headers in a 3rd-party chain\nthat track the consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Light-client LC's headers in a 3rd-party chain\nthat track the consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 804, + "versionNonce": 168598420, + "index": "b54", + "isDeleted": false, + "id": "nvEU5fr3RMvIYU4d7IMVy", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21629.949916546935, + "y": 5108.445105564668, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 679616252, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ShXMx-otybORCSmN5NU9Z" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 625, + "versionNonce": 1598789548, + "index": "b55", + "isDeleted": false, + "id": "ShXMx-otybORCSmN5NU9Z", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21775.421825034955, + "y": 5113.445105564668, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 71.45596313476562, + "height": 20, + "seed": 89972604, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 2", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "nvEU5fr3RMvIYU4d7IMVy", + "originalText": "header 2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 834, + "versionNonce": 1050413332, + "index": "b56", + "isDeleted": false, + "id": "8u9RoFJnLdQUhVgB_QRrZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21629.54609862807, + "y": 5147.969523261498, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 1779142652, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "XmuIj2TVJfKHdDcefK7aT" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 657, + "versionNonce": 265536044, + "index": "b57", + "isDeleted": false, + "id": "XmuIj2TVJfKHdDcefK7aT", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21775.266008214723, + "y": 5152.969523261498, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 70.9599609375, + "height": 20, + "seed": 378548348, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 3", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "8u9RoFJnLdQUhVgB_QRrZ", + "originalText": "header 3", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 892, + "versionNonce": 1507968660, + "index": "b58", + "isDeleted": false, + "id": "LQNfIxmLiXHNIKiE_XNpc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21632.104803317536, + "y": 5217.2868345208335, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 2058141948, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "XOyfyk5fyvKFjhUNEpCV1" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 719, + "versionNonce": 49454252, + "index": "b59", + "isDeleted": false, + "id": "XOyfyk5fyvKFjhUNEpCV1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21772.16071906874, + "y": 5222.2868345208335, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 82.28794860839844, + "height": 20, + "seed": 1038303612, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 15 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "LQNfIxmLiXHNIKiE_XNpc", + "originalText": "header 15 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 192, + "versionNonce": 1351865364, + "index": "b5A", + "isDeleted": false, + "id": "FGyXOy0-3BY4EbmaWGFLc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21796.476564346787, + "y": 5179.506662954576, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 1198895612, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1036, + "versionNonce": 307373868, + "index": "b5B", + "isDeleted": false, + "id": "Ev0h6XH50f0QEEoak-Dhl", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21627.12432913583, + "y": 5357.926252194244, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 30, + "seed": 1181094524, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "UjVbbFNEkV751lLp0465J" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 866, + "versionNonce": 279458196, + "index": "b5C", + "isDeleted": false, + "id": "UjVbbFNEkV751lLp0465J", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21761.556244337717, + "y": 5362.926252194244, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 93.53594970703125, + "height": 20, + "seed": 964059900, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 134 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Ev0h6XH50f0QEEoak-Dhl", + "originalText": "header 134 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 248, + "versionNonce": 1381786028, + "index": "b5D", + "isDeleted": false, + "id": "6G1OJkh1Th2ixcpMtRTeE", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21795.207393910376, + "y": 5387.998699263149, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 1999151996, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 311, + "versionNonce": 1498734356, + "index": "b5E", + "isDeleted": false, + "id": "S-jMl1K_OE0PxxEb3nxTs", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21793.26692373386, + "y": 5292.6833759704205, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 901698556, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 853, + "versionNonce": 976964652, + "index": "b5F", + "isDeleted": false, + "id": "CmdX66IIvUAx17D5gARro", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21309.345392081355, + "y": 5113.959852599384, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.98391723632812, + "height": 300, + "seed": 640395260, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC figures\nout that\nconsumer chain\nbecame\nunsecore on\ntimestamp T\n\nThen, LC would need to\n\"deactivate\"\nof all headers that\nhave timestamp >= T.\n\nWe can keep getting\nupdates but not use \ntheir Merkle root. ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "LC figures\nout that\nconsumer chain\nbecame\nunsecore on\ntimestamp T\n\nThen, LC would need to\n\"deactivate\"\nof all headers that\nhave timestamp >= T.\n\nWe can keep getting\nupdates but not use \ntheir Merkle root. ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 291, + "versionNonce": 319806612, + "index": "b5G", + "isDeleted": false, + "id": "mpMa0ShBoLawGkh8GmbZR", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21503.496964764738, + "y": 5208.685781450867, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 695.1636133085012, + "height": 1.0899510199565157, + "seed": 302132476, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 695.1636133085012, + -1.0899510199565157 + ] + ] + }, + { + "type": "rectangle", + "version": 852, + "versionNonce": 1272506028, + "index": "b5H", + "isDeleted": false, + "id": "hNDbB1Zx1zNLmK3_Jbnu2", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21633.785961828686, + "y": 4987.2280539957155, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 362.3997801108055, + "height": 32.605534694277594, + "seed": 2030258684, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Hvw1umwIy3cEFG4asQu6s" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 689, + "versionNonce": 663693844, + "index": "b5I", + "isDeleted": false, + "id": "Hvw1umwIy3cEFG4asQu6s", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21779.44987165948, + "y": 4993.530821342854, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 71.07196044921875, + "height": 20, + "seed": 578857596, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 0", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "hNDbB1Zx1zNLmK3_Jbnu2", + "originalText": "header 0", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 786, + "versionNonce": 1004482860, + "index": "b5J", + "isDeleted": false, + "id": "Q0Seg8kRFs0LNbSHk1UpI", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22675.1675039129, + "y": 5006.640530851209, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 362.3997801108055, + "height": 70, + "seed": 2080941564, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Slz_mGtKTGiGFQPQi1UCm" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 613, + "versionNonce": 1506330516, + "index": "b5K", + "isDeleted": false, + "id": "Slz_mGtKTGiGFQPQi1UCm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22696.08748674174, + "y": 5011.640530851209, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 320.559814453125, + "height": 60, + "seed": 1417315964, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 1\nreceives header signed from validator V \nthat would unbond on Day 21", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Q0Seg8kRFs0LNbSHk1UpI", + "originalText": "header 1\nreceives header signed from validator V that would unbond on Day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 449, + "versionNonce": 431500204, + "index": "b5L", + "isDeleted": false, + "id": "lrVZ6T0dEOWRpJta-Ciy7", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22685.55089071429, + "y": 4911.387310074111, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 361.88775634765625, + "height": 40, + "seed": 1960597244, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Light-client LC's headers in a 3rd-party chain\nthat track the consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Light-client LC's headers in a 3rd-party chain\nthat track the consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 862, + "versionNonce": 502445332, + "index": "b5M", + "isDeleted": false, + "id": "1D3PV52gRiaShNrW-AGvX", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22674.159475100325, + "y": 5083.551492330893, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 362.3997801108055, + "height": 30, + "seed": 967841660, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "NzwZ1NoZmjx_Sanq2sVcc" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 682, + "versionNonce": 2005784108, + "index": "b5N", + "isDeleted": false, + "id": "NzwZ1NoZmjx_Sanq2sVcc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22819.631383588345, + "y": 5088.551492330893, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 71.45596313476562, + "height": 20, + "seed": 523749372, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 2", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "1D3PV52gRiaShNrW-AGvX", + "originalText": "header 2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 891, + "versionNonce": 1904407188, + "index": "b5O", + "isDeleted": false, + "id": "KJUdtg_AO8rUfNMOGMYah", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22674.020375134507, + "y": 5123.34062798077, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 362.3997801108055, + "height": 30, + "seed": 1232431228, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "G5y0C3oVdaHhCzSdWS1ng" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 713, + "versionNonce": 306852012, + "index": "b5P", + "isDeleted": false, + "id": "G5y0C3oVdaHhCzSdWS1ng", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22819.74028472116, + "y": 5128.34062798077, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 70.9599609375, + "height": 20, + "seed": 204142844, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 3", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "KJUdtg_AO8rUfNMOGMYah", + "originalText": "header 3", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 949, + "versionNonce": 858750996, + "index": "b5Q", + "isDeleted": false, + "id": "GOS6Ws7G2QOPQziOANAQl", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22676.579079823972, + "y": 5192.657939240105, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 362.3997801108055, + "height": 30, + "seed": 1926920572, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "b0DBpqlT_jkqzf3HGRkpw" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 775, + "versionNonce": 2039954220, + "index": "b5R", + "isDeleted": false, + "id": "b0DBpqlT_jkqzf3HGRkpw", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22816.634995575176, + "y": 5197.657939240105, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 82.28794860839844, + "height": 20, + "seed": 1220930044, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 15 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "GOS6Ws7G2QOPQziOANAQl", + "originalText": "header 15 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 250, + "versionNonce": 2062441876, + "index": "b5S", + "isDeleted": false, + "id": "6Wdf9tsazruVtA41RFbXw", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22840.686122900177, + "y": 5154.613049720801, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 552553084, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1094, + "versionNonce": 937358764, + "index": "b5T", + "isDeleted": false, + "id": "E7oN7yvuY2EP9hN1urLrN", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22671.337960273115, + "y": 5333.553929698775, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 362.3997801108055, + "height": 30, + "seed": 1578670844, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "r3hY5oVaTCWgWdPI2UHiI" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 923, + "versionNonce": 1911917332, + "index": "b5U", + "isDeleted": false, + "id": "r3hY5oVaTCWgWdPI2UHiI", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22805.769875475, + "y": 5338.553929698775, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 93.53594970703125, + "height": 20, + "seed": 985914236, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 134 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "E7oN7yvuY2EP9hN1urLrN", + "originalText": "header 134 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 304, + "versionNonce": 2051760172, + "index": "b5V", + "isDeleted": false, + "id": "e25iuuMzEo553UepwGBlI", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22839.681670416812, + "y": 5363.369803982421, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 1362299900, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 367, + "versionNonce": 716900500, + "index": "b5W", + "isDeleted": false, + "id": "69e8Jt8TK47utsSzRynZ6", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22837.741200240296, + "y": 5268.054480689692, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 594029692, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1013, + "versionNonce": 952531628, + "index": "b5X", + "isDeleted": false, + "id": "c_gqwX-qkLxAtPb2CwEYM", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22368.191817146268, + "y": 5206.377018404092, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 192.7678985595703, + "height": 180, + "seed": 589643004, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC figures\nout that\nconsumer chain\nis secured again \nafter time T'.\n\nNow, we can trust again\nall headers with time \nafter T'. ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "LC figures\nout that\nconsumer chain\nis secured again \nafter time T'.\n\nNow, we can trust again\nall headers with time \nafter T'. ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 439, + "versionNonce": 2029311508, + "index": "b5Y", + "isDeleted": false, + "id": "xnFlOGHt4Izn3d7BVwzbF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22570.851017582165, + "y": 5318.2159447740505, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 695.1636133085012, + "height": 1.0899510199565157, + "seed": 971783548, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 695.1636133085012, + -1.0899510199565157 + ] + ] + }, + { + "type": "rectangle", + "version": 909, + "versionNonce": 1576682796, + "index": "b5Z", + "isDeleted": false, + "id": "ykkWMAcwEvcBn-p_t7w6G", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22678.260238335115, + "y": 4962.599158714987, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 362.3997801108055, + "height": 32.605534694277594, + "seed": 1499467388, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "8bL7kC5u2_sduFuJPm6TU" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 745, + "versionNonce": 1234760596, + "index": "b5a", + "isDeleted": false, + "id": "8bL7kC5u2_sduFuJPm6TU", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22823.92414816591, + "y": 4968.901926062126, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 71.07196044921875, + "height": 20, + "seed": 1406197500, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header 0", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ykkWMAcwEvcBn-p_t7w6G", + "originalText": "header 0", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 166, + "versionNonce": 1867562924, + "index": "b5b", + "isDeleted": false, + "id": "NaZENohDwAmSHF-ZPNbMX", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 21296.085720322553, + "y": 5451.8327111188755, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 212.75189208984375, + "height": 80, + "seed": 529867204, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "This should not happen\nafter validator V has\nunbonded because then it's\ntoo late.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "This should not happen\nafter validator V has\nunbonded because then it's\ntoo late.", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "freedraw", + "version": 194, + "versionNonce": 2061328660, + "index": "b5c", + "isDeleted": false, + "id": "JgxNIxLTVHJQ-mbSpe5WS", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23100.42772379008, + "y": 5009.904415135443, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 81.03627430334018, + "height": 262.7590401938496, + "seed": 801307772, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -0.5620165772379551, + 0 + ], + [ + 0.9611297987503349, + 0 + ], + [ + 6.259561443574057, + 0 + ], + [ + 13.31734933018015, + 0 + ], + [ + 22.370703324366332, + 0 + ], + [ + 27.669134969186416, + 0 + ], + [ + 35.69619782232985, + 0 + ], + [ + 43.72326067547692, + 0 + ], + [ + 49.87286235393913, + 2.2358485572685822 + ], + [ + 54.64185809266564, + 4.883028087732782 + ], + [ + 58.14835282455897, + 8.38952281962429 + ], + [ + 63.08839708679443, + 15.182592753183599 + ], + [ + 64.2613012479851, + 22.24038063978969 + ], + [ + 64.2613012479851, + 30.267443492934945 + ], + [ + 64.2613012479851, + 39.320797487122036 + ], + [ + 64.2613012479851, + 51.80733970312576 + ], + [ + 63.58525232174361, + 61.94400101285555 + ], + [ + 60.05024950260122, + 76.29578665186364 + ], + [ + 59.10541003941762, + 80.07107192069452 + ], + [ + 56.865488898256444, + 86.22067359915673 + ], + [ + 55.802544502177625, + 91.51910524397772 + ], + [ + 54.47080956916034, + 94.61834158656711 + ], + [ + 53.640002454983915, + 97.09854517741678 + ], + [ + 52.92730027370635, + 98.51987695608113 + ], + [ + 52.59742097837079, + 99.49729709040639 + ], + [ + 52.59742097837079, + 99.76608762734577 + ], + [ + 52.59742097837079, + 100.3606848757272 + ], + [ + 52.59742097837079, + 100.62947541266658 + ], + [ + 52.84584859584356, + 100.62947541266658 + ], + [ + 53.82326873017155, + 100.62947541266658 + ], + [ + 56.30347232101849, + 100.62947541266658 + ], + [ + 57.72480409968557, + 100.62947541266658 + ], + [ + 59.64706369718988, + 100.62947541266658 + ], + [ + 61.569323294697824, + 100.62947541266658 + ], + [ + 63.49158289220213, + 100.62947541266658 + ], + [ + 65.41384248971008, + 100.62947541266658 + ], + [ + 67.33610208721439, + 100.62947541266658 + ], + [ + 68.75743386587783, + 100.62947541266658 + ], + [ + 70.17876564454491, + 100.27108803008014 + ], + [ + 71.15618577886926, + 99.94120873474549 + ], + [ + 71.7507830272516, + 99.63983752666263 + ], + [ + 72.72820316157595, + 99.30995823132707 + ], + [ + 73.7056232959003, + 98.98007893599242 + ], + [ + 74.30022054428264, + 98.98007893599242 + ], + [ + 75.27764067860699, + 98.65019964065777 + ], + [ + 76.25506081293133, + 98.65019964065777 + ], + [ + 77.82707819563802, + 98.32032034532313 + ], + [ + 79.07328886690448, + 98.32032034532313 + ], + [ + 79.66788611528318, + 98.32032034532313 + ], + [ + 79.93667665222529, + 98.32032034532313 + ], + [ + 80.20546718916376, + 98.32032034532313 + ], + [ + 80.47425772610222, + 98.32032034532313 + ], + [ + 80.47425772610222, + 98.8375384997371 + ], + [ + 80.47425772610222, + 99.81495863406235 + ], + [ + 80.47425772610222, + 101.73721823156848 + ], + [ + 79.23211963873109, + 104.21742182241815 + ], + [ + 77.34244071236753, + 107.52028735965905 + ], + [ + 75.45276178600761, + 111.29557262848994 + ], + [ + 72.80150967165173, + 116.06456836721736 + ], + [ + 70.91183074528817, + 119.83985363604825 + ], + [ + 67.55602161743809, + 125.43151132116691 + ], + [ + 64.9047695030822, + 130.20050705989524 + ], + [ + 62.10690436857476, + 135.792164745013 + ], + [ + 59.455652254218876, + 140.56116048374133 + ], + [ + 56.65778711971143, + 146.15281816886 + ], + [ + 54.65000326045265, + 150.66116853843505 + ], + [ + 52.64221940119387, + 155.1695189080092 + ], + [ + 51.22496020642211, + 158.94480417684008 + ], + [ + 50.28012074324215, + 162.72008944567096 + ], + [ + 49.89322527340482, + 164.6423490431771 + ], + [ + 48.94838581022486, + 168.41763431200798 + ], + [ + 48.53298225313483, + 170.89783790285856 + ], + [ + 48.08907060879574, + 173.99707424544795 + ], + [ + 48.08907060879574, + 176.47727783629762 + ], + [ + 48.08907060879574, + 178.9574814271473 + ], + [ + 48.08907060879574, + 181.43768501799786 + ], + [ + 48.08907060879574, + 185.84014820635366 + ], + [ + 48.08907060879574, + 187.7624078038598 + ], + [ + 48.08907060879574, + 189.6846674013659 + ], + [ + 48.08907060879574, + 191.60692699887204 + ], + [ + 49.327136112275184, + 194.08713058972262 + ], + [ + 50.980605172841024, + 196.15600320737758 + ], + [ + 53.049477790496894, + 197.80947226794342 + ], + [ + 55.70480248874446, + 200.02088532185462 + ], + [ + 59.00766802598446, + 201.90649166432377 + ], + [ + 60.42899980465154, + 202.61512126170874 + ], + [ + 63.08432450289911, + 204.38669525517344 + ], + [ + 65.00658410040705, + 205.5392364968984 + ], + [ + 66.92884369791136, + 206.6917777386234 + ], + [ + 68.8511032954193, + 207.46149609440454 + ], + [ + 70.77336289292361, + 208.6140373361295 + ], + [ + 72.31279960448592, + 209.7665785778545 + ], + [ + 73.85223631604822, + 210.91911981957946 + ], + [ + 75.0047775577732, + 212.45855653114177 + ], + [ + 76.07179453774734, + 213.52557351111318 + ], + [ + 77.13881151771784, + 214.5925904910855 + ], + [ + 77.79042494060195, + 215.57001062540985 + ], + [ + 78.11623165204219, + 216.5474307597351 + ], + [ + 78.44203836348606, + 217.52485089406036 + ], + [ + 78.44203836348606, + 219.4471104915665 + ], + [ + 78.44203836348606, + 221.36937008907262 + ], + [ + 78.44203836348606, + 223.29162968657874 + ], + [ + 78.02663480639603, + 225.77183327742932 + ], + [ + 76.69489987337874, + 228.8710696200178 + ], + [ + 74.80522094701519, + 232.1739351572587 + ], + [ + 72.91554202065527, + 235.4768006944987 + ], + [ + 71.02586309429171, + 238.7796662317396 + ], + [ + 68.66376443633999, + 242.0825317689796 + ], + [ + 63.613760408992675, + 247.56830227287992 + ], + [ + 60.306822287860996, + 249.92632834693904 + ], + [ + 56.99988416672568, + 252.28435442099817 + ], + [ + 53.89657524024369, + 253.61201677012377 + ], + [ + 51.97024305884406, + 254.38173512590402 + ], + [ + 49.4859668841018, + 255.61980062938346 + ], + [ + 47.001690709359536, + 256.8578661328611 + ], + [ + 45.07535852795991, + 257.62758448864224 + ], + [ + 43.14902634656028, + 258.3973028444234 + ], + [ + 41.72362198400151, + 258.75161764311633 + ], + [ + 40.29821762144638, + 259.4602472405022 + ], + [ + 39.316724903226714, + 259.78605395194427 + ], + [ + 38.71805507095269, + 260.08335257613453 + ], + [ + 37.736562352736655, + 260.73496599901773 + ], + [ + 37.13789252046263, + 261.0322646232089 + ], + [ + 36.5392226881886, + 261.32956324739916 + ], + [ + 36.26635956735481, + 261.59835378433854 + ], + [ + 35.667689735080785, + 261.8956524085288 + ], + [ + 35.394826614246995, + 262.1644429454682 + ], + [ + 34.79615678197297, + 262.7590401938496 + ], + [ + 34.79615678197297, + 262.7590401938496 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "text", + "version": 658, + "versionNonce": 888400428, + "index": "b5d", + "isDeleted": false, + "id": "tqSk4Zb8mMVK0m9RZQRlr", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23219.009149003145, + "y": 5084.758507089177, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 301.59979248046875, + "height": 160, + "seed": 1085190012, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "During this time you cannot accept\nany packets from other chains. \nSo, let's say Stride wants to send\nmoney to Osmosis ... it would be\nblocked for multiple days for doing so.\nThat's okay because in such a case,\nStride wouldn't be accepting\nany user transactions.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "During this time you cannot accept\nany packets from other chains. \nSo, let's say Stride wants to send\nmoney to Osmosis ... it would be\nblocked for multiple days for doing so.\nThat's okay because in such a case,\nStride wouldn't be accepting\nany user transactions.", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 116, + "versionNonce": 876093076, + "index": "b5e", + "isDeleted": false, + "id": "Paf2l7uIUekkzjHiHpJrF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22739.99590408979, + "y": 5672.864056744841, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 425.31215369990605, + "height": 338.64756845641114, + "seed": 380568498, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 107, + "versionNonce": 1640875180, + "index": "b5f", + "isDeleted": false, + "id": "7icU_MLiuvO76e-qJQZ0O", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22771.74576811978, + "y": 5646.734358487215, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 192.911865234375, + "height": 20, + "seed": 300666627, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Cosmos Hub - CometBFT", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Cosmos Hub - CometBFT", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 157, + "versionNonce": 1046424596, + "index": "b5g", + "isDeleted": false, + "id": "CABpIeX_WCm9GRKBn3izF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22922.488388336078, + "y": 5841.473102499821, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 241.97257200386957, + "height": 169.44392545304981, + "seed": 2088803811, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 123, + "versionNonce": 998788908, + "index": "b5h", + "isDeleted": false, + "id": "Mh2JdtYyoUHznvEjBkDyf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22956.83656088982, + "y": 5875.7805492146335, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 144.76791381835938, + "height": 80, + "seed": 385336995, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Comet BFT light\nclient that tracks\nOsmosis\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Comet BFT light\nclient that tracks\nOsmosis\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 101, + "versionNonce": 1531480468, + "index": "b5i", + "isDeleted": false, + "id": "lgh0h56yCwRQt91xZU17f", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23036.866906971583, + "y": 5949.864922812587, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 379.7155044336396, + "height": 309.56524687634555, + "seed": 154519619, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 379.7155044336396, + -309.56524687634555 + ] + ] + }, + { + "type": "arrow", + "version": 285, + "versionNonce": 1116572076, + "index": "b5j", + "isDeleted": false, + "id": "zCUctlGqKWCUsIzLvTbRd", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23040.844571307563, + "y": 5950.092359892076, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 444.68136269511524, + "height": 117.21710960894416, + "seed": 66170371, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 444.68136269511524, + -117.21710960894416 + ] + ] + }, + { + "type": "arrow", + "version": 347, + "versionNonce": 506083092, + "index": "b5k", + "isDeleted": false, + "id": "F-jjYtLK67ixPDw141WE_", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23041.81671469677, + "y": 5950.443971781376, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 456.32080746137217, + "height": 69.43755537601555, + "seed": 4683971, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "o9qZvK33HO1q2NTm05K7V", + "focus": -0.8813072692563015, + "gap": 14.704370756368007, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 456.32080746137217, + -69.43755537601555 + ] + ] + }, + { + "type": "text", + "version": 130, + "versionNonce": 1510437932, + "index": "b5l", + "isDeleted": false, + "id": "EXZC1-ihiyIbbdbCBq_od", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23444.532554663034, + "y": 5610.3946924097845, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 67.47195434570312, + "height": 60, + "seed": 1346721283, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "primary \nOsmosis\nfull node", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "primary \nOsmosis\nfull node", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 218, + "versionNonce": 1132082324, + "index": "b5m", + "isDeleted": false, + "id": "o9qZvK33HO1q2NTm05K7V", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23512.841892914512, + "y": 5811.428304076997, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 76.15994262695312, + "height": 60, + "seed": 2088569923, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "F-jjYtLK67ixPDw141WE_", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "witnesses\nOsmosis\nfull nodes", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "witnesses\nOsmosis\nfull nodes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 415, + "versionNonce": 1876954796, + "index": "b5n", + "isDeleted": false, + "id": "Dizu3Vz0T4mCPxglQ4wPw", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22797.823067064157, + "y": 7151.333833661985, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189496, + "height": 326.84774951837966, + "seed": 866193129, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "vknaKh5HvrXD-byiIvvlJ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 393, + "versionNonce": 149848596, + "index": "b5o", + "isDeleted": false, + "id": "jMolgDt78k8T119fmCkFf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22809.784191258208, + "y": 7154.243965984157, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 1615940041, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "e3nhTStaF6VziHvsXUlr4" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 141, + "versionNonce": 616651052, + "index": "b5p", + "isDeleted": false, + "id": "e3nhTStaF6VziHvsXUlr4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22834.098855367694, + "y": 7169.243965984157, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 40, + "seed": 1157048489, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "jMolgDt78k8T119fmCkFf", + "originalText": "Validator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 434, + "versionNonce": 92086164, + "index": "b5q", + "isDeleted": false, + "id": "c0YsbkhmGB0SKD4Uexw00", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22809.878530846698, + "y": 7405.585668281405, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 457059209, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "vxj2FVmxwkNRAIgJh6ssA" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 234, + "versionNonce": 1947554732, + "index": "b5r", + "isDeleted": false, + "id": "vxj2FVmxwkNRAIgJh6ssA", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22819.665195078254, + "y": 7420.585668281405, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 40, + "seed": 1533137513, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "c0YsbkhmGB0SKD4Uexw00", + "originalText": "Validator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 510, + "versionNonce": 22809876, + "index": "b5s", + "isDeleted": false, + "id": "342aDsvwLuQoamri87rfH", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23098.963817468168, + "y": 7249.44497261642, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189496, + "height": 231.33230407116883, + "seed": 1781374281, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 555, + "versionNonce": 1543896620, + "index": "b5t", + "isDeleted": false, + "id": "NA4PCJ4doX3w3xyNsVXhX", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23109.099691584972, + "y": 7256.474253949318, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 117247017, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "oDaJYkzZn0VfbyA0mFqDD" + }, + { + "id": "vknaKh5HvrXD-byiIvvlJ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 315, + "versionNonce": 1308707476, + "index": "b5u", + "isDeleted": false, + "id": "oDaJYkzZn0VfbyA0mFqDD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23133.41435569446, + "y": 7271.474253949318, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 40, + "seed": 2042339081, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "NA4PCJ4doX3w3xyNsVXhX", + "originalText": "Validator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 479, + "versionNonce": 92100780, + "index": "b5v", + "isDeleted": false, + "id": "H2LBj8ByzD6zeVmMC6_Q7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23111.032472863917, + "y": 7408.7537980117495, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 14996969, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "GxWLzGcWacjbzGgd1snqm" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 247, + "versionNonce": 505600020, + "index": "b5w", + "isDeleted": false, + "id": "GxWLzGcWacjbzGgd1snqm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23120.819137095474, + "y": 7423.7537980117495, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 40, + "seed": 2139369673, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "H2LBj8ByzD6zeVmMC6_Q7", + "originalText": "Validator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 212, + "versionNonce": 1814389548, + "index": "b5x", + "isDeleted": false, + "id": "vknaKh5HvrXD-byiIvvlJ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23036.66257844986, + "y": 7192.203350816015, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 59.90707181451944, + "height": 56.242408841861106, + "seed": 1798647721, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "97lQi4jOh32Txi0gGt3nv", + "focus": 1.7834062342261525, + "gap": 13.342530311733299, + "fixedPoint": null + }, + "endBinding": { + "elementId": "97lQi4jOh32Txi0gGt3nv", + "focus": -0.6703917970051821, + "gap": 13.50092746478549, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 59.90707181451944, + 56.242408841861106 + ] + ] + }, + { + "type": "text", + "version": 658, + "versionNonce": 1572255124, + "index": "b5y", + "isDeleted": false, + "id": "97lQi4jOh32Txi0gGt3nv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.742788151838286, + "x": 23053.159503838637, + "y": 7181.705880375785, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 69.60115051269531, + "height": 33.496217426573835, + "seed": 2049135241, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "vknaKh5HvrXD-byiIvvlJ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 13.398486970629534, + "fontFamily": 1, + "text": "VSCPacket\nsent", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket\nsent", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 194, + "versionNonce": 107486636, + "index": "b5z", + "isDeleted": false, + "id": "zufb-NdwkH7MJbxDxcc2A", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23163.76487595721, + "y": 7217.705823939446, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 20, + "seed": 285874537, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 860, + "versionNonce": 166912788, + "index": "b60", + "isDeleted": false, + "id": "1Gc8T-eARJIhyiMHoMugj", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23775.987742785204, + "y": 7363.385707804421, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 229.22940624189496, + "height": 124.89233315508174, + "seed": 1899299913, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 847, + "versionNonce": 1836025900, + "index": "b61", + "isDeleted": false, + "id": "Kbsqm3p1u0eO-tqUJs_wZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23789.701361562053, + "y": 7377.269490719566, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 90, + "seed": 645894953, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "zxiUValzJ2kFhKfdsO6hC" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 696, + "versionNonce": 156065940, + "index": "b62", + "isDeleted": false, + "id": "zxiUValzJ2kFhKfdsO6hC", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23795.35203183609, + "y": 7382.269490719566, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 193.82386779785156, + "height": 80, + "seed": 894780937, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC: light client\ntracking the consumer \nchain with \ntrustingPeriod = 14 days", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Kbsqm3p1u0eO-tqUJs_wZ", + "originalText": "LC: light client\ntracking the consumer chain with \ntrustingPeriod = 14 days", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 472, + "versionNonce": 86352556, + "index": "b63", + "isDeleted": false, + "id": "EWQvkMn2jYulEy2S1KSAD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23827.254442029865, + "y": 7326.643505265351, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 122.44792175292969, + "height": 20, + "seed": 145857769, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "3rd party chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "3rd party chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 98, + "versionNonce": 58469908, + "index": "b64", + "isDeleted": false, + "id": "rNt70AM88AXun1I9JY6lK", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22852.195536882886, + "y": 7127.361805155942, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.82392883300781, + "height": 20, + "seed": 2109486761, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "provider chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "freedraw", + "version": 332, + "versionNonce": 607415596, + "index": "b65", + "isDeleted": false, + "id": "AbOmbCJxY3GSDCWn4wNh0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22793.669871341277, + "y": 7162.6652693948845, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 67.6522413172388, + "height": 292.03229089007436, + "seed": 1046917513, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -0.41365824256354244, + 0 + ], + [ + -1.2514030867423571, + 0 + ], + [ + -2.895607697937521, + -0.3302313701124149 + ], + [ + -4.539812309132685, + -0.003476119684819423 + ], + [ + -9.886084385274444, + 1.8562479120037096 + ], + [ + -16.337762521376135, + 3.8654450901640303 + ], + [ + -19.56360158942698, + 5.071658620997368 + ], + [ + -22.789440657477826, + 6.277872151830707 + ], + [ + -28.285185880093195, + 9.399427629319689 + ], + [ + -31.51102494814404, + 11.008871043659383 + ], + [ + -34.159828148418455, + 11.763189015390708 + ], + [ + -36.982437332961126, + 13.372632429731311 + ], + [ + -38.62664194415629, + 14.029619050271322 + ], + [ + -40.896548098720814, + 15.5417311134197 + ], + [ + -43.166454253288975, + 17.05384317656899 + ], + [ + -44.8106588644805, + 18.037585047536595 + ], + [ + -46.58000378435099, + 19.44888963980884 + ], + [ + -48.349348704217846, + 20.860194232081085 + ], + [ + -50.58101754224481, + 23.08491083073659 + ], + [ + -51.89846690301056, + 24.39888407181752 + ], + [ + -52.50678784795673, + 25.612049842021406 + ], + [ + -53.494005838609155, + 26.926023083102336 + ], + [ + -54.40822531587037, + 27.83676644067691 + ], + [ + -55.624867205759074, + 30.263097981085593 + ], + [ + -55.930765738074115, + 31.47626375129039 + ], + [ + -56.21233143259087, + 32.310532475786204 + ], + [ + -56.51822996490591, + 33.52369824599009 + ], + [ + -56.51822996490591, + 34.357966970485904 + ], + [ + -56.51822996490591, + 35.5711327406907 + ], + [ + -56.51822996490591, + 36.78429851089459 + ], + [ + -56.51822996490591, + 37.99746428109938 + ], + [ + -56.51822996490591, + 39.21063005130327 + ], + [ + -56.51822996490591, + 40.423795821508065 + ], + [ + -56.51822996490591, + 42.06452431301659 + ], + [ + -56.51822996490591, + 43.27769008322048 + ], + [ + -56.51822996490591, + 46.13158434493289 + ], + [ + -56.51822996490591, + 49.41304132794994 + ], + [ + -56.51822996490591, + 51.053769819458466 + ], + [ + -56.51822996490591, + 52.69449831096699 + ], + [ + -56.51822996490591, + 53.90766408117179 + ], + [ + -56.51822996490591, + 55.548392572679404 + ], + [ + -56.21580755227478, + 56.7615583428842 + ], + [ + -55.91338513964729, + 57.97472411308809 + ], + [ + -55.61096272701616, + 59.18788988329288 + ], + [ + -55.308540314388665, + 60.40105565349677 + ], + [ + -54.7036954891264, + 61.614221423701565 + ], + [ + -53.719953618161526, + 62.928194664782495 + ], + [ + -52.73621174719301, + 64.24216790586343 + ], + [ + -52.13136692193075, + 65.45533367606731 + ], + [ + -51.14762505096587, + 66.76930691714824 + ], + [ + -50.163883179997356, + 68.08328015822917 + ], + [ + -49.18014130902884, + 69.3972533993101 + ], + [ + -48.269397951455176, + 70.30799675688468 + ], + [ + -46.04468135279967, + 72.20248198542777 + ], + [ + -43.819964754144166, + 74.09696721396995 + ], + [ + -42.90922139656686, + 75.00771057154452 + ], + [ + -41.26849290505925, + 75.66469719208544 + ], + [ + -39.95451966397741, + 76.64843906305305 + ], + [ + -38.74135389377625, + 77.25328388831258 + ], + [ + -37.528188123571454, + 77.85812871357211 + ], + [ + -36.31502235336666, + 78.46297353883165 + ], + [ + -35.48075362887175, + 79.01915268849552 + ], + [ + -33.812216179878305, + 80.13151098782328 + ], + [ + -33.30470270580918, + 80.38526772485693 + ], + [ + -32.47043398131427, + 80.9414468745208 + ], + [ + -31.962920507245144, + 81.19520361155537 + ], + [ + -31.455407033176016, + 81.70271708562359 + ], + [ + -31.225983133939735, + 81.93214098485987 + ], + [ + -30.718469659874245, + 82.43965445892809 + ], + [ + -30.489045760637964, + 82.66907835816437 + ], + [ + -30.259621861401683, + 82.89850225740065 + ], + [ + -30.00586512436712, + 83.40601573146887 + ], + [ + -30.00586512436712, + 84.74779793003381 + ], + [ + -30.00586512436712, + 85.9609637002377 + ], + [ + -30.00586512436712, + 86.79523242473351 + ], + [ + -30.00586512436712, + 88.43596091624204 + ], + [ + -30.00586512436712, + 89.64912668644592 + ], + [ + -30.360429332278727, + 91.76608357485475 + ], + [ + -30.666327864593768, + 92.97924934505863 + ], + [ + -31.653545855246193, + 94.61997783656716 + ], + [ + -32.36267427106577, + 96.73693472497507 + ], + [ + -33.02313701129242, + 98.3776632164836 + ], + [ + -34.159828148418455, + 101.02299029707228 + ], + [ + -34.76814909336463, + 102.23267994759135 + ], + [ + -35.977838743881875, + 105.45504289595647 + ], + [ + -36.68696715970509, + 107.57199978436438 + ], + [ + -37.295288104647625, + 108.78516555456918 + ], + [ + -38.50497775516851, + 112.00752850293429 + ], + [ + -39.113298700111045, + 113.22069427313818 + ], + [ + -41.43534664995968, + 118.56001410991212 + ], + [ + -42.982219909961714, + 121.03501132591555 + ], + [ + -44.04243641400899, + 123.15196821432437 + ], + [ + -45.029654404661414, + 124.4659414554053 + ], + [ + -46.4444351166203, + 126.23181025558824 + ], + [ + -47.43165310727272, + 127.54578349666826 + ], + [ + -48.74910246803847, + 128.52952536763678 + ], + [ + -50.06655182880422, + 129.51326723860439 + ], + [ + -50.980771306065435, + 130.42401059617896 + ], + [ + -52.19741319595414, + 131.0288554214385 + ], + [ + -53.035158040136594, + 131.58503457110237 + ], + [ + -54.2517999300253, + 132.1898793963619 + ], + [ + -55.08954477420775, + 132.46796897119384 + ], + [ + -55.92728961838657, + 132.74605854602578 + ], + [ + -56.76503446256902, + 133.02414812085772 + ], + [ + -57.60277930675147, + 133.30223769568966 + ], + [ + -58.44052415093029, + 133.85841684535353 + ], + [ + -59.27826899511274, + 134.13650642018547 + ], + [ + -60.95375868347401, + 134.97077514468128 + ], + [ + -62.62924837183891, + 135.8050438691771 + ], + [ + -63.46699321601773, + 136.36122301884097 + ], + [ + -64.30473806020018, + 136.6393125936729 + ], + [ + -64.81572765395322, + 137.14682606774113 + ], + [ + -65.32671724770626, + 137.4005828047757 + ], + [ + -66.16446209188871, + 137.67867237960763 + ], + [ + -66.67545168564175, + 137.9324291166413 + ], + [ + -66.90835170456558, + 138.16185301587757 + ], + [ + -67.41934129831861, + 138.16185301587757 + ], + [ + -67.6522413172388, + 138.16185301587757 + ], + [ + -67.6522413172388, + 137.94980971506902 + ], + [ + -67.6522413172388, + 137.43882012131508 + ], + [ + -67.6522413172388, + 136.60107527713353 + ], + [ + -67.14472784317331, + 136.0900856833805 + ], + [ + -65.47619039417987, + 135.24886471951322 + ], + [ + -63.83546190267225, + 134.9186333494008 + ], + [ + -61.71850501426525, + 134.9186333494008 + ], + [ + -60.07777652275399, + 134.9186333494008 + ], + [ + -58.8646107525492, + 134.9186333494008 + ], + [ + -56.21928367196233, + 134.9186333494008 + ], + [ + -54.10232678355533, + 135.26972143762578 + ], + [ + -51.985369895144686, + 136.32646182198732 + ], + [ + -48.95766964916402, + 138.29394556392344 + ], + [ + -46.84071276075338, + 139.35068594828408 + ], + [ + -45.07484396057043, + 140.76199054055633 + ], + [ + -43.30897516038749, + 142.17329513282857 + ], + [ + -41.54310636020455, + 143.58459972510082 + ], + [ + -40.229133119126345, + 144.89857296618175 + ], + [ + -38.915159878044506, + 146.21254620726268 + ], + [ + -37.93141800707599, + 147.8532746987712 + ], + [ + -36.947676136107475, + 149.16724793985213 + ], + [ + -35.96393426513896, + 150.48122118093306 + ], + [ + -34.702102819341235, + 153.33511544264547 + ], + [ + -34.37534756891182, + 154.975843934154 + ], + [ + -33.71836094837272, + 156.61657242566253 + ], + [ + -33.39160569794694, + 158.25730091717105 + ], + [ + -33.040517609719245, + 160.37425780557896 + ], + [ + -32.71376235929347, + 162.0149862970875 + ], + [ + -32.31400859547284, + 165.2373492454526 + ], + [ + -32.31400859547284, + 167.35430613386052 + ], + [ + -32.31400859547284, + 169.47126302226843 + ], + [ + -32.31400859547284, + 172.11659010285803 + ], + [ + -32.31400859547284, + 174.7619171834467 + ], + [ + -32.31400859547284, + 176.87887407185463 + ], + [ + -32.31400859547284, + 179.5242011524433 + ], + [ + -32.31400859547284, + 182.169528233032 + ], + [ + -32.31400859547284, + 184.81485531362068 + ], + [ + -32.692905641179095, + 187.46018239421028 + ], + [ + -33.49936540819181, + 190.68254534257449 + ], + [ + -33.8782624539017, + 193.32787242316408 + ], + [ + -34.587390869721276, + 195.444829311572 + ], + [ + -35.39385063673399, + 198.6671922599371 + ], + [ + -36.15164472815377, + 201.3125193405258 + ], + [ + -37.28833586527617, + 203.95784642111448 + ], + [ + -37.61856723538949, + 205.598574912623 + ], + [ + -38.376361326809274, + 208.2439019932117 + ], + [ + -39.13415541822542, + 210.88922907380038 + ], + [ + -39.843283834044996, + 213.0061859622092 + ], + [ + -40.197848041956604, + 215.1231428506171 + ], + [ + -40.85831078218325, + 216.76387134212564 + ], + [ + -40.85831078218325, + 218.88082823053355 + ], + [ + -41.18854215229658, + 221.73472249224596 + ], + [ + -41.49444068461162, + 222.94788826245076 + ], + [ + -41.49444068461162, + 224.5886167539593 + ], + [ + -41.49444068461162, + 226.7055736423672 + ], + [ + -41.49444068461162, + 227.539842366863 + ], + [ + -41.49444068461162, + 228.7530081370669 + ], + [ + -41.49444068461162, + 229.9661739072717 + ], + [ + -41.49444068461162, + 230.8004426317675 + ], + [ + -41.49444068461162, + 231.63471135626332 + ], + [ + -41.49444068461162, + 232.46898008075914 + ], + [ + -41.49444068461162, + 232.97649355482736 + ], + [ + -41.26501678537534, + 232.97649355482736 + ], + [ + -40.75750331130621, + 232.97649355482736 + ], + [ + -40.75750331130621, + 233.5952428588289 + ], + [ + -40.75750331130621, + 234.80840862903278 + ], + [ + -40.75750331130621, + 235.6426773535286 + ], + [ + -40.75750331130621, + 239.40036273344504 + ], + [ + -40.75750331130621, + 241.04109122495356 + ], + [ + -40.75750331130621, + 245.47661994352256 + ], + [ + -40.40641522308215, + 247.5935768319314 + ], + [ + -40.40641522308215, + 249.2343053234399 + ], + [ + -40.079659972652735, + 250.87503381494844 + ], + [ + -39.75290472222696, + 252.51228618677123 + ], + [ + -39.75290472222696, + 253.72545195697512 + ], + [ + -39.75290472222696, + 254.93861772717992 + ], + [ + -39.47481514739411, + 255.77288645167573 + ], + [ + -39.47481514739411, + 256.60715517617155 + ], + [ + -39.17239273476298, + 257.82032094637543 + ], + [ + -38.89430315993377, + 258.65458967087125 + ], + [ + -38.61621358510092, + 259.48885839536706 + ], + [ + -38.31379117246979, + 260.70202416557186 + ], + [ + -38.035701597636944, + 261.53629289006767 + ], + [ + -37.73327918500945, + 262.74945866027156 + ], + [ + -37.177100035343756, + 263.58372738476737 + ], + [ + -36.899010460514546, + 264.4179961092632 + ], + [ + -36.34283131084885, + 265.252264833759 + ], + [ + -35.83531783677972, + 265.7597783078272 + ], + [ + -35.58156109974516, + 266.26729178189544 + ], + [ + -34.56653415161054, + 267.2823187300328 + ], + [ + -34.28844457677769, + 268.1165874545286 + ], + [ + -33.780931102708564, + 268.6241009285968 + ], + [ + -33.273417628643074, + 269.13161440266504 + ], + [ + -32.36267427106577, + 270.0423577602396 + ], + [ + -31.806495121403714, + 270.8766264847354 + ], + [ + -30.97222639690881, + 271.4328056343993 + ], + [ + -30.416047247243114, + 272.2670743588951 + ], + [ + -29.50530388966945, + 273.1778177164697 + ], + [ + -28.949124740003754, + 274.0120864409655 + ], + [ + -28.441611265938263, + 274.5195999150337 + ], + [ + -27.88543211627257, + 275.35386863952954 + ], + [ + -27.37791864220344, + 275.86138211359776 + ], + [ + -26.87040516813795, + 276.368895587666 + ], + [ + -26.36289169406882, + 276.62265232470054 + ], + [ + -25.855378219999693, + 277.13016579876876 + ], + [ + -25.60162148296513, + 277.637679272837 + ], + [ + -25.094108008896, + 278.1451927469052 + ], + [ + -24.58659453483051, + 278.39894948393885 + ], + [ + -23.244812336266477, + 279.184552532839 + ], + [ + -22.73729886219735, + 279.6920660069072 + ], + [ + -21.903030137702444, + 279.97015558173916 + ], + [ + -21.395516663633316, + 280.2239123187737 + ], + [ + -20.888003189564188, + 280.73142579284195 + ], + [ + -20.053734465069283, + 281.0095153676739 + ], + [ + -19.546220991000155, + 281.26327210470845 + ], + [ + -19.038707516931026, + 281.77078557877667 + ], + [ + -18.20443879243612, + 282.0488751536086 + ], + [ + -17.696925318366993, + 282.30263189064226 + ], + [ + -17.189411844297865, + 282.5563886276768 + ], + [ + -16.681898370232375, + 282.8101453647105 + ], + [ + -15.847629645733832, + 283.0882349395424 + ], + [ + -15.340116171668342, + 283.0882349395424 + ], + [ + -14.832602697599214, + 283.341991676577 + ], + [ + -14.325089223530085, + 283.59574841361064 + ], + [ + -13.817575749460957, + 283.8495051506452 + ], + [ + -13.310062275395467, + 283.8495051506452 + ], + [ + -12.475793550896924, + 284.12759472547714 + ], + [ + -11.134011352332891, + 284.93753061217467 + ], + [ + -10.299742627837986, + 285.49370976183855 + ], + [ + -9.792229153768858, + 286.0012232359077 + ], + [ + -8.957960429273953, + 286.55740238557155 + ], + [ + -8.450446955204825, + 286.8111591226052 + ], + [ + -7.942933481135697, + 287.3186725966734 + ], + [ + -7.435420007070206, + 287.82618607074164 + ], + [ + -6.927906533001078, + 288.33369954480986 + ], + [ + -6.42039305893195, + 288.5874562818444 + ], + [ + -5.9128795848628215, + 288.8412130188781 + ], + [ + -5.405366110797331, + 289.3487264929463 + ], + [ + -4.897852636728203, + 289.60248322998086 + ], + [ + -4.668428737491922, + 289.83190712921714 + ], + [ + -4.160915263422794, + 290.33942060328536 + ], + [ + -3.9314913641865132, + 290.56884450252164 + ], + [ + -3.7020674649502325, + 290.7982684017579 + ], + [ + -3.472643565713952, + 291.0276923009942 + ], + [ + -3.0137957672413904, + 291.2571162002305 + ], + [ + -3.0137957672413904, + 291.47263562072567 + ], + [ + -2.8052285861158452, + 291.47263562072567 + ], + [ + -2.8052285861158452, + 291.70205951996195 + ], + [ + -2.8052285861158452, + 291.70205951996195 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "text", + "version": 533, + "versionNonce": 963988372, + "index": "b66", + "isDeleted": false, + "id": "jws6h01fanQ7tnzN8QUPf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22518.249956427706, + "y": 7286.9365481479035, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 182.06387329101562, + "height": 20, + "seed": 387120585, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "ProviderUnbondingPeriod", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "ProviderUnbondingPeriod", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 128, + "versionNonce": 1007019948, + "index": "b67", + "isDeleted": false, + "id": "941_5Fw4cnCbDcOmK5XFS", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22792.032618969468, + "y": 7152.299480493032, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 613.5073155154787, + "height": 2.130861367149919, + "seed": 1957780745, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 613.5073155154787, + -2.130861367149919 + ] + ] + }, + { + "type": "line", + "version": 258, + "versionNonce": 1567537428, + "index": "b68", + "isDeleted": false, + "id": "qn1y-ALQA7BtkxTzxi45q", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22791.163043931876, + "y": 7249.577359404039, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 613.5073155154787, + "height": 2.130861367149919, + "seed": 470973929, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 613.5073155154787, + -2.130861367149919 + ] + ] + }, + { + "type": "text", + "version": 78, + "versionNonce": 12849708, + "index": "b69", + "isDeleted": false, + "id": "3YLgZIYqKPYawlClHZI92", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23395.198478420887, + "y": 7194.39181376353, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 198.25587463378906, + "height": 20, + "seed": 486372391, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "DeliveryTimeOfVSCPacket", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "DeliveryTimeOfVSCPacket", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "freedraw", + "version": 279, + "versionNonce": 1792964244, + "index": "b6A", + "isDeleted": false, + "id": "TnDBPKkAIJHovdiFPUwXu", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23350.311344923324, + "y": 7155.9285494445885, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 26.72093202166434, + "height": 90.14621180145878, + "seed": 1095324327, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.20509106143799727, + 0 + ], + [ + 0.7126045355071255, + 0 + ], + [ + 1.2201180095762538, + 0 + ], + [ + 2.0543867340711586, + 0 + ], + [ + 2.8886554585660633, + 0 + ], + [ + 3.722924183060968, + 0 + ], + [ + 4.230437657130096, + 0 + ], + [ + 5.064706381625001, + 0.2780895748319381 + ], + [ + 5.572219855694129, + 0.7856030489001569 + ], + [ + 6.914002054258162, + 1.8492956726331613 + ], + [ + 7.4701812039238575, + 2.683564397128066 + ], + [ + 8.380924561497523, + 3.59430775470355 + ], + [ + 8.634681298532087, + 4.101821228771769 + ], + [ + 8.912770873364934, + 4.936089953267583 + ], + [ + 9.166527610399498, + 5.443603427335802 + ], + [ + 9.166527610399498, + 6.277872151831616 + ], + [ + 9.444617185228708, + 7.11214087632743 + ], + [ + 9.444617185228708, + 7.9464096008232445 + ], + [ + 9.722706760061556, + 8.780678325319059 + ], + [ + 9.722706760061556, + 9.614947049814873 + ], + [ + 9.722706760061556, + 10.82811282001876 + ], + [ + 9.722706760061556, + 11.335626294086978 + ], + [ + 9.722706760061556, + 12.548792064291774 + ], + [ + 9.722706760061556, + 13.383060788787589 + ], + [ + 9.722706760061556, + 14.217329513283403 + ], + [ + 9.722706760061556, + 15.051598237779217 + ], + [ + 9.722706760061556, + 15.559111711847436 + ], + [ + 9.722706760061556, + 17.227649160839064 + ], + [ + 9.441141065544798, + 18.06191788533488 + ], + [ + 8.881485796195193, + 18.896186609830693 + ], + [ + 8.599920101678435, + 19.730455334326507 + ], + [ + 8.318354407161678, + 20.56472405882232 + ], + [ + 7.758699137812073, + 21.398992783318135 + ], + [ + 7.452800605497032, + 22.612158553522022 + ], + [ + 7.171234910980274, + 23.446427278017836 + ], + [ + 6.611579641630669, + 24.28069600251365 + ], + [ + 6.051924372281064, + 25.114964727009465 + ], + [ + 5.770358677764307, + 25.94923345150528 + ], + [ + 5.488792983243911, + 26.783502176001093 + ], + [ + 4.977803389490873, + 27.291015650069312 + ], + [ + 4.696237694974116, + 28.125284374565126 + ], + [ + 4.4390048382556415, + 28.632797848633345 + ], + [ + 4.1817719815335295, + 29.140311322702473 + ], + [ + 3.948871962613339, + 29.369735221938754 + ], + [ + 3.6916391058948648, + 29.877248696006973 + ], + [ + 3.6916391058948648, + 30.106672595243253 + ], + [ + 3.6916391058948648, + 31.12169954337969 + ], + [ + 3.6916391058948648, + 31.35112344261597 + ], + [ + 3.6916391058948648, + 31.85863691668419 + ], + [ + 3.6916391058948648, + 32.08806081592047 + ], + [ + 3.6916391058948648, + 32.59557428998869 + ], + [ + 3.6916391058948648, + 32.82499818922497 + ], + [ + 3.6916391058948648, + 33.05442208846125 + ], + [ + 4.199152579963993, + 33.56193556252947 + ], + [ + 5.033421304458898, + 33.84002513736141 + ], + [ + 6.246587074663694, + 34.14244754999163 + ], + [ + 7.0808557991585985, + 34.42053712482357 + ], + [ + 8.294021569363395, + 34.72295953745288 + ], + [ + 9.50718733956819, + 35.0253819500831 + ], + [ + 10.720353109772986, + 35.32780436271241 + ], + [ + 11.933518879974145, + 35.630226775342635 + ], + [ + 13.14668465017894, + 36.23507160060217 + ], + [ + 13.980953374677483, + 36.51316117543411 + ], + [ + 15.194119144878641, + 36.81558358806342 + ], + [ + 16.028387869377184, + 37.09367316289536 + ], + [ + 17.696925318366993, + 37.92794188739117 + ], + [ + 18.531194042861898, + 38.20603146222311 + ], + [ + 19.038707516931026, + 38.45978819925767 + ], + [ + 19.87297624142593, + 38.73787777408961 + ], + [ + 20.38048971549506, + 38.73787777408961 + ], + [ + 21.214758439989964, + 38.73787777408961 + ], + [ + 21.444182339226245, + 38.73787777408961 + ], + [ + 21.951695813295373, + 38.73787777408961 + ], + [ + 22.181119712531654, + 38.73787777408961 + ], + [ + 22.410543611767935, + 38.73787777408961 + ], + [ + 22.639967511004215, + 38.73787777408961 + ], + [ + 22.869391410240496, + 38.73787777408961 + ], + [ + 23.098815309476777, + 38.73787777408961 + ], + [ + 23.098815309476777, + 38.949921074899066 + ], + [ + 23.098815309476777, + 39.17934497413535 + ], + [ + 23.098815309476777, + 39.40876887337163 + ], + [ + 23.098815309476777, + 39.63819277260791 + ], + [ + 23.098815309476777, + 40.09704057108047 + ], + [ + 23.098815309476777, + 40.60455404514869 + ], + [ + 23.098815309476777, + 41.11206751921691 + ], + [ + 22.58782571572374, + 41.619580993285126 + ], + [ + 21.673606238462526, + 42.5303243508597 + ], + [ + 20.83586139428371, + 43.08650350052358 + ], + [ + 20.276206124934106, + 43.92077222501939 + ], + [ + 19.438461280751653, + 44.47695137468327 + ], + [ + 18.878806011402048, + 45.31122009917908 + ], + [ + 18.36781641764901, + 45.8187335732473 + ], + [ + 17.85682682389597, + 46.32624704731552 + ], + [ + 17.297171554546367, + 47.16051577181133 + ], + [ + 17.039938697827893, + 47.66802924587955 + ], + [ + 16.528949104074854, + 48.17554271994868 + ], + [ + 16.271716247352742, + 48.6830561940169 + ], + [ + 16.01448339063427, + 49.19056966808512 + ], + [ + 15.73291769611751, + 50.02483839258093 + ], + [ + 15.475684839399037, + 50.53235186664915 + ], + [ + 15.475684839399037, + 51.03986534071737 + ], + [ + 14.96121912595845, + 52.05489228885381 + ], + [ + 14.96121912595845, + 52.88916101334962 + ], + [ + 14.703986269239977, + 53.39667448741784 + ], + [ + 14.446753412517864, + 53.90418796148606 + ], + [ + 14.446753412517864, + 54.41170143555428 + ], + [ + 14.18952055579939, + 54.9192149096225 + ], + [ + 13.932287699080916, + 55.426728383690715 + ], + [ + 13.932287699080916, + 55.934241857758934 + ], + [ + 13.932287699080916, + 56.163665756996124 + ], + [ + 13.932287699080916, + 56.67117923106434 + ], + [ + 13.932287699080916, + 56.900603130300624 + ], + [ + 13.932287699080916, + 57.130027029536905 + ], + [ + 13.932287699080916, + 57.359450928773185 + ], + [ + 13.932287699080916, + 57.588874828009466 + ], + [ + 13.932287699080916, + 57.81829872724575 + ], + [ + 13.932287699080916, + 58.325812201313965 + ], + [ + 13.932287699080916, + 58.555236100550246 + ], + [ + 13.932287699080916, + 58.78465999978653 + ], + [ + 13.932287699080916, + 59.292173473854746 + ], + [ + 14.18604443611548, + 60.029110847159245 + ], + [ + 14.69355791018097, + 60.28286758419381 + ], + [ + 15.201071384250099, + 60.79038105826203 + ], + [ + 16.035340108745004, + 61.068470633093966 + ], + [ + 16.869608833243547, + 61.62464978275784 + ], + [ + 17.70387755773845, + 61.90273935758978 + ], + [ + 18.21139103180758, + 62.156496094624345 + ], + [ + 19.045659756302484, + 62.43458566945628 + ], + [ + 19.87992848079739, + 62.71267524428822 + ], + [ + 20.387441954866517, + 63.22018871835644 + ], + [ + 20.894955428935646, + 63.473945455390094 + ], + [ + 21.402468903004774, + 63.72770219242466 + ], + [ + 21.909982377070264, + 64.23521566649288 + ], + [ + 22.417495851139392, + 64.7427291405611 + ], + [ + 22.92500932520852, + 65.25024261462931 + ], + [ + 23.43252279927765, + 65.75775608869753 + ], + [ + 23.71061237410686, + 66.59202481319335 + ], + [ + 24.218125848175987, + 67.09953828726157 + ], + [ + 24.496215423008834, + 67.93380701175738 + ], + [ + 25.028061734876246, + 69.27558921032141 + ], + [ + 25.306151309705456, + 70.10985793481723 + ], + [ + 25.584240884538303, + 70.94412665931304 + ], + [ + 25.86233045937115, + 71.77839538380886 + ], + [ + 26.140420034204, + 72.61266410830467 + ], + [ + 26.418509609033208, + 73.44693283280048 + ], + [ + 26.418509609033208, + 74.2812015572963 + ], + [ + 26.72093202166434, + 75.4943673275011 + ], + [ + 26.72093202166434, + 76.32863605199691 + ], + [ + 26.72093202166434, + 77.16290477649272 + ], + [ + 26.72093202166434, + 77.99717350098854 + ], + [ + 26.72093202166434, + 78.83144222548435 + ], + [ + 26.72093202166434, + 79.66571094998017 + ], + [ + 26.72093202166434, + 80.49997967447598 + ], + [ + 26.72093202166434, + 81.3342483989718 + ], + [ + 26.72093202166434, + 82.16851712346761 + ], + [ + 26.463699164945865, + 83.51029932203164 + ], + [ + 25.90404389559626, + 84.34456804652746 + ], + [ + 24.55530945766077, + 85.40826067025955 + ], + [ + 23.717564613478316, + 85.96443981992343 + ], + [ + 22.879819769299502, + 86.5206189695873 + ], + [ + 22.04207492511705, + 87.07679811925118 + ], + [ + 21.53108533136401, + 87.33055485628483 + ], + [ + 20.69334048718156, + 87.88673400594871 + ], + [ + 20.18235089342852, + 88.14049074298327 + ], + [ + 19.344606049246067, + 88.69666989264715 + ], + [ + 18.83361645549303, + 88.9504266296808 + ], + [ + 18.32262686173999, + 89.20418336671537 + ], + [ + 17.811637267986953, + 89.45794010374993 + ], + [ + 17.578737249063124, + 89.68736400298621 + ], + [ + 17.345837230142934, + 89.9167879022225 + ], + [ + 17.112937211219105, + 90.14621180145878 + ], + [ + 16.880037192298914, + 90.14621180145878 + ], + [ + 16.647137173378724, + 90.14621180145878 + ], + [ + 16.136147579622047, + 90.14621180145878 + ], + [ + 15.903247560701857, + 90.14621180145878 + ], + [ + 15.392257966948819, + 90.14621180145878 + ], + [ + 14.648368354271952, + 90.14621180145878 + ], + [ + 14.137378760518914, + 90.14621180145878 + ], + [ + 13.904478741598723, + 90.14621180145878 + ], + [ + 13.904478741598723, + 90.14621180145878 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "text", + "version": 193, + "versionNonce": 291040428, + "index": "b6B", + "isDeleted": false, + "id": "f1t0dH_ykrKc6O4tQR6UV", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23400.09342268955, + "y": 7410.815821711374, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 190.23988342285156, + "height": 20, + "seed": 1737652137, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "EvidenceSubmissionPeriod", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "EvidenceSubmissionPeriod", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "freedraw", + "version": 377, + "versionNonce": 2121958420, + "index": "b6C", + "isDeleted": false, + "id": "78OfnT5TlLO3rmNhR2lHl", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23353.497208614976, + "y": 7375.690574015365, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 23.140528745705517, + "height": 90.14621180145878, + "seed": 355811239, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.17761040665967115, + 0 + ], + [ + 0.6171209044973899, + 0 + ], + [ + 1.0566314023351087, + 0 + ], + [ + 1.7791144124773186, + 0 + ], + [ + 2.5015974226195286, + 0 + ], + [ + 3.2240804327617383, + 0 + ], + [ + 3.663590930599457, + 0 + ], + [ + 4.386073940741667, + 0.2780895748319381 + ], + [ + 4.825584438579385, + 0.7856030489001569 + ], + [ + 5.987577946559314, + 1.8492956726331613 + ], + [ + 6.469233286656221, + 2.683564397128066 + ], + [ + 7.257943906061519, + 3.59430775470355 + ], + [ + 7.477699154980379, + 4.101821228771769 + ], + [ + 7.718526825028833, + 4.936089953267583 + ], + [ + 7.938282073947692, + 5.443603427335802 + ], + [ + 7.938282073947692, + 6.277872151831616 + ], + [ + 8.179109743992996, + 7.11214087632743 + ], + [ + 8.179109743992996, + 7.9464096008232445 + ], + [ + 8.41993741404145, + 8.780678325319059 + ], + [ + 8.41993741404145, + 9.614947049814873 + ], + [ + 8.41993741404145, + 10.82811282001876 + ], + [ + 8.41993741404145, + 11.335626294086978 + ], + [ + 8.41993741404145, + 12.548792064291774 + ], + [ + 8.41993741404145, + 13.383060788787589 + ], + [ + 8.41993741404145, + 14.217329513283403 + ], + [ + 8.41993741404145, + 15.051598237779217 + ], + [ + 8.41993741404145, + 15.559111711847436 + ], + [ + 8.41993741404145, + 17.227649160839064 + ], + [ + 8.176099398118689, + 18.06191788533488 + ], + [ + 7.691433712147476, + 18.896186609830693 + ], + [ + 7.447595696224716, + 19.730455334326507 + ], + [ + 7.2037576803019565, + 20.56472405882232 + ], + [ + 6.719091994330744, + 21.398992783318135 + ], + [ + 6.45418155727839, + 22.612158553522022 + ], + [ + 6.2103435413556305, + 23.446427278017836 + ], + [ + 5.725677855384418, + 24.28069600251365 + ], + [ + 5.241012169413204, + 25.114964727009465 + ], + [ + 4.997174153490445, + 25.94923345150528 + ], + [ + 4.753336137564535, + 26.783502176001093 + ], + [ + 4.31081529385251, + 27.291015650069312 + ], + [ + 4.06697727792975, + 28.125284374565126 + ], + [ + 3.8442116831365847, + 28.632797848633345 + ], + [ + 3.621446088340269, + 29.140311322702473 + ], + [ + 3.4197529146766974, + 29.369735221938754 + ], + [ + 3.196987319883532, + 29.877248696006973 + ], + [ + 3.196987319883532, + 30.106672595243253 + ], + [ + 3.196987319883532, + 31.12169954337969 + ], + [ + 3.196987319883532, + 31.35112344261597 + ], + [ + 3.196987319883532, + 31.85863691668419 + ], + [ + 3.196987319883532, + 32.08806081592047 + ], + [ + 3.196987319883532, + 32.59557428998869 + ], + [ + 3.196987319883532, + 32.82499818922497 + ], + [ + 3.196987319883532, + 33.05442208846125 + ], + [ + 3.6364978177212506, + 33.56193556252947 + ], + [ + 4.35898082786346, + 33.84002513736141 + ], + [ + 5.409591538446807, + 34.14244754999163 + ], + [ + 6.132074548589016, + 34.42053712482357 + ], + [ + 7.182685259172362, + 34.72295953745288 + ], + [ + 8.233295969755709, + 35.0253819500831 + ], + [ + 9.283906680339054, + 35.32780436271241 + ], + [ + 10.334517390919249, + 35.630226775342635 + ], + [ + 11.385128101502596, + 36.23507160060217 + ], + [ + 12.107611111647955, + 36.51316117543411 + ], + [ + 13.158221822228152, + 36.81558358806342 + ], + [ + 13.880704832373512, + 37.09367316289536 + ], + [ + 15.325670852657932, + 37.92794188739117 + ], + [ + 16.04815386280014, + 38.20603146222311 + ], + [ + 16.48766436063786, + 38.45978819925767 + ], + [ + 17.21014737078007, + 38.73787777408961 + ], + [ + 17.64965786861779, + 38.73787777408961 + ], + [ + 18.37214087876, + 38.73787777408961 + ], + [ + 18.570823706549263, + 38.73787777408961 + ], + [ + 19.010334204386982, + 38.73787777408961 + ], + [ + 19.20901703217625, + 38.73787777408961 + ], + [ + 19.407699859965515, + 38.73787777408961 + ], + [ + 19.606382687754778, + 38.73787777408961 + ], + [ + 19.805065515544044, + 38.73787777408961 + ], + [ + 20.00374834333331, + 38.73787777408961 + ], + [ + 20.00374834333331, + 38.949921074899066 + ], + [ + 20.00374834333331, + 39.17934497413535 + ], + [ + 20.00374834333331, + 39.40876887337163 + ], + [ + 20.00374834333331, + 39.63819277260791 + ], + [ + 20.00374834333331, + 40.09704057108047 + ], + [ + 20.00374834333331, + 40.60455404514869 + ], + [ + 20.00374834333331, + 41.11206751921691 + ], + [ + 19.561227499621285, + 41.619580993285126 + ], + [ + 18.76950653433853, + 42.5303243508597 + ], + [ + 18.044013178322015, + 43.08650350052358 + ], + [ + 17.5593474923508, + 43.92077222501939 + ], + [ + 16.833854136331134, + 44.47695137468327 + ], + [ + 16.34918845035992, + 45.31122009917908 + ], + [ + 15.906667606647895, + 45.8187335732473 + ], + [ + 15.46414676293587, + 46.32624704731552 + ], + [ + 14.979481076964658, + 47.16051577181133 + ], + [ + 14.756715482171492, + 47.66802924587955 + ], + [ + 14.314194638459467, + 48.17554271994868 + ], + [ + 14.091429043663151, + 48.6830561940169 + ], + [ + 13.868663448869986, + 49.19056966808512 + ], + [ + 13.624825432947228, + 50.02483839258093 + ], + [ + 13.402059838154061, + 50.53235186664915 + ], + [ + 13.402059838154061, + 51.03986534071737 + ], + [ + 12.95652864856458, + 52.05489228885381 + ], + [ + 12.95652864856458, + 52.88916101334962 + ], + [ + 12.733763053771415, + 53.39667448741784 + ], + [ + 12.5109974589751, + 53.90418796148606 + ], + [ + 12.5109974589751, + 54.41170143555428 + ], + [ + 12.288231864181933, + 54.9192149096225 + ], + [ + 12.065466269388768, + 55.426728383690715 + ], + [ + 12.065466269388768, + 55.934241857758934 + ], + [ + 12.065466269388768, + 56.163665756996124 + ], + [ + 12.065466269388768, + 56.67117923106434 + ], + [ + 12.065466269388768, + 56.900603130300624 + ], + [ + 12.065466269388768, + 57.130027029536905 + ], + [ + 12.065466269388768, + 57.359450928773185 + ], + [ + 12.065466269388768, + 57.588874828009466 + ], + [ + 12.065466269388768, + 57.81829872724575 + ], + [ + 12.065466269388768, + 58.325812201313965 + ], + [ + 12.065466269388768, + 58.555236100550246 + ], + [ + 12.065466269388768, + 58.78465999978653 + ], + [ + 12.065466269388768, + 59.292173473854746 + ], + [ + 12.285221518307628, + 60.029110847159245 + ], + [ + 12.724732016142195, + 60.28286758419381 + ], + [ + 13.164242513979914, + 60.79038105826203 + ], + [ + 13.886725524122124, + 61.068470633093966 + ], + [ + 14.609208534267484, + 61.62464978275784 + ], + [ + 15.331691544409694, + 61.90273935758978 + ], + [ + 15.771202042247413, + 62.156496094624345 + ], + [ + 16.493685052389623, + 62.43458566945628 + ], + [ + 17.216168062531832, + 62.71267524428822 + ], + [ + 17.65567856036955, + 63.22018871835644 + ], + [ + 18.09518905820727, + 63.473945455390094 + ], + [ + 18.534699556044988, + 63.72770219242466 + ], + [ + 18.974210053879556, + 64.23521566649288 + ], + [ + 19.413720551717276, + 64.7427291405611 + ], + [ + 19.853231049554996, + 65.25024261462931 + ], + [ + 20.292741547392712, + 65.75775608869753 + ], + [ + 20.533569217438018, + 66.59202481319335 + ], + [ + 20.973079715275734, + 67.09953828726157 + ], + [ + 21.213907385324188, + 67.93380701175738 + ], + [ + 21.674490304291503, + 69.27558921032141 + ], + [ + 21.915317974336805, + 70.10985793481723 + ], + [ + 22.15614564438526, + 70.94412665931304 + ], + [ + 22.396973314433712, + 71.77839538380886 + ], + [ + 22.637800984482165, + 72.61266410830467 + ], + [ + 22.878628654527468, + 73.44693283280048 + ], + [ + 22.878628654527468, + 74.2812015572963 + ], + [ + 23.140528745705517, + 75.4943673275011 + ], + [ + 23.140528745705517, + 76.32863605199691 + ], + [ + 23.140528745705517, + 77.16290477649272 + ], + [ + 23.140528745705517, + 77.99717350098854 + ], + [ + 23.140528745705517, + 78.83144222548435 + ], + [ + 23.140528745705517, + 79.66571094998017 + ], + [ + 23.140528745705517, + 80.49997967447598 + ], + [ + 23.140528745705517, + 81.3342483989718 + ], + [ + 23.140528745705517, + 82.16851712346761 + ], + [ + 22.91776315091235, + 83.51029932203164 + ], + [ + 22.433097464941138, + 84.34456804652746 + ], + [ + 21.265083265209444, + 85.40826067025955 + ], + [ + 20.53958990918978, + 85.96443981992343 + ], + [ + 19.814096553173265, + 86.5206189695873 + ], + [ + 19.088603197153596, + 87.07679811925118 + ], + [ + 18.64608235344157, + 87.33055485628483 + ], + [ + 17.920588997421905, + 87.88673400594871 + ], + [ + 17.47806815370988, + 88.14049074298327 + ], + [ + 16.752574797690215, + 88.69666989264715 + ], + [ + 16.31005395397819, + 88.9504266296808 + ], + [ + 15.867533110266164, + 89.20418336671537 + ], + [ + 15.42501226655414, + 89.45794010374993 + ], + [ + 15.223319092887417, + 89.68736400298621 + ], + [ + 15.021625919223846, + 89.9167879022225 + ], + [ + 14.819932745557125, + 90.14621180145878 + ], + [ + 14.618239571893554, + 90.14621180145878 + ], + [ + 14.416546398229983, + 90.14621180145878 + ], + [ + 13.974025554514807, + 90.14621180145878 + ], + [ + 13.772332380851235, + 90.14621180145878 + ], + [ + 13.32981153713921, + 90.14621180145878 + ], + [ + 12.685597519760464, + 90.14621180145878 + ], + [ + 12.243076676048439, + 90.14621180145878 + ], + [ + 12.041383502384868, + 90.14621180145878 + ], + [ + 12.041383502384868, + 90.14621180145878 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "line", + "version": 539, + "versionNonce": 527333164, + "index": "b6D", + "isDeleted": false, + "id": "DUPc1CO8uPiJUS9QTeZf1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22784.210098412255, + "y": 7373.022374567146, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 613.5073155154787, + "height": 2.130861367149919, + "seed": 1669482343, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 613.5073155154787, + -2.130861367149919 + ] + ] + }, + { + "type": "freedraw", + "version": 356, + "versionNonce": 775479700, + "index": "b6E", + "isDeleted": false, + "id": "_wZSatZ9ZcB0UO9DSEGq8", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23359.02945309428, + "y": 7263.111223824184, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 26.581887234249734, + "height": 104.95795778094453, + "seed": 1446040809, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -0.22247165986846085, + -0.22247165986573236 + ], + [ + 0.1946627023826295, + -0.22247165986573236 + ], + [ + 1.0289314268775342, + -0.22247165986573236 + ], + [ + 1.863200151372439, + -0.22247165986573236 + ], + [ + 3.503928642880055, + -0.22247165986573236 + ], + [ + 4.338197367378598, + -0.22247165986573236 + ], + [ + 6.455154255785601, + -0.22247165986573236 + ], + [ + 7.289422980280506, + -0.22247165986573236 + ], + [ + 9.93475006087101, + -0.22247165986573236 + ], + [ + 11.575478552378627, + -0.22247165986573236 + ], + [ + 12.788644322583423, + 0.07995075276448915 + ], + [ + 14.429372814091039, + 0.7369373733044995 + ], + [ + 16.577614779667783, + 2.276858393936891 + ], + [ + 17.411883504162688, + 2.554947968768829 + ], + [ + 17.665640241197252, + 3.062461442837048 + ], + [ + 18.17315371526638, + 3.5699749169052666 + ], + [ + 18.729332864928438, + 4.404243641401081 + ], + [ + 18.729332864928438, + 4.6336675406373615 + ], + [ + 18.983089601963, + 5.14118101470558 + ], + [ + 18.983089601963, + 5.648694488773799 + ], + [ + 18.983089601963, + 6.156207962842018 + ], + [ + 18.983089601963, + 6.663721436910237 + ], + [ + 18.983089601963, + 7.497990161406051 + ], + [ + 18.983089601963, + 8.711155931610847 + ], + [ + 18.701523907446244, + 9.545424656106661 + ], + [ + 17.78730443018503, + 10.456168013681236 + ], + [ + 17.178983485242497, + 11.669333783885122 + ], + [ + 16.264764007981285, + 12.580077141459697 + ], + [ + 15.35054453072371, + 13.490820499034271 + ], + [ + 14.436325053462497, + 14.401563856608846 + ], + [ + 13.449107062810072, + 15.715537097689776 + ], + [ + 11.620668108287646, + 17.537023812838925 + ], + [ + 10.70644863103007, + 18.4477671704135 + ], + [ + 9.792229153768858, + 19.358510527988074 + ], + [ + 9.232573884419253, + 20.192779252483888 + ], + [ + 8.31835440715804, + 21.103522610058462 + ], + [ + 7.404134929900465, + 22.014265967633037 + ], + [ + 6.84447966055086, + 22.84853469212885 + ], + [ + 6.333490066797822, + 23.35604816619798 + ], + [ + 5.822500473041146, + 23.863561640266198 + ], + [ + 5.311510879288107, + 24.371075114334417 + ], + [ + 5.078610860367917, + 24.600499013570698 + ], + [ + 4.821378003649443, + 25.108012487638916 + ], + [ + 4.3103884098927665, + 25.36176922467257 + ], + [ + 4.053155553174292, + 25.86928269874079 + ], + [ + 3.7959226964558184, + 26.376796172809918 + ], + [ + 3.5630226775319898, + 26.6062200720462 + ], + [ + 3.5630226775319898, + 27.113733546114418 + ], + [ + 3.3057898208135157, + 27.621247020182636 + ], + [ + 3.0485569640950416, + 28.128760494250855 + ], + [ + 2.7913241073729296, + 29.143787442387293 + ], + [ + 2.7913241073729296, + 29.65130091645551 + ], + [ + 2.7913241073729296, + 30.15881439052373 + ], + [ + 2.7913241073729296, + 30.66632786459195 + ], + [ + 2.7913241073729296, + 31.173841338660168 + ], + [ + 2.7913241073729296, + 31.681354812728387 + ], + [ + 2.7913241073729296, + 32.188868286796605 + ], + [ + 2.7913241073729296, + 32.696381760864824 + ], + [ + 2.7913241073729296, + 33.20389523493395 + ], + [ + 3.7020674649502325, + 34.11463859250853 + ], + [ + 4.209580939015723, + 34.622152066576746 + ], + [ + 4.717094413084851, + 34.8759088036104 + ], + [ + 5.551363137583394, + 35.43208795327428 + ], + [ + 6.058876611648884, + 35.939601427342495 + ], + [ + 6.893145336147427, + 36.21769100217443 + ], + [ + 7.727414060642332, + 36.77387015183831 + ], + [ + 8.561682785137236, + 37.05195972667025 + ], + [ + 9.395951509632141, + 37.608138876334124 + ], + [ + 10.230220234127046, + 37.88622845116606 + ], + [ + 12.277654728830385, + 38.46674043862822 + ], + [ + 13.490820499031543, + 39.071585263887755 + ], + [ + 14.325089223530085, + 39.34967483871969 + ], + [ + 15.15935794802499, + 39.62776441355163 + ], + [ + 15.993626672519895, + 39.90585398838357 + ], + [ + 16.501140146589023, + 40.159610725417224 + ], + [ + 17.00865362065815, + 40.41336746245179 + ], + [ + 17.51616709472728, + 40.41336746245179 + ], + [ + 18.02368056879277, + 40.66712419948544 + ], + [ + 18.531194042861898, + 40.66712419948544 + ], + [ + 19.038707516931026, + 40.92088093652001 + ], + [ + 19.546220991000155, + 40.92088093652001 + ], + [ + 20.053734465065645, + 40.92088093652001 + ], + [ + 20.561247939134773, + 40.92088093652001 + ], + [ + 21.0687614132039, + 40.92088093652001 + ], + [ + 21.298185312440182, + 41.15030483575629 + ], + [ + 21.80569878650931, + 41.15030483575629 + ], + [ + 22.31321226057844, + 41.15030483575629 + ], + [ + 23.05014963388021, + 41.15030483575629 + ], + [ + 23.27957353311649, + 41.15030483575629 + ], + [ + 23.78708700718562, + 41.15030483575629 + ], + [ + 24.0165109064219, + 41.15030483575629 + ], + [ + 24.524024380491028, + 41.15030483575629 + ], + [ + 24.75344827972731, + 41.15030483575629 + ], + [ + 24.98287217896359, + 41.15030483575629 + ], + [ + 25.21229607819987, + 41.15030483575629 + ], + [ + 25.44171997743615, + 41.15030483575629 + ], + [ + 25.67114387667243, + 41.15030483575629 + ], + [ + 25.900567775908712, + 41.15030483575629 + ], + [ + 26.129991675144993, + 41.15030483575629 + ], + [ + 26.359415574381273, + 41.37972873499257 + ], + [ + 26.359415574381273, + 41.59177203580202 + ], + [ + 26.359415574381273, + 41.8072914562963 + ], + [ + 26.359415574381273, + 42.02281087679148 + ], + [ + 26.359415574381273, + 42.25223477602776 + ], + [ + 26.359415574381273, + 42.48165867526404 + ], + [ + 26.359415574381273, + 42.711082574500324 + ], + [ + 26.359415574381273, + 43.21859604856854 + ], + [ + 26.359415574381273, + 43.44801994780482 + ], + [ + 26.1021827176628, + 43.95553342187304 + ], + [ + 25.844949860940687, + 44.46304689594217 + ], + [ + 25.33396026718765, + 44.97056037001039 + ], + [ + 25.076727410469175, + 45.47807384407861 + ], + [ + 24.8194945537507, + 45.98558731814683 + ], + [ + 24.308504959994025, + 46.493100792215046 + ], + [ + 23.797515366240987, + 47.000614266283264 + ], + [ + 23.540282509522513, + 47.50812774035148 + ], + [ + 23.029292915769474, + 48.0156412144197 + ], + [ + 22.518303322016436, + 48.52315468848792 + ], + [ + 22.261070465294324, + 49.03066816255614 + ], + [ + 21.750080871541286, + 49.53818163662436 + ], + [ + 21.517180852621095, + 49.76760553586064 + ], + [ + 20.49520166511138, + 50.78263248399708 + ], + [ + 20.26230164619119, + 51.01205638323427 + ], + [ + 19.751312052438152, + 51.26581312026792 + ], + [ + 19.49407919571604, + 51.77332659433614 + ], + [ + 18.983089601963, + 52.027083331370704 + ], + [ + 18.472100008209964, + 52.53459680543892 + ], + [ + 17.961110414456925, + 52.78835354247258 + ], + [ + 17.70387755773845, + 53.2958670165408 + ], + [ + 17.192887963985413, + 53.54962375357536 + ], + [ + 16.681898370228737, + 54.05713722764358 + ], + [ + 16.1709087764757, + 54.310893964677234 + ], + [ + 15.913675919757225, + 54.81840743874636 + ], + [ + 15.402686326004186, + 55.07216417578002 + ], + [ + 15.169786307080358, + 55.3015880750163 + ], + [ + 14.65879671332732, + 55.55534481205086 + ], + [ + 14.147807119574281, + 56.06285828611908 + ], + [ + 13.914907100650453, + 56.29228218535536 + ], + [ + 13.657674243931979, + 56.79979565942358 + ], + [ + 13.14668465017894, + 57.3073091334918 + ], + [ + 12.889451793460466, + 57.81482260756002 + ], + [ + 12.121229342985316, + 58.5760928186628 + ], + [ + 11.839663648468559, + 59.410361543158615 + ], + [ + 11.606763629548368, + 59.639785442394896 + ], + [ + 11.095774035791692, + 60.147298916463114 + ], + [ + 10.838541179073218, + 60.65481239053133 + ], + [ + 10.581308322354744, + 61.16232586459955 + ], + [ + 10.32407546563627, + 61.66983933866777 + ], + [ + 10.066842608914158, + 62.17735281273599 + ], + [ + 9.809609752195684, + 62.68486628680421 + ], + [ + 9.298620158442645, + 63.19237976087243 + ], + [ + 9.065720139518817, + 63.42180366010871 + ], + [ + 8.808487282800343, + 63.929317134177836 + ], + [ + 8.575587263880152, + 64.15874103341412 + ], + [ + 8.575587263880152, + 64.3881649326504 + ], + [ + 8.342687244956323, + 64.61758883188668 + ], + [ + 8.342687244956323, + 64.84701273112296 + ], + [ + 8.109787226036133, + 65.07643663035924 + ], + [ + 7.876887207112304, + 65.30586052959552 + ], + [ + 7.876887207112304, + 65.5352844288318 + ], + [ + 7.6439871881921135, + 65.76470832806808 + ], + [ + 7.424991648011201, + 65.98022774856327 + ], + [ + 7.424991648011201, + 66.20965164779955 + ], + [ + 7.424991648011201, + 66.42517106829382 + ], + [ + 7.19209162909101, + 66.42517106829382 + ], + [ + 7.19209162909101, + 66.63373824941846 + ], + [ + 7.19209162909101, + 66.845781550227 + ], + [ + 7.19209162909101, + 67.07520544946328 + ], + [ + 7.19209162909101, + 67.30462934870047 + ], + [ + 7.19209162909101, + 67.52014876919475 + ], + [ + 7.19209162909101, + 67.97899656766731 + ], + [ + 7.19209162909101, + 68.43784436613987 + ], + [ + 7.19209162909101, + 68.66726826537615 + ], + [ + 6.959191610167181, + 68.89669216461334 + ], + [ + 6.959191610167181, + 69.12611606384962 + ], + [ + 6.959191610167181, + 69.3555399630859 + ], + [ + 6.959191610167181, + 69.58496386232218 + ], + [ + 6.959191610167181, + 69.80048328281646 + ], + [ + 6.726291591246991, + 70.02990718205274 + ], + [ + 6.726291591246991, + 70.25933108128902 + ], + [ + 6.493391572323162, + 70.48875498052621 + ], + [ + 6.493391572323162, + 70.71817887976249 + ], + [ + 6.493391572323162, + 70.93369830025676 + ], + [ + 6.493391572323162, + 71.16312219949305 + ], + [ + 6.277872151829797, + 71.3751655003025 + ], + [ + 6.277872151829797, + 71.58025656174141 + ], + [ + 6.277872151829797, + 71.79577598223568 + ], + [ + 6.277872151829797, + 72.02519988147196 + ], + [ + 6.277872151829797, + 72.24071930196715 + ], + [ + 6.044972132909606, + 72.47014320120343 + ], + [ + 6.044972132909606, + 72.69956710043971 + ], + [ + 5.812072113985778, + 72.92899099967599 + ], + [ + 5.812072113985778, + 73.15841489891227 + ], + [ + 5.579172095065587, + 73.38783879814855 + ], + [ + 5.579172095065587, + 73.60335821864373 + ], + [ + 5.579172095065587, + 73.81192539976746 + ], + [ + 5.579172095065587, + 74.02396870057692 + ], + [ + 5.346272076141759, + 74.02396870057692 + ], + [ + 5.346272076141759, + 74.2533925998132 + ], + [ + 5.346272076141759, + 74.48281649904948 + ], + [ + 5.346272076141759, + 74.71224039828576 + ], + [ + 5.346272076141759, + 74.94166429752204 + ], + [ + 5.346272076141759, + 75.15718371801722 + ], + [ + 5.127276535964484, + 75.3727031385115 + ], + [ + 5.127276535964484, + 75.58822255900668 + ], + [ + 5.127276535964484, + 75.79678974013041 + ], + [ + 5.127276535964484, + 76.00535692125413 + ], + [ + 5.127276535964484, + 76.23478082049041 + ], + [ + 5.127276535964484, + 76.4642047197267 + ], + [ + 5.127276535964484, + 76.69362861896298 + ], + [ + 5.127276535964484, + 76.92305251819926 + ], + [ + 5.127276535964484, + 77.15247641743645 + ], + [ + 5.127276535964484, + 77.38190031667273 + ], + [ + 5.127276535964484, + 77.61132421590901 + ], + [ + 5.127276535964484, + 77.84074811514529 + ], + [ + 5.127276535964484, + 78.07017201438157 + ], + [ + 5.127276535964484, + 78.52901981285413 + ], + [ + 5.342795956457849, + 78.74453923334931 + ], + [ + 5.572219855694129, + 78.74453923334931 + ], + [ + 5.80164375493041, + 78.9739631325856 + ], + [ + 6.031067654166691, + 78.9739631325856 + ], + [ + 6.2604915534029715, + 79.20338703182188 + ], + [ + 6.7680050274721, + 79.45714376885553 + ], + [ + 7.275518501541228, + 79.7109005058901 + ], + [ + 7.783031975606718, + 79.7109005058901 + ], + [ + 8.290545449675847, + 79.96465724292375 + ], + [ + 8.798058923744975, + 79.96465724292375 + ], + [ + 9.305572397814103, + 80.21841397995831 + ], + [ + 9.813085871879593, + 80.21841397995831 + ], + [ + 10.320599345948722, + 80.47217071699197 + ], + [ + 10.82811282001785, + 80.47217071699197 + ], + [ + 11.335626294086978, + 80.47217071699197 + ], + [ + 11.843139768152469, + 80.72592745402653 + ], + [ + 12.350653242221597, + 80.72592745402653 + ], + [ + 13.365680190359853, + 81.23344092809475 + ], + [ + 13.873193664428982, + 81.48719766512932 + ], + [ + 14.380707138494472, + 81.48719766512932 + ], + [ + 14.610131037730753, + 81.7166215643656 + ], + [ + 15.117644511799881, + 81.97037830139925 + ], + [ + 15.347068411036162, + 82.19980220063553 + ], + [ + 15.576492310272442, + 82.42922609987181 + ], + [ + 16.08400578434157, + 82.68298283690638 + ], + [ + 16.31342968357785, + 82.91240673614266 + ], + [ + 16.82094315764698, + 83.16616347317631 + ], + [ + 17.05036705688326, + 83.3955873724135 + ], + [ + 17.27979095611954, + 83.62501127164978 + ], + [ + 17.509214855355822, + 83.85443517088606 + ], + [ + 17.738638754592102, + 84.08385907012234 + ], + [ + 17.968062653828383, + 84.31328296935862 + ], + [ + 18.221819390862947, + 84.82079644342684 + ], + [ + 18.451243290099228, + 85.05022034266312 + ], + [ + 18.68066718933551, + 85.2796442418994 + ], + [ + 18.934423926370073, + 85.78715771596762 + ], + [ + 19.417604562640918, + 86.52409508927212 + ], + [ + 19.671361299671844, + 87.03160856334034 + ], + [ + 19.900785198908125, + 87.26103246257662 + ], + [ + 19.900785198908125, + 87.76854593664575 + ], + [ + 20.15454193594269, + 88.27605941071397 + ], + [ + 20.15454193594269, + 88.78357288478219 + ], + [ + 20.15454193594269, + 89.29108635885041 + ], + [ + 20.15454193594269, + 89.79859983291863 + ], + [ + 20.15454193594269, + 90.30611330698684 + ], + [ + 20.15454193594269, + 91.14038203148266 + ], + [ + 20.15454193594269, + 91.64789550555088 + ], + [ + 20.15454193594269, + 92.1554089796191 + ], + [ + 20.15454193594269, + 92.98967770411491 + ], + [ + 20.15454193594269, + 93.49719117818313 + ], + [ + 20.15454193594269, + 94.33145990267894 + ], + [ + 20.15454193594269, + 95.16572862717476 + ], + [ + 19.897309079224215, + 95.67324210124298 + ], + [ + 19.64007622250574, + 96.1807555753112 + ], + [ + 19.129086628749064, + 96.68826904937941 + ], + [ + 18.360864178277552, + 97.70329599751676 + ], + [ + 17.849874584524514, + 98.21080947158498 + ], + [ + 17.59264172780604, + 98.7183229456532 + ], + [ + 16.754896883623587, + 98.99641252048514 + ], + [ + 16.24390728987055, + 99.50392599455336 + ], + [ + 15.73291769611751, + 99.75768273158701 + ], + [ + 14.895172851935058, + 100.03577230641895 + ], + [ + 14.38418325818202, + 100.28952904345351 + ], + [ + 13.546438413999567, + 100.84570819311739 + ], + [ + 13.035448820246529, + 101.09946493015104 + ], + [ + 12.52445922649349, + 101.35322166718561 + ], + [ + 11.686714382311038, + 101.63131124201755 + ], + [ + 11.453814363390848, + 101.86073514125383 + ], + [ + 10.942824769634171, + 102.11449187828839 + ], + [ + 10.431835175881133, + 102.36824861532205 + ], + [ + 10.198935156960943, + 102.59767251455833 + ], + [ + 9.966035138037114, + 102.8270964137946 + ], + [ + 9.733135119116923, + 103.05652031303089 + ], + [ + 8.989245506440056, + 103.28594421226717 + ], + [ + 8.756345487519866, + 103.28594421226717 + ], + [ + 8.245355893766828, + 103.53970094930173 + ], + [ + 7.734366300013789, + 103.53970094930173 + ], + [ + 7.223376706257113, + 103.53970094930173 + ], + [ + 6.712387112504075, + 103.79345768633539 + ], + [ + 6.201397518751037, + 103.79345768633539 + ], + [ + 5.690407924997999, + 104.04721442336995 + ], + [ + 5.45750790607417, + 104.27663832260623 + ], + [ + 4.946518312321132, + 104.27663832260623 + ], + [ + 4.713618293400941, + 104.50606222184251 + ], + [ + 4.480718274477113, + 104.50606222184251 + ], + [ + 4.480718274477113, + 104.7354861210788 + ], + [ + 4.247818255556922, + 104.7354861210788 + ], + [ + 4.247818255556922, + 104.7354861210788 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "text", + "version": 153, + "versionNonce": 393130412, + "index": "b6F", + "isDeleted": false, + "id": "yeS3XO1EOVWA6lmar8WwX", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23400.47927197462, + "y": 7292.412232987309, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 183.40786743164062, + "height": 20, + "seed": 1462983721, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "ConsumerTrustingPeriod", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "ConsumerTrustingPeriod", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 447, + "versionNonce": 1632603924, + "index": "b6G", + "isDeleted": false, + "id": "mQDr3HbXHMUi5_IrezK4E", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22772.162744645553, + "y": 7720.205165974689, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 229.22940624189496, + "height": 326.84774951837966, + "seed": 2088524535, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "7cfhXuRWUaaHI_l3DQei0", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 425, + "versionNonce": 1216584748, + "index": "b6H", + "isDeleted": false, + "id": "ZHwlKXKIvpVqPy5r3cT9j", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22784.123868839597, + "y": 7723.115298296861, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 541320215, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "bCJYRnK6GJeXMcdxDzwAv" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 175, + "versionNonce": 674532500, + "index": "b6I", + "isDeleted": false, + "id": "bCJYRnK6GJeXMcdxDzwAv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22808.438532949083, + "y": 7738.115298296861, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 40, + "seed": 813517111, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ZHwlKXKIvpVqPy5r3cT9j", + "originalText": "Validator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 466, + "versionNonce": 211236524, + "index": "b6J", + "isDeleted": false, + "id": "sHqBlwXKB4Et-hUD6l360", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22784.218208428094, + "y": 7974.457000594109, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 2056063575, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "VX6PhtoadJmZUHu-_l-jK" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 268, + "versionNonce": 345889300, + "index": "b6K", + "isDeleted": false, + "id": "VX6PhtoadJmZUHu-_l-jK", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22794.00487265965, + "y": 7989.457000594109, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 40, + "seed": 726116215, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "sHqBlwXKB4Et-hUD6l360", + "originalText": "Validator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 542, + "versionNonce": 1884520748, + "index": "b6L", + "isDeleted": false, + "id": "cxHiVFX_99YHvQ81T1yOX", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23073.303495049564, + "y": 7818.316304929124, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 229.22940624189496, + "height": 231.33230407116883, + "seed": 1626448023, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 586, + "versionNonce": 293697428, + "index": "b6M", + "isDeleted": false, + "id": "OfqOgicR_6I7ouwvQDYgO", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23083.78657047548, + "y": 7825.003809973367, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 2101310903, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "3pRvQou5TRSE1MjPC157f" + }, + { + "id": "7cfhXuRWUaaHI_l3DQei0", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 348, + "versionNonce": 1528986540, + "index": "b6N", + "isDeleted": false, + "id": "3pRvQou5TRSE1MjPC157f", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23108.101234584967, + "y": 7840.003809973367, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 40, + "seed": 928360151, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "OfqOgicR_6I7ouwvQDYgO", + "originalText": "Validator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 510, + "versionNonce": 991257876, + "index": "b6O", + "isDeleted": false, + "id": "t0iIq-yRr2p4snIqs_UXU", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23085.372150445313, + "y": 7977.277929015344, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 1841869815, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "BU8XOll1UJiFGwH6BVwOZ" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 280, + "versionNonce": 925771308, + "index": "b6P", + "isDeleted": false, + "id": "BU8XOll1UJiFGwH6BVwOZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23095.15881467687, + "y": 7992.277929015344, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 40, + "seed": 949820695, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "t0iIq-yRr2p4snIqs_UXU", + "originalText": "Validator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 278, + "versionNonce": 919577236, + "index": "b6Q", + "isDeleted": false, + "id": "7cfhXuRWUaaHI_l3DQei0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23011.00225603125, + "y": 7761.074683128719, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 59.90707181451944, + "height": 56.242408841861106, + "seed": 994533943, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "0ugBmMM2bhoL-f2Z1IF9t", + "focus": 1.7834062342263817, + "gap": 13.342530311738756, + "fixedPoint": null + }, + "endBinding": { + "elementId": "0ugBmMM2bhoL-f2Z1IF9t", + "focus": -0.6703917970051821, + "gap": 13.50092746478549, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 59.90707181451944, + 56.242408841861106 + ] + ] + }, + { + "type": "text", + "version": 691, + "versionNonce": 425754796, + "index": "b6R", + "isDeleted": false, + "id": "0ugBmMM2bhoL-f2Z1IF9t", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.742788151838286, + "x": 23027.499181420033, + "y": 7750.5772126884885, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 69.60115051269531, + "height": 33.496217426573835, + "seed": 917242711, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "7cfhXuRWUaaHI_l3DQei0", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 13.398486970629534, + "fontFamily": 1, + "text": "VSCPacket\nsent", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket\nsent", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 227, + "versionNonce": 191246356, + "index": "b6S", + "isDeleted": false, + "id": "pszhYSZxuOdLBz1FAd3Do", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23138.104553538607, + "y": 7786.57715625215, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 20, + "seed": 1528791159, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 131, + "versionNonce": 1768131372, + "index": "b6T", + "isDeleted": false, + "id": "REfNfr-QVo2U2yP7-2ayN", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22826.535214464282, + "y": 7696.233137468646, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.82392883300781, + "height": 20, + "seed": 1516657047, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "provider chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "freedraw", + "version": 365, + "versionNonce": 2026835348, + "index": "b6U", + "isDeleted": false, + "id": "P2PHM6HuPnmGvd02MGTe8", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22768.009548922666, + "y": 7731.536601707589, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 67.6522413172388, + "height": 292.03229089007436, + "seed": 968167095, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -0.41365824256354244, + 0 + ], + [ + -1.2514030867423571, + 0 + ], + [ + -2.895607697937521, + -0.3302313701124149 + ], + [ + -4.539812309132685, + -0.003476119684819423 + ], + [ + -9.886084385274444, + 1.8562479120037096 + ], + [ + -16.337762521376135, + 3.8654450901640303 + ], + [ + -19.56360158942698, + 5.071658620997368 + ], + [ + -22.789440657477826, + 6.277872151830707 + ], + [ + -28.285185880093195, + 9.399427629319689 + ], + [ + -31.51102494814404, + 11.008871043659383 + ], + [ + -34.159828148418455, + 11.763189015390708 + ], + [ + -36.982437332961126, + 13.372632429731311 + ], + [ + -38.62664194415629, + 14.029619050271322 + ], + [ + -40.896548098720814, + 15.5417311134197 + ], + [ + -43.166454253288975, + 17.05384317656899 + ], + [ + -44.8106588644805, + 18.037585047536595 + ], + [ + -46.58000378435099, + 19.44888963980884 + ], + [ + -48.349348704217846, + 20.860194232081085 + ], + [ + -50.58101754224481, + 23.08491083073659 + ], + [ + -51.89846690301056, + 24.39888407181752 + ], + [ + -52.50678784795673, + 25.612049842021406 + ], + [ + -53.494005838609155, + 26.926023083102336 + ], + [ + -54.40822531587037, + 27.83676644067691 + ], + [ + -55.624867205759074, + 30.263097981085593 + ], + [ + -55.930765738074115, + 31.47626375129039 + ], + [ + -56.21233143259087, + 32.310532475786204 + ], + [ + -56.51822996490591, + 33.52369824599009 + ], + [ + -56.51822996490591, + 34.357966970485904 + ], + [ + -56.51822996490591, + 35.5711327406907 + ], + [ + -56.51822996490591, + 36.78429851089459 + ], + [ + -56.51822996490591, + 37.99746428109938 + ], + [ + -56.51822996490591, + 39.21063005130327 + ], + [ + -56.51822996490591, + 40.423795821508065 + ], + [ + -56.51822996490591, + 42.06452431301659 + ], + [ + -56.51822996490591, + 43.27769008322048 + ], + [ + -56.51822996490591, + 46.13158434493289 + ], + [ + -56.51822996490591, + 49.41304132794994 + ], + [ + -56.51822996490591, + 51.053769819458466 + ], + [ + -56.51822996490591, + 52.69449831096699 + ], + [ + -56.51822996490591, + 53.90766408117179 + ], + [ + -56.51822996490591, + 55.548392572679404 + ], + [ + -56.21580755227478, + 56.7615583428842 + ], + [ + -55.91338513964729, + 57.97472411308809 + ], + [ + -55.61096272701616, + 59.18788988329288 + ], + [ + -55.308540314388665, + 60.40105565349677 + ], + [ + -54.7036954891264, + 61.614221423701565 + ], + [ + -53.719953618161526, + 62.928194664782495 + ], + [ + -52.73621174719301, + 64.24216790586343 + ], + [ + -52.13136692193075, + 65.45533367606731 + ], + [ + -51.14762505096587, + 66.76930691714824 + ], + [ + -50.163883179997356, + 68.08328015822917 + ], + [ + -49.18014130902884, + 69.3972533993101 + ], + [ + -48.269397951455176, + 70.30799675688468 + ], + [ + -46.04468135279967, + 72.20248198542777 + ], + [ + -43.819964754144166, + 74.09696721396995 + ], + [ + -42.90922139656686, + 75.00771057154452 + ], + [ + -41.26849290505925, + 75.66469719208544 + ], + [ + -39.95451966397741, + 76.64843906305305 + ], + [ + -38.74135389377625, + 77.25328388831258 + ], + [ + -37.528188123571454, + 77.85812871357211 + ], + [ + -36.31502235336666, + 78.46297353883165 + ], + [ + -35.48075362887175, + 79.01915268849552 + ], + [ + -33.812216179878305, + 80.13151098782328 + ], + [ + -33.30470270580918, + 80.38526772485693 + ], + [ + -32.47043398131427, + 80.9414468745208 + ], + [ + -31.962920507245144, + 81.19520361155537 + ], + [ + -31.455407033176016, + 81.70271708562359 + ], + [ + -31.225983133939735, + 81.93214098485987 + ], + [ + -30.718469659874245, + 82.43965445892809 + ], + [ + -30.489045760637964, + 82.66907835816437 + ], + [ + -30.259621861401683, + 82.89850225740065 + ], + [ + -30.00586512436712, + 83.40601573146887 + ], + [ + -30.00586512436712, + 84.74779793003381 + ], + [ + -30.00586512436712, + 85.9609637002377 + ], + [ + -30.00586512436712, + 86.79523242473351 + ], + [ + -30.00586512436712, + 88.43596091624204 + ], + [ + -30.00586512436712, + 89.64912668644592 + ], + [ + -30.360429332278727, + 91.76608357485475 + ], + [ + -30.666327864593768, + 92.97924934505863 + ], + [ + -31.653545855246193, + 94.61997783656716 + ], + [ + -32.36267427106577, + 96.73693472497507 + ], + [ + -33.02313701129242, + 98.3776632164836 + ], + [ + -34.159828148418455, + 101.02299029707228 + ], + [ + -34.76814909336463, + 102.23267994759135 + ], + [ + -35.977838743881875, + 105.45504289595647 + ], + [ + -36.68696715970509, + 107.57199978436438 + ], + [ + -37.295288104647625, + 108.78516555456918 + ], + [ + -38.50497775516851, + 112.00752850293429 + ], + [ + -39.113298700111045, + 113.22069427313818 + ], + [ + -41.43534664995968, + 118.56001410991212 + ], + [ + -42.982219909961714, + 121.03501132591555 + ], + [ + -44.04243641400899, + 123.15196821432437 + ], + [ + -45.029654404661414, + 124.4659414554053 + ], + [ + -46.4444351166203, + 126.23181025558824 + ], + [ + -47.43165310727272, + 127.54578349666826 + ], + [ + -48.74910246803847, + 128.52952536763678 + ], + [ + -50.06655182880422, + 129.51326723860439 + ], + [ + -50.980771306065435, + 130.42401059617896 + ], + [ + -52.19741319595414, + 131.0288554214385 + ], + [ + -53.035158040136594, + 131.58503457110237 + ], + [ + -54.2517999300253, + 132.1898793963619 + ], + [ + -55.08954477420775, + 132.46796897119384 + ], + [ + -55.92728961838657, + 132.74605854602578 + ], + [ + -56.76503446256902, + 133.02414812085772 + ], + [ + -57.60277930675147, + 133.30223769568966 + ], + [ + -58.44052415093029, + 133.85841684535353 + ], + [ + -59.27826899511274, + 134.13650642018547 + ], + [ + -60.95375868347401, + 134.97077514468128 + ], + [ + -62.62924837183891, + 135.8050438691771 + ], + [ + -63.46699321601773, + 136.36122301884097 + ], + [ + -64.30473806020018, + 136.6393125936729 + ], + [ + -64.81572765395322, + 137.14682606774113 + ], + [ + -65.32671724770626, + 137.4005828047757 + ], + [ + -66.16446209188871, + 137.67867237960763 + ], + [ + -66.67545168564175, + 137.9324291166413 + ], + [ + -66.90835170456558, + 138.16185301587757 + ], + [ + -67.41934129831861, + 138.16185301587757 + ], + [ + -67.6522413172388, + 138.16185301587757 + ], + [ + -67.6522413172388, + 137.94980971506902 + ], + [ + -67.6522413172388, + 137.43882012131508 + ], + [ + -67.6522413172388, + 136.60107527713353 + ], + [ + -67.14472784317331, + 136.0900856833805 + ], + [ + -65.47619039417987, + 135.24886471951322 + ], + [ + -63.83546190267225, + 134.9186333494008 + ], + [ + -61.71850501426525, + 134.9186333494008 + ], + [ + -60.07777652275399, + 134.9186333494008 + ], + [ + -58.8646107525492, + 134.9186333494008 + ], + [ + -56.21928367196233, + 134.9186333494008 + ], + [ + -54.10232678355533, + 135.26972143762578 + ], + [ + -51.985369895144686, + 136.32646182198732 + ], + [ + -48.95766964916402, + 138.29394556392344 + ], + [ + -46.84071276075338, + 139.35068594828408 + ], + [ + -45.07484396057043, + 140.76199054055633 + ], + [ + -43.30897516038749, + 142.17329513282857 + ], + [ + -41.54310636020455, + 143.58459972510082 + ], + [ + -40.229133119126345, + 144.89857296618175 + ], + [ + -38.915159878044506, + 146.21254620726268 + ], + [ + -37.93141800707599, + 147.8532746987712 + ], + [ + -36.947676136107475, + 149.16724793985213 + ], + [ + -35.96393426513896, + 150.48122118093306 + ], + [ + -34.702102819341235, + 153.33511544264547 + ], + [ + -34.37534756891182, + 154.975843934154 + ], + [ + -33.71836094837272, + 156.61657242566253 + ], + [ + -33.39160569794694, + 158.25730091717105 + ], + [ + -33.040517609719245, + 160.37425780557896 + ], + [ + -32.71376235929347, + 162.0149862970875 + ], + [ + -32.31400859547284, + 165.2373492454526 + ], + [ + -32.31400859547284, + 167.35430613386052 + ], + [ + -32.31400859547284, + 169.47126302226843 + ], + [ + -32.31400859547284, + 172.11659010285803 + ], + [ + -32.31400859547284, + 174.7619171834467 + ], + [ + -32.31400859547284, + 176.87887407185463 + ], + [ + -32.31400859547284, + 179.5242011524433 + ], + [ + -32.31400859547284, + 182.169528233032 + ], + [ + -32.31400859547284, + 184.81485531362068 + ], + [ + -32.692905641179095, + 187.46018239421028 + ], + [ + -33.49936540819181, + 190.68254534257449 + ], + [ + -33.8782624539017, + 193.32787242316408 + ], + [ + -34.587390869721276, + 195.444829311572 + ], + [ + -35.39385063673399, + 198.6671922599371 + ], + [ + -36.15164472815377, + 201.3125193405258 + ], + [ + -37.28833586527617, + 203.95784642111448 + ], + [ + -37.61856723538949, + 205.598574912623 + ], + [ + -38.376361326809274, + 208.2439019932117 + ], + [ + -39.13415541822542, + 210.88922907380038 + ], + [ + -39.843283834044996, + 213.0061859622092 + ], + [ + -40.197848041956604, + 215.1231428506171 + ], + [ + -40.85831078218325, + 216.76387134212564 + ], + [ + -40.85831078218325, + 218.88082823053355 + ], + [ + -41.18854215229658, + 221.73472249224596 + ], + [ + -41.49444068461162, + 222.94788826245076 + ], + [ + -41.49444068461162, + 224.5886167539593 + ], + [ + -41.49444068461162, + 226.7055736423672 + ], + [ + -41.49444068461162, + 227.539842366863 + ], + [ + -41.49444068461162, + 228.7530081370669 + ], + [ + -41.49444068461162, + 229.9661739072717 + ], + [ + -41.49444068461162, + 230.8004426317675 + ], + [ + -41.49444068461162, + 231.63471135626332 + ], + [ + -41.49444068461162, + 232.46898008075914 + ], + [ + -41.49444068461162, + 232.97649355482736 + ], + [ + -41.26501678537534, + 232.97649355482736 + ], + [ + -40.75750331130621, + 232.97649355482736 + ], + [ + -40.75750331130621, + 233.5952428588289 + ], + [ + -40.75750331130621, + 234.80840862903278 + ], + [ + -40.75750331130621, + 235.6426773535286 + ], + [ + -40.75750331130621, + 239.40036273344504 + ], + [ + -40.75750331130621, + 241.04109122495356 + ], + [ + -40.75750331130621, + 245.47661994352256 + ], + [ + -40.40641522308215, + 247.5935768319314 + ], + [ + -40.40641522308215, + 249.2343053234399 + ], + [ + -40.079659972652735, + 250.87503381494844 + ], + [ + -39.75290472222696, + 252.51228618677123 + ], + [ + -39.75290472222696, + 253.72545195697512 + ], + [ + -39.75290472222696, + 254.93861772717992 + ], + [ + -39.47481514739411, + 255.77288645167573 + ], + [ + -39.47481514739411, + 256.60715517617155 + ], + [ + -39.17239273476298, + 257.82032094637543 + ], + [ + -38.89430315993377, + 258.65458967087125 + ], + [ + -38.61621358510092, + 259.48885839536706 + ], + [ + -38.31379117246979, + 260.70202416557186 + ], + [ + -38.035701597636944, + 261.53629289006767 + ], + [ + -37.73327918500945, + 262.74945866027156 + ], + [ + -37.177100035343756, + 263.58372738476737 + ], + [ + -36.899010460514546, + 264.4179961092632 + ], + [ + -36.34283131084885, + 265.252264833759 + ], + [ + -35.83531783677972, + 265.7597783078272 + ], + [ + -35.58156109974516, + 266.26729178189544 + ], + [ + -34.56653415161054, + 267.2823187300328 + ], + [ + -34.28844457677769, + 268.1165874545286 + ], + [ + -33.780931102708564, + 268.6241009285968 + ], + [ + -33.273417628643074, + 269.13161440266504 + ], + [ + -32.36267427106577, + 270.0423577602396 + ], + [ + -31.806495121403714, + 270.8766264847354 + ], + [ + -30.97222639690881, + 271.4328056343993 + ], + [ + -30.416047247243114, + 272.2670743588951 + ], + [ + -29.50530388966945, + 273.1778177164697 + ], + [ + -28.949124740003754, + 274.0120864409655 + ], + [ + -28.441611265938263, + 274.5195999150337 + ], + [ + -27.88543211627257, + 275.35386863952954 + ], + [ + -27.37791864220344, + 275.86138211359776 + ], + [ + -26.87040516813795, + 276.368895587666 + ], + [ + -26.36289169406882, + 276.62265232470054 + ], + [ + -25.855378219999693, + 277.13016579876876 + ], + [ + -25.60162148296513, + 277.637679272837 + ], + [ + -25.094108008896, + 278.1451927469052 + ], + [ + -24.58659453483051, + 278.39894948393885 + ], + [ + -23.244812336266477, + 279.184552532839 + ], + [ + -22.73729886219735, + 279.6920660069072 + ], + [ + -21.903030137702444, + 279.97015558173916 + ], + [ + -21.395516663633316, + 280.2239123187737 + ], + [ + -20.888003189564188, + 280.73142579284195 + ], + [ + -20.053734465069283, + 281.0095153676739 + ], + [ + -19.546220991000155, + 281.26327210470845 + ], + [ + -19.038707516931026, + 281.77078557877667 + ], + [ + -18.20443879243612, + 282.0488751536086 + ], + [ + -17.696925318366993, + 282.30263189064226 + ], + [ + -17.189411844297865, + 282.5563886276768 + ], + [ + -16.681898370232375, + 282.8101453647105 + ], + [ + -15.847629645733832, + 283.0882349395424 + ], + [ + -15.340116171668342, + 283.0882349395424 + ], + [ + -14.832602697599214, + 283.341991676577 + ], + [ + -14.325089223530085, + 283.59574841361064 + ], + [ + -13.817575749460957, + 283.8495051506452 + ], + [ + -13.310062275395467, + 283.8495051506452 + ], + [ + -12.475793550896924, + 284.12759472547714 + ], + [ + -11.134011352332891, + 284.93753061217467 + ], + [ + -10.299742627837986, + 285.49370976183855 + ], + [ + -9.792229153768858, + 286.0012232359077 + ], + [ + -8.957960429273953, + 286.55740238557155 + ], + [ + -8.450446955204825, + 286.8111591226052 + ], + [ + -7.942933481135697, + 287.3186725966734 + ], + [ + -7.435420007070206, + 287.82618607074164 + ], + [ + -6.927906533001078, + 288.33369954480986 + ], + [ + -6.42039305893195, + 288.5874562818444 + ], + [ + -5.9128795848628215, + 288.8412130188781 + ], + [ + -5.405366110797331, + 289.3487264929463 + ], + [ + -4.897852636728203, + 289.60248322998086 + ], + [ + -4.668428737491922, + 289.83190712921714 + ], + [ + -4.160915263422794, + 290.33942060328536 + ], + [ + -3.9314913641865132, + 290.56884450252164 + ], + [ + -3.7020674649502325, + 290.7982684017579 + ], + [ + -3.472643565713952, + 291.0276923009942 + ], + [ + -3.0137957672413904, + 291.2571162002305 + ], + [ + -3.0137957672413904, + 291.47263562072567 + ], + [ + -2.8052285861158452, + 291.47263562072567 + ], + [ + -2.8052285861158452, + 291.70205951996195 + ], + [ + -2.8052285861158452, + 291.70205951996195 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "text", + "version": 574, + "versionNonce": 161564076, + "index": "b6V", + "isDeleted": false, + "id": "8lcUMJeoFJhTkjY2e9n3k", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22492.5896340091, + "y": 7855.8078804606075, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 182.06387329101562, + "height": 40, + "seed": 1672486871, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "ProviderUnbondingPeriod\n21 days", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "ProviderUnbondingPeriod\n21 days", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 161, + "versionNonce": 1346386708, + "index": "b6W", + "isDeleted": false, + "id": "dVD2OPBjz4XtZqxwZioVs", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22766.372296550864, + "y": 7721.170812805735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 613.5073155154787, + "height": 2.130861367149919, + "seed": 2053901559, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 613.5073155154787, + -2.130861367149919 + ] + ] + }, + { + "type": "line", + "version": 291, + "versionNonce": 2135142444, + "index": "b6X", + "isDeleted": false, + "id": "oQyRNjHobDMRc8S_ZeOSZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22765.502721513272, + "y": 7818.448691716744, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 613.5073155154787, + "height": 2.130861367149919, + "seed": 1768773143, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 613.5073155154787, + -2.130861367149919 + ] + ] + }, + { + "type": "text", + "version": 118, + "versionNonce": 1278195860, + "index": "b6Y", + "isDeleted": false, + "id": "_48il7CtMwLgS_N8lHgK4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23369.53815600228, + "y": 7763.263146076234, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 198.25587463378906, + "height": 40, + "seed": 933788471, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "DeliveryTimeOfVSCPacket\n7 days", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "DeliveryTimeOfVSCPacket\n7 days", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "freedraw", + "version": 312, + "versionNonce": 439667372, + "index": "b6Z", + "isDeleted": false, + "id": "oArF8gvpkhbyn-7MWOTTJ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23324.651022504717, + "y": 7724.7998817572925, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 26.72093202166434, + "height": 90.14621180145878, + "seed": 427949143, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.20509106143799727, + 0 + ], + [ + 0.7126045355071255, + 0 + ], + [ + 1.2201180095762538, + 0 + ], + [ + 2.0543867340711586, + 0 + ], + [ + 2.8886554585660633, + 0 + ], + [ + 3.722924183060968, + 0 + ], + [ + 4.230437657130096, + 0 + ], + [ + 5.064706381625001, + 0.2780895748319381 + ], + [ + 5.572219855694129, + 0.7856030489001569 + ], + [ + 6.914002054258162, + 1.8492956726331613 + ], + [ + 7.4701812039238575, + 2.683564397128066 + ], + [ + 8.380924561497523, + 3.59430775470355 + ], + [ + 8.634681298532087, + 4.101821228771769 + ], + [ + 8.912770873364934, + 4.936089953267583 + ], + [ + 9.166527610399498, + 5.443603427335802 + ], + [ + 9.166527610399498, + 6.277872151831616 + ], + [ + 9.444617185228708, + 7.11214087632743 + ], + [ + 9.444617185228708, + 7.9464096008232445 + ], + [ + 9.722706760061556, + 8.780678325319059 + ], + [ + 9.722706760061556, + 9.614947049814873 + ], + [ + 9.722706760061556, + 10.82811282001876 + ], + [ + 9.722706760061556, + 11.335626294086978 + ], + [ + 9.722706760061556, + 12.548792064291774 + ], + [ + 9.722706760061556, + 13.383060788787589 + ], + [ + 9.722706760061556, + 14.217329513283403 + ], + [ + 9.722706760061556, + 15.051598237779217 + ], + [ + 9.722706760061556, + 15.559111711847436 + ], + [ + 9.722706760061556, + 17.227649160839064 + ], + [ + 9.441141065544798, + 18.06191788533488 + ], + [ + 8.881485796195193, + 18.896186609830693 + ], + [ + 8.599920101678435, + 19.730455334326507 + ], + [ + 8.318354407161678, + 20.56472405882232 + ], + [ + 7.758699137812073, + 21.398992783318135 + ], + [ + 7.452800605497032, + 22.612158553522022 + ], + [ + 7.171234910980274, + 23.446427278017836 + ], + [ + 6.611579641630669, + 24.28069600251365 + ], + [ + 6.051924372281064, + 25.114964727009465 + ], + [ + 5.770358677764307, + 25.94923345150528 + ], + [ + 5.488792983243911, + 26.783502176001093 + ], + [ + 4.977803389490873, + 27.291015650069312 + ], + [ + 4.696237694974116, + 28.125284374565126 + ], + [ + 4.4390048382556415, + 28.632797848633345 + ], + [ + 4.1817719815335295, + 29.140311322702473 + ], + [ + 3.948871962613339, + 29.369735221938754 + ], + [ + 3.6916391058948648, + 29.877248696006973 + ], + [ + 3.6916391058948648, + 30.106672595243253 + ], + [ + 3.6916391058948648, + 31.12169954337969 + ], + [ + 3.6916391058948648, + 31.35112344261597 + ], + [ + 3.6916391058948648, + 31.85863691668419 + ], + [ + 3.6916391058948648, + 32.08806081592047 + ], + [ + 3.6916391058948648, + 32.59557428998869 + ], + [ + 3.6916391058948648, + 32.82499818922497 + ], + [ + 3.6916391058948648, + 33.05442208846125 + ], + [ + 4.199152579963993, + 33.56193556252947 + ], + [ + 5.033421304458898, + 33.84002513736141 + ], + [ + 6.246587074663694, + 34.14244754999163 + ], + [ + 7.0808557991585985, + 34.42053712482357 + ], + [ + 8.294021569363395, + 34.72295953745288 + ], + [ + 9.50718733956819, + 35.0253819500831 + ], + [ + 10.720353109772986, + 35.32780436271241 + ], + [ + 11.933518879974145, + 35.630226775342635 + ], + [ + 13.14668465017894, + 36.23507160060217 + ], + [ + 13.980953374677483, + 36.51316117543411 + ], + [ + 15.194119144878641, + 36.81558358806342 + ], + [ + 16.028387869377184, + 37.09367316289536 + ], + [ + 17.696925318366993, + 37.92794188739117 + ], + [ + 18.531194042861898, + 38.20603146222311 + ], + [ + 19.038707516931026, + 38.45978819925767 + ], + [ + 19.87297624142593, + 38.73787777408961 + ], + [ + 20.38048971549506, + 38.73787777408961 + ], + [ + 21.214758439989964, + 38.73787777408961 + ], + [ + 21.444182339226245, + 38.73787777408961 + ], + [ + 21.951695813295373, + 38.73787777408961 + ], + [ + 22.181119712531654, + 38.73787777408961 + ], + [ + 22.410543611767935, + 38.73787777408961 + ], + [ + 22.639967511004215, + 38.73787777408961 + ], + [ + 22.869391410240496, + 38.73787777408961 + ], + [ + 23.098815309476777, + 38.73787777408961 + ], + [ + 23.098815309476777, + 38.949921074899066 + ], + [ + 23.098815309476777, + 39.17934497413535 + ], + [ + 23.098815309476777, + 39.40876887337163 + ], + [ + 23.098815309476777, + 39.63819277260791 + ], + [ + 23.098815309476777, + 40.09704057108047 + ], + [ + 23.098815309476777, + 40.60455404514869 + ], + [ + 23.098815309476777, + 41.11206751921691 + ], + [ + 22.58782571572374, + 41.619580993285126 + ], + [ + 21.673606238462526, + 42.5303243508597 + ], + [ + 20.83586139428371, + 43.08650350052358 + ], + [ + 20.276206124934106, + 43.92077222501939 + ], + [ + 19.438461280751653, + 44.47695137468327 + ], + [ + 18.878806011402048, + 45.31122009917908 + ], + [ + 18.36781641764901, + 45.8187335732473 + ], + [ + 17.85682682389597, + 46.32624704731552 + ], + [ + 17.297171554546367, + 47.16051577181133 + ], + [ + 17.039938697827893, + 47.66802924587955 + ], + [ + 16.528949104074854, + 48.17554271994868 + ], + [ + 16.271716247352742, + 48.6830561940169 + ], + [ + 16.01448339063427, + 49.19056966808512 + ], + [ + 15.73291769611751, + 50.02483839258093 + ], + [ + 15.475684839399037, + 50.53235186664915 + ], + [ + 15.475684839399037, + 51.03986534071737 + ], + [ + 14.96121912595845, + 52.05489228885381 + ], + [ + 14.96121912595845, + 52.88916101334962 + ], + [ + 14.703986269239977, + 53.39667448741784 + ], + [ + 14.446753412517864, + 53.90418796148606 + ], + [ + 14.446753412517864, + 54.41170143555428 + ], + [ + 14.18952055579939, + 54.9192149096225 + ], + [ + 13.932287699080916, + 55.426728383690715 + ], + [ + 13.932287699080916, + 55.934241857758934 + ], + [ + 13.932287699080916, + 56.163665756996124 + ], + [ + 13.932287699080916, + 56.67117923106434 + ], + [ + 13.932287699080916, + 56.900603130300624 + ], + [ + 13.932287699080916, + 57.130027029536905 + ], + [ + 13.932287699080916, + 57.359450928773185 + ], + [ + 13.932287699080916, + 57.588874828009466 + ], + [ + 13.932287699080916, + 57.81829872724575 + ], + [ + 13.932287699080916, + 58.325812201313965 + ], + [ + 13.932287699080916, + 58.555236100550246 + ], + [ + 13.932287699080916, + 58.78465999978653 + ], + [ + 13.932287699080916, + 59.292173473854746 + ], + [ + 14.18604443611548, + 60.029110847159245 + ], + [ + 14.69355791018097, + 60.28286758419381 + ], + [ + 15.201071384250099, + 60.79038105826203 + ], + [ + 16.035340108745004, + 61.068470633093966 + ], + [ + 16.869608833243547, + 61.62464978275784 + ], + [ + 17.70387755773845, + 61.90273935758978 + ], + [ + 18.21139103180758, + 62.156496094624345 + ], + [ + 19.045659756302484, + 62.43458566945628 + ], + [ + 19.87992848079739, + 62.71267524428822 + ], + [ + 20.387441954866517, + 63.22018871835644 + ], + [ + 20.894955428935646, + 63.473945455390094 + ], + [ + 21.402468903004774, + 63.72770219242466 + ], + [ + 21.909982377070264, + 64.23521566649288 + ], + [ + 22.417495851139392, + 64.7427291405611 + ], + [ + 22.92500932520852, + 65.25024261462931 + ], + [ + 23.43252279927765, + 65.75775608869753 + ], + [ + 23.71061237410686, + 66.59202481319335 + ], + [ + 24.218125848175987, + 67.09953828726157 + ], + [ + 24.496215423008834, + 67.93380701175738 + ], + [ + 25.028061734876246, + 69.27558921032141 + ], + [ + 25.306151309705456, + 70.10985793481723 + ], + [ + 25.584240884538303, + 70.94412665931304 + ], + [ + 25.86233045937115, + 71.77839538380886 + ], + [ + 26.140420034204, + 72.61266410830467 + ], + [ + 26.418509609033208, + 73.44693283280048 + ], + [ + 26.418509609033208, + 74.2812015572963 + ], + [ + 26.72093202166434, + 75.4943673275011 + ], + [ + 26.72093202166434, + 76.32863605199691 + ], + [ + 26.72093202166434, + 77.16290477649272 + ], + [ + 26.72093202166434, + 77.99717350098854 + ], + [ + 26.72093202166434, + 78.83144222548435 + ], + [ + 26.72093202166434, + 79.66571094998017 + ], + [ + 26.72093202166434, + 80.49997967447598 + ], + [ + 26.72093202166434, + 81.3342483989718 + ], + [ + 26.72093202166434, + 82.16851712346761 + ], + [ + 26.463699164945865, + 83.51029932203164 + ], + [ + 25.90404389559626, + 84.34456804652746 + ], + [ + 24.55530945766077, + 85.40826067025955 + ], + [ + 23.717564613478316, + 85.96443981992343 + ], + [ + 22.879819769299502, + 86.5206189695873 + ], + [ + 22.04207492511705, + 87.07679811925118 + ], + [ + 21.53108533136401, + 87.33055485628483 + ], + [ + 20.69334048718156, + 87.88673400594871 + ], + [ + 20.18235089342852, + 88.14049074298327 + ], + [ + 19.344606049246067, + 88.69666989264715 + ], + [ + 18.83361645549303, + 88.9504266296808 + ], + [ + 18.32262686173999, + 89.20418336671537 + ], + [ + 17.811637267986953, + 89.45794010374993 + ], + [ + 17.578737249063124, + 89.68736400298621 + ], + [ + 17.345837230142934, + 89.9167879022225 + ], + [ + 17.112937211219105, + 90.14621180145878 + ], + [ + 16.880037192298914, + 90.14621180145878 + ], + [ + 16.647137173378724, + 90.14621180145878 + ], + [ + 16.136147579622047, + 90.14621180145878 + ], + [ + 15.903247560701857, + 90.14621180145878 + ], + [ + 15.392257966948819, + 90.14621180145878 + ], + [ + 14.648368354271952, + 90.14621180145878 + ], + [ + 14.137378760518914, + 90.14621180145878 + ], + [ + 13.904478741598723, + 90.14621180145878 + ], + [ + 13.904478741598723, + 90.14621180145878 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "text", + "version": 226, + "versionNonce": 1750304276, + "index": "b6a", + "isDeleted": false, + "id": "oJr8sEGcJs01dhDcoCTAE", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23374.433100270944, + "y": 7979.687154024078, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 190.23988342285156, + "height": 20, + "seed": 1120819575, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "EvidenceSubmissionPeriod", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "EvidenceSubmissionPeriod", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "freedraw", + "version": 410, + "versionNonce": 488543532, + "index": "b6b", + "isDeleted": false, + "id": "Drvwx3J7OOuJ7KrSJ8Uf5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23327.836886196368, + "y": 7944.561906328069, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 23.140528745705517, + "height": 90.14621180145878, + "seed": 2027033239, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0.17761040665967115, + 0 + ], + [ + 0.6171209044973899, + 0 + ], + [ + 1.0566314023351087, + 0 + ], + [ + 1.7791144124773186, + 0 + ], + [ + 2.5015974226195286, + 0 + ], + [ + 3.2240804327617383, + 0 + ], + [ + 3.663590930599457, + 0 + ], + [ + 4.386073940741667, + 0.2780895748319381 + ], + [ + 4.825584438579385, + 0.7856030489001569 + ], + [ + 5.987577946559314, + 1.8492956726331613 + ], + [ + 6.469233286656221, + 2.683564397128066 + ], + [ + 7.257943906061519, + 3.59430775470355 + ], + [ + 7.477699154980379, + 4.101821228771769 + ], + [ + 7.718526825028833, + 4.936089953267583 + ], + [ + 7.938282073947692, + 5.443603427335802 + ], + [ + 7.938282073947692, + 6.277872151831616 + ], + [ + 8.179109743992996, + 7.11214087632743 + ], + [ + 8.179109743992996, + 7.9464096008232445 + ], + [ + 8.41993741404145, + 8.780678325319059 + ], + [ + 8.41993741404145, + 9.614947049814873 + ], + [ + 8.41993741404145, + 10.82811282001876 + ], + [ + 8.41993741404145, + 11.335626294086978 + ], + [ + 8.41993741404145, + 12.548792064291774 + ], + [ + 8.41993741404145, + 13.383060788787589 + ], + [ + 8.41993741404145, + 14.217329513283403 + ], + [ + 8.41993741404145, + 15.051598237779217 + ], + [ + 8.41993741404145, + 15.559111711847436 + ], + [ + 8.41993741404145, + 17.227649160839064 + ], + [ + 8.176099398118689, + 18.06191788533488 + ], + [ + 7.691433712147476, + 18.896186609830693 + ], + [ + 7.447595696224716, + 19.730455334326507 + ], + [ + 7.2037576803019565, + 20.56472405882232 + ], + [ + 6.719091994330744, + 21.398992783318135 + ], + [ + 6.45418155727839, + 22.612158553522022 + ], + [ + 6.2103435413556305, + 23.446427278017836 + ], + [ + 5.725677855384418, + 24.28069600251365 + ], + [ + 5.241012169413204, + 25.114964727009465 + ], + [ + 4.997174153490445, + 25.94923345150528 + ], + [ + 4.753336137564535, + 26.783502176001093 + ], + [ + 4.31081529385251, + 27.291015650069312 + ], + [ + 4.06697727792975, + 28.125284374565126 + ], + [ + 3.8442116831365847, + 28.632797848633345 + ], + [ + 3.621446088340269, + 29.140311322702473 + ], + [ + 3.4197529146766974, + 29.369735221938754 + ], + [ + 3.196987319883532, + 29.877248696006973 + ], + [ + 3.196987319883532, + 30.106672595243253 + ], + [ + 3.196987319883532, + 31.12169954337969 + ], + [ + 3.196987319883532, + 31.35112344261597 + ], + [ + 3.196987319883532, + 31.85863691668419 + ], + [ + 3.196987319883532, + 32.08806081592047 + ], + [ + 3.196987319883532, + 32.59557428998869 + ], + [ + 3.196987319883532, + 32.82499818922497 + ], + [ + 3.196987319883532, + 33.05442208846125 + ], + [ + 3.6364978177212506, + 33.56193556252947 + ], + [ + 4.35898082786346, + 33.84002513736141 + ], + [ + 5.409591538446807, + 34.14244754999163 + ], + [ + 6.132074548589016, + 34.42053712482357 + ], + [ + 7.182685259172362, + 34.72295953745288 + ], + [ + 8.233295969755709, + 35.0253819500831 + ], + [ + 9.283906680339054, + 35.32780436271241 + ], + [ + 10.334517390919249, + 35.630226775342635 + ], + [ + 11.385128101502596, + 36.23507160060217 + ], + [ + 12.107611111647955, + 36.51316117543411 + ], + [ + 13.158221822228152, + 36.81558358806342 + ], + [ + 13.880704832373512, + 37.09367316289536 + ], + [ + 15.325670852657932, + 37.92794188739117 + ], + [ + 16.04815386280014, + 38.20603146222311 + ], + [ + 16.48766436063786, + 38.45978819925767 + ], + [ + 17.21014737078007, + 38.73787777408961 + ], + [ + 17.64965786861779, + 38.73787777408961 + ], + [ + 18.37214087876, + 38.73787777408961 + ], + [ + 18.570823706549263, + 38.73787777408961 + ], + [ + 19.010334204386982, + 38.73787777408961 + ], + [ + 19.20901703217625, + 38.73787777408961 + ], + [ + 19.407699859965515, + 38.73787777408961 + ], + [ + 19.606382687754778, + 38.73787777408961 + ], + [ + 19.805065515544044, + 38.73787777408961 + ], + [ + 20.00374834333331, + 38.73787777408961 + ], + [ + 20.00374834333331, + 38.949921074899066 + ], + [ + 20.00374834333331, + 39.17934497413535 + ], + [ + 20.00374834333331, + 39.40876887337163 + ], + [ + 20.00374834333331, + 39.63819277260791 + ], + [ + 20.00374834333331, + 40.09704057108047 + ], + [ + 20.00374834333331, + 40.60455404514869 + ], + [ + 20.00374834333331, + 41.11206751921691 + ], + [ + 19.561227499621285, + 41.619580993285126 + ], + [ + 18.76950653433853, + 42.5303243508597 + ], + [ + 18.044013178322015, + 43.08650350052358 + ], + [ + 17.5593474923508, + 43.92077222501939 + ], + [ + 16.833854136331134, + 44.47695137468327 + ], + [ + 16.34918845035992, + 45.31122009917908 + ], + [ + 15.906667606647895, + 45.8187335732473 + ], + [ + 15.46414676293587, + 46.32624704731552 + ], + [ + 14.979481076964658, + 47.16051577181133 + ], + [ + 14.756715482171492, + 47.66802924587955 + ], + [ + 14.314194638459467, + 48.17554271994868 + ], + [ + 14.091429043663151, + 48.6830561940169 + ], + [ + 13.868663448869986, + 49.19056966808512 + ], + [ + 13.624825432947228, + 50.02483839258093 + ], + [ + 13.402059838154061, + 50.53235186664915 + ], + [ + 13.402059838154061, + 51.03986534071737 + ], + [ + 12.95652864856458, + 52.05489228885381 + ], + [ + 12.95652864856458, + 52.88916101334962 + ], + [ + 12.733763053771415, + 53.39667448741784 + ], + [ + 12.5109974589751, + 53.90418796148606 + ], + [ + 12.5109974589751, + 54.41170143555428 + ], + [ + 12.288231864181933, + 54.9192149096225 + ], + [ + 12.065466269388768, + 55.426728383690715 + ], + [ + 12.065466269388768, + 55.934241857758934 + ], + [ + 12.065466269388768, + 56.163665756996124 + ], + [ + 12.065466269388768, + 56.67117923106434 + ], + [ + 12.065466269388768, + 56.900603130300624 + ], + [ + 12.065466269388768, + 57.130027029536905 + ], + [ + 12.065466269388768, + 57.359450928773185 + ], + [ + 12.065466269388768, + 57.588874828009466 + ], + [ + 12.065466269388768, + 57.81829872724575 + ], + [ + 12.065466269388768, + 58.325812201313965 + ], + [ + 12.065466269388768, + 58.555236100550246 + ], + [ + 12.065466269388768, + 58.78465999978653 + ], + [ + 12.065466269388768, + 59.292173473854746 + ], + [ + 12.285221518307628, + 60.029110847159245 + ], + [ + 12.724732016142195, + 60.28286758419381 + ], + [ + 13.164242513979914, + 60.79038105826203 + ], + [ + 13.886725524122124, + 61.068470633093966 + ], + [ + 14.609208534267484, + 61.62464978275784 + ], + [ + 15.331691544409694, + 61.90273935758978 + ], + [ + 15.771202042247413, + 62.156496094624345 + ], + [ + 16.493685052389623, + 62.43458566945628 + ], + [ + 17.216168062531832, + 62.71267524428822 + ], + [ + 17.65567856036955, + 63.22018871835644 + ], + [ + 18.09518905820727, + 63.473945455390094 + ], + [ + 18.534699556044988, + 63.72770219242466 + ], + [ + 18.974210053879556, + 64.23521566649288 + ], + [ + 19.413720551717276, + 64.7427291405611 + ], + [ + 19.853231049554996, + 65.25024261462931 + ], + [ + 20.292741547392712, + 65.75775608869753 + ], + [ + 20.533569217438018, + 66.59202481319335 + ], + [ + 20.973079715275734, + 67.09953828726157 + ], + [ + 21.213907385324188, + 67.93380701175738 + ], + [ + 21.674490304291503, + 69.27558921032141 + ], + [ + 21.915317974336805, + 70.10985793481723 + ], + [ + 22.15614564438526, + 70.94412665931304 + ], + [ + 22.396973314433712, + 71.77839538380886 + ], + [ + 22.637800984482165, + 72.61266410830467 + ], + [ + 22.878628654527468, + 73.44693283280048 + ], + [ + 22.878628654527468, + 74.2812015572963 + ], + [ + 23.140528745705517, + 75.4943673275011 + ], + [ + 23.140528745705517, + 76.32863605199691 + ], + [ + 23.140528745705517, + 77.16290477649272 + ], + [ + 23.140528745705517, + 77.99717350098854 + ], + [ + 23.140528745705517, + 78.83144222548435 + ], + [ + 23.140528745705517, + 79.66571094998017 + ], + [ + 23.140528745705517, + 80.49997967447598 + ], + [ + 23.140528745705517, + 81.3342483989718 + ], + [ + 23.140528745705517, + 82.16851712346761 + ], + [ + 22.91776315091235, + 83.51029932203164 + ], + [ + 22.433097464941138, + 84.34456804652746 + ], + [ + 21.265083265209444, + 85.40826067025955 + ], + [ + 20.53958990918978, + 85.96443981992343 + ], + [ + 19.814096553173265, + 86.5206189695873 + ], + [ + 19.088603197153596, + 87.07679811925118 + ], + [ + 18.64608235344157, + 87.33055485628483 + ], + [ + 17.920588997421905, + 87.88673400594871 + ], + [ + 17.47806815370988, + 88.14049074298327 + ], + [ + 16.752574797690215, + 88.69666989264715 + ], + [ + 16.31005395397819, + 88.9504266296808 + ], + [ + 15.867533110266164, + 89.20418336671537 + ], + [ + 15.42501226655414, + 89.45794010374993 + ], + [ + 15.223319092887417, + 89.68736400298621 + ], + [ + 15.021625919223846, + 89.9167879022225 + ], + [ + 14.819932745557125, + 90.14621180145878 + ], + [ + 14.618239571893554, + 90.14621180145878 + ], + [ + 14.416546398229983, + 90.14621180145878 + ], + [ + 13.974025554514807, + 90.14621180145878 + ], + [ + 13.772332380851235, + 90.14621180145878 + ], + [ + 13.32981153713921, + 90.14621180145878 + ], + [ + 12.685597519760464, + 90.14621180145878 + ], + [ + 12.243076676048439, + 90.14621180145878 + ], + [ + 12.041383502384868, + 90.14621180145878 + ], + [ + 12.041383502384868, + 90.14621180145878 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "line", + "version": 572, + "versionNonce": 966894484, + "index": "b6c", + "isDeleted": false, + "id": "ffiHPQ45CHbX9w28qzLsC", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 22758.549775993648, + "y": 7941.8937068798505, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 613.5073155154787, + "height": 2.130861367149919, + "seed": 1682024375, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 613.5073155154787, + -2.130861367149919 + ] + ] + }, + { + "type": "freedraw", + "version": 389, + "versionNonce": 1701515180, + "index": "b6d", + "isDeleted": false, + "id": "4S-SYb4jpmbgjZ4p-y6Tc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23333.369130675674, + "y": 7831.982556136888, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 26.581887234249734, + "height": 104.95795778094453, + "seed": 591501527, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -0.22247165986846085, + -0.22247165986573236 + ], + [ + 0.1946627023826295, + -0.22247165986573236 + ], + [ + 1.0289314268775342, + -0.22247165986573236 + ], + [ + 1.863200151372439, + -0.22247165986573236 + ], + [ + 3.503928642880055, + -0.22247165986573236 + ], + [ + 4.338197367378598, + -0.22247165986573236 + ], + [ + 6.455154255785601, + -0.22247165986573236 + ], + [ + 7.289422980280506, + -0.22247165986573236 + ], + [ + 9.93475006087101, + -0.22247165986573236 + ], + [ + 11.575478552378627, + -0.22247165986573236 + ], + [ + 12.788644322583423, + 0.07995075276448915 + ], + [ + 14.429372814091039, + 0.7369373733044995 + ], + [ + 16.577614779667783, + 2.276858393936891 + ], + [ + 17.411883504162688, + 2.554947968768829 + ], + [ + 17.665640241197252, + 3.062461442837048 + ], + [ + 18.17315371526638, + 3.5699749169052666 + ], + [ + 18.729332864928438, + 4.404243641401081 + ], + [ + 18.729332864928438, + 4.6336675406373615 + ], + [ + 18.983089601963, + 5.14118101470558 + ], + [ + 18.983089601963, + 5.648694488773799 + ], + [ + 18.983089601963, + 6.156207962842018 + ], + [ + 18.983089601963, + 6.663721436910237 + ], + [ + 18.983089601963, + 7.497990161406051 + ], + [ + 18.983089601963, + 8.711155931610847 + ], + [ + 18.701523907446244, + 9.545424656106661 + ], + [ + 17.78730443018503, + 10.456168013681236 + ], + [ + 17.178983485242497, + 11.669333783885122 + ], + [ + 16.264764007981285, + 12.580077141459697 + ], + [ + 15.35054453072371, + 13.490820499034271 + ], + [ + 14.436325053462497, + 14.401563856608846 + ], + [ + 13.449107062810072, + 15.715537097689776 + ], + [ + 11.620668108287646, + 17.537023812838925 + ], + [ + 10.70644863103007, + 18.4477671704135 + ], + [ + 9.792229153768858, + 19.358510527988074 + ], + [ + 9.232573884419253, + 20.192779252483888 + ], + [ + 8.31835440715804, + 21.103522610058462 + ], + [ + 7.404134929900465, + 22.014265967633037 + ], + [ + 6.84447966055086, + 22.84853469212885 + ], + [ + 6.333490066797822, + 23.35604816619798 + ], + [ + 5.822500473041146, + 23.863561640266198 + ], + [ + 5.311510879288107, + 24.371075114334417 + ], + [ + 5.078610860367917, + 24.600499013570698 + ], + [ + 4.821378003649443, + 25.108012487638916 + ], + [ + 4.3103884098927665, + 25.36176922467257 + ], + [ + 4.053155553174292, + 25.86928269874079 + ], + [ + 3.7959226964558184, + 26.376796172809918 + ], + [ + 3.5630226775319898, + 26.6062200720462 + ], + [ + 3.5630226775319898, + 27.113733546114418 + ], + [ + 3.3057898208135157, + 27.621247020182636 + ], + [ + 3.0485569640950416, + 28.128760494250855 + ], + [ + 2.7913241073729296, + 29.143787442387293 + ], + [ + 2.7913241073729296, + 29.65130091645551 + ], + [ + 2.7913241073729296, + 30.15881439052373 + ], + [ + 2.7913241073729296, + 30.66632786459195 + ], + [ + 2.7913241073729296, + 31.173841338660168 + ], + [ + 2.7913241073729296, + 31.681354812728387 + ], + [ + 2.7913241073729296, + 32.188868286796605 + ], + [ + 2.7913241073729296, + 32.696381760864824 + ], + [ + 2.7913241073729296, + 33.20389523493395 + ], + [ + 3.7020674649502325, + 34.11463859250853 + ], + [ + 4.209580939015723, + 34.622152066576746 + ], + [ + 4.717094413084851, + 34.8759088036104 + ], + [ + 5.551363137583394, + 35.43208795327428 + ], + [ + 6.058876611648884, + 35.939601427342495 + ], + [ + 6.893145336147427, + 36.21769100217443 + ], + [ + 7.727414060642332, + 36.77387015183831 + ], + [ + 8.561682785137236, + 37.05195972667025 + ], + [ + 9.395951509632141, + 37.608138876334124 + ], + [ + 10.230220234127046, + 37.88622845116606 + ], + [ + 12.277654728830385, + 38.46674043862822 + ], + [ + 13.490820499031543, + 39.071585263887755 + ], + [ + 14.325089223530085, + 39.34967483871969 + ], + [ + 15.15935794802499, + 39.62776441355163 + ], + [ + 15.993626672519895, + 39.90585398838357 + ], + [ + 16.501140146589023, + 40.159610725417224 + ], + [ + 17.00865362065815, + 40.41336746245179 + ], + [ + 17.51616709472728, + 40.41336746245179 + ], + [ + 18.02368056879277, + 40.66712419948544 + ], + [ + 18.531194042861898, + 40.66712419948544 + ], + [ + 19.038707516931026, + 40.92088093652001 + ], + [ + 19.546220991000155, + 40.92088093652001 + ], + [ + 20.053734465065645, + 40.92088093652001 + ], + [ + 20.561247939134773, + 40.92088093652001 + ], + [ + 21.0687614132039, + 40.92088093652001 + ], + [ + 21.298185312440182, + 41.15030483575629 + ], + [ + 21.80569878650931, + 41.15030483575629 + ], + [ + 22.31321226057844, + 41.15030483575629 + ], + [ + 23.05014963388021, + 41.15030483575629 + ], + [ + 23.27957353311649, + 41.15030483575629 + ], + [ + 23.78708700718562, + 41.15030483575629 + ], + [ + 24.0165109064219, + 41.15030483575629 + ], + [ + 24.524024380491028, + 41.15030483575629 + ], + [ + 24.75344827972731, + 41.15030483575629 + ], + [ + 24.98287217896359, + 41.15030483575629 + ], + [ + 25.21229607819987, + 41.15030483575629 + ], + [ + 25.44171997743615, + 41.15030483575629 + ], + [ + 25.67114387667243, + 41.15030483575629 + ], + [ + 25.900567775908712, + 41.15030483575629 + ], + [ + 26.129991675144993, + 41.15030483575629 + ], + [ + 26.359415574381273, + 41.37972873499257 + ], + [ + 26.359415574381273, + 41.59177203580202 + ], + [ + 26.359415574381273, + 41.8072914562963 + ], + [ + 26.359415574381273, + 42.02281087679148 + ], + [ + 26.359415574381273, + 42.25223477602776 + ], + [ + 26.359415574381273, + 42.48165867526404 + ], + [ + 26.359415574381273, + 42.711082574500324 + ], + [ + 26.359415574381273, + 43.21859604856854 + ], + [ + 26.359415574381273, + 43.44801994780482 + ], + [ + 26.1021827176628, + 43.95553342187304 + ], + [ + 25.844949860940687, + 44.46304689594217 + ], + [ + 25.33396026718765, + 44.97056037001039 + ], + [ + 25.076727410469175, + 45.47807384407861 + ], + [ + 24.8194945537507, + 45.98558731814683 + ], + [ + 24.308504959994025, + 46.493100792215046 + ], + [ + 23.797515366240987, + 47.000614266283264 + ], + [ + 23.540282509522513, + 47.50812774035148 + ], + [ + 23.029292915769474, + 48.0156412144197 + ], + [ + 22.518303322016436, + 48.52315468848792 + ], + [ + 22.261070465294324, + 49.03066816255614 + ], + [ + 21.750080871541286, + 49.53818163662436 + ], + [ + 21.517180852621095, + 49.76760553586064 + ], + [ + 20.49520166511138, + 50.78263248399708 + ], + [ + 20.26230164619119, + 51.01205638323427 + ], + [ + 19.751312052438152, + 51.26581312026792 + ], + [ + 19.49407919571604, + 51.77332659433614 + ], + [ + 18.983089601963, + 52.027083331370704 + ], + [ + 18.472100008209964, + 52.53459680543892 + ], + [ + 17.961110414456925, + 52.78835354247258 + ], + [ + 17.70387755773845, + 53.2958670165408 + ], + [ + 17.192887963985413, + 53.54962375357536 + ], + [ + 16.681898370228737, + 54.05713722764358 + ], + [ + 16.1709087764757, + 54.310893964677234 + ], + [ + 15.913675919757225, + 54.81840743874636 + ], + [ + 15.402686326004186, + 55.07216417578002 + ], + [ + 15.169786307080358, + 55.3015880750163 + ], + [ + 14.65879671332732, + 55.55534481205086 + ], + [ + 14.147807119574281, + 56.06285828611908 + ], + [ + 13.914907100650453, + 56.29228218535536 + ], + [ + 13.657674243931979, + 56.79979565942358 + ], + [ + 13.14668465017894, + 57.3073091334918 + ], + [ + 12.889451793460466, + 57.81482260756002 + ], + [ + 12.121229342985316, + 58.5760928186628 + ], + [ + 11.839663648468559, + 59.410361543158615 + ], + [ + 11.606763629548368, + 59.639785442394896 + ], + [ + 11.095774035791692, + 60.147298916463114 + ], + [ + 10.838541179073218, + 60.65481239053133 + ], + [ + 10.581308322354744, + 61.16232586459955 + ], + [ + 10.32407546563627, + 61.66983933866777 + ], + [ + 10.066842608914158, + 62.17735281273599 + ], + [ + 9.809609752195684, + 62.68486628680421 + ], + [ + 9.298620158442645, + 63.19237976087243 + ], + [ + 9.065720139518817, + 63.42180366010871 + ], + [ + 8.808487282800343, + 63.929317134177836 + ], + [ + 8.575587263880152, + 64.15874103341412 + ], + [ + 8.575587263880152, + 64.3881649326504 + ], + [ + 8.342687244956323, + 64.61758883188668 + ], + [ + 8.342687244956323, + 64.84701273112296 + ], + [ + 8.109787226036133, + 65.07643663035924 + ], + [ + 7.876887207112304, + 65.30586052959552 + ], + [ + 7.876887207112304, + 65.5352844288318 + ], + [ + 7.6439871881921135, + 65.76470832806808 + ], + [ + 7.424991648011201, + 65.98022774856327 + ], + [ + 7.424991648011201, + 66.20965164779955 + ], + [ + 7.424991648011201, + 66.42517106829382 + ], + [ + 7.19209162909101, + 66.42517106829382 + ], + [ + 7.19209162909101, + 66.63373824941846 + ], + [ + 7.19209162909101, + 66.845781550227 + ], + [ + 7.19209162909101, + 67.07520544946328 + ], + [ + 7.19209162909101, + 67.30462934870047 + ], + [ + 7.19209162909101, + 67.52014876919475 + ], + [ + 7.19209162909101, + 67.97899656766731 + ], + [ + 7.19209162909101, + 68.43784436613987 + ], + [ + 7.19209162909101, + 68.66726826537615 + ], + [ + 6.959191610167181, + 68.89669216461334 + ], + [ + 6.959191610167181, + 69.12611606384962 + ], + [ + 6.959191610167181, + 69.3555399630859 + ], + [ + 6.959191610167181, + 69.58496386232218 + ], + [ + 6.959191610167181, + 69.80048328281646 + ], + [ + 6.726291591246991, + 70.02990718205274 + ], + [ + 6.726291591246991, + 70.25933108128902 + ], + [ + 6.493391572323162, + 70.48875498052621 + ], + [ + 6.493391572323162, + 70.71817887976249 + ], + [ + 6.493391572323162, + 70.93369830025676 + ], + [ + 6.493391572323162, + 71.16312219949305 + ], + [ + 6.277872151829797, + 71.3751655003025 + ], + [ + 6.277872151829797, + 71.58025656174141 + ], + [ + 6.277872151829797, + 71.79577598223568 + ], + [ + 6.277872151829797, + 72.02519988147196 + ], + [ + 6.277872151829797, + 72.24071930196715 + ], + [ + 6.044972132909606, + 72.47014320120343 + ], + [ + 6.044972132909606, + 72.69956710043971 + ], + [ + 5.812072113985778, + 72.92899099967599 + ], + [ + 5.812072113985778, + 73.15841489891227 + ], + [ + 5.579172095065587, + 73.38783879814855 + ], + [ + 5.579172095065587, + 73.60335821864373 + ], + [ + 5.579172095065587, + 73.81192539976746 + ], + [ + 5.579172095065587, + 74.02396870057692 + ], + [ + 5.346272076141759, + 74.02396870057692 + ], + [ + 5.346272076141759, + 74.2533925998132 + ], + [ + 5.346272076141759, + 74.48281649904948 + ], + [ + 5.346272076141759, + 74.71224039828576 + ], + [ + 5.346272076141759, + 74.94166429752204 + ], + [ + 5.346272076141759, + 75.15718371801722 + ], + [ + 5.127276535964484, + 75.3727031385115 + ], + [ + 5.127276535964484, + 75.58822255900668 + ], + [ + 5.127276535964484, + 75.79678974013041 + ], + [ + 5.127276535964484, + 76.00535692125413 + ], + [ + 5.127276535964484, + 76.23478082049041 + ], + [ + 5.127276535964484, + 76.4642047197267 + ], + [ + 5.127276535964484, + 76.69362861896298 + ], + [ + 5.127276535964484, + 76.92305251819926 + ], + [ + 5.127276535964484, + 77.15247641743645 + ], + [ + 5.127276535964484, + 77.38190031667273 + ], + [ + 5.127276535964484, + 77.61132421590901 + ], + [ + 5.127276535964484, + 77.84074811514529 + ], + [ + 5.127276535964484, + 78.07017201438157 + ], + [ + 5.127276535964484, + 78.52901981285413 + ], + [ + 5.342795956457849, + 78.74453923334931 + ], + [ + 5.572219855694129, + 78.74453923334931 + ], + [ + 5.80164375493041, + 78.9739631325856 + ], + [ + 6.031067654166691, + 78.9739631325856 + ], + [ + 6.2604915534029715, + 79.20338703182188 + ], + [ + 6.7680050274721, + 79.45714376885553 + ], + [ + 7.275518501541228, + 79.7109005058901 + ], + [ + 7.783031975606718, + 79.7109005058901 + ], + [ + 8.290545449675847, + 79.96465724292375 + ], + [ + 8.798058923744975, + 79.96465724292375 + ], + [ + 9.305572397814103, + 80.21841397995831 + ], + [ + 9.813085871879593, + 80.21841397995831 + ], + [ + 10.320599345948722, + 80.47217071699197 + ], + [ + 10.82811282001785, + 80.47217071699197 + ], + [ + 11.335626294086978, + 80.47217071699197 + ], + [ + 11.843139768152469, + 80.72592745402653 + ], + [ + 12.350653242221597, + 80.72592745402653 + ], + [ + 13.365680190359853, + 81.23344092809475 + ], + [ + 13.873193664428982, + 81.48719766512932 + ], + [ + 14.380707138494472, + 81.48719766512932 + ], + [ + 14.610131037730753, + 81.7166215643656 + ], + [ + 15.117644511799881, + 81.97037830139925 + ], + [ + 15.347068411036162, + 82.19980220063553 + ], + [ + 15.576492310272442, + 82.42922609987181 + ], + [ + 16.08400578434157, + 82.68298283690638 + ], + [ + 16.31342968357785, + 82.91240673614266 + ], + [ + 16.82094315764698, + 83.16616347317631 + ], + [ + 17.05036705688326, + 83.3955873724135 + ], + [ + 17.27979095611954, + 83.62501127164978 + ], + [ + 17.509214855355822, + 83.85443517088606 + ], + [ + 17.738638754592102, + 84.08385907012234 + ], + [ + 17.968062653828383, + 84.31328296935862 + ], + [ + 18.221819390862947, + 84.82079644342684 + ], + [ + 18.451243290099228, + 85.05022034266312 + ], + [ + 18.68066718933551, + 85.2796442418994 + ], + [ + 18.934423926370073, + 85.78715771596762 + ], + [ + 19.417604562640918, + 86.52409508927212 + ], + [ + 19.671361299671844, + 87.03160856334034 + ], + [ + 19.900785198908125, + 87.26103246257662 + ], + [ + 19.900785198908125, + 87.76854593664575 + ], + [ + 20.15454193594269, + 88.27605941071397 + ], + [ + 20.15454193594269, + 88.78357288478219 + ], + [ + 20.15454193594269, + 89.29108635885041 + ], + [ + 20.15454193594269, + 89.79859983291863 + ], + [ + 20.15454193594269, + 90.30611330698684 + ], + [ + 20.15454193594269, + 91.14038203148266 + ], + [ + 20.15454193594269, + 91.64789550555088 + ], + [ + 20.15454193594269, + 92.1554089796191 + ], + [ + 20.15454193594269, + 92.98967770411491 + ], + [ + 20.15454193594269, + 93.49719117818313 + ], + [ + 20.15454193594269, + 94.33145990267894 + ], + [ + 20.15454193594269, + 95.16572862717476 + ], + [ + 19.897309079224215, + 95.67324210124298 + ], + [ + 19.64007622250574, + 96.1807555753112 + ], + [ + 19.129086628749064, + 96.68826904937941 + ], + [ + 18.360864178277552, + 97.70329599751676 + ], + [ + 17.849874584524514, + 98.21080947158498 + ], + [ + 17.59264172780604, + 98.7183229456532 + ], + [ + 16.754896883623587, + 98.99641252048514 + ], + [ + 16.24390728987055, + 99.50392599455336 + ], + [ + 15.73291769611751, + 99.75768273158701 + ], + [ + 14.895172851935058, + 100.03577230641895 + ], + [ + 14.38418325818202, + 100.28952904345351 + ], + [ + 13.546438413999567, + 100.84570819311739 + ], + [ + 13.035448820246529, + 101.09946493015104 + ], + [ + 12.52445922649349, + 101.35322166718561 + ], + [ + 11.686714382311038, + 101.63131124201755 + ], + [ + 11.453814363390848, + 101.86073514125383 + ], + [ + 10.942824769634171, + 102.11449187828839 + ], + [ + 10.431835175881133, + 102.36824861532205 + ], + [ + 10.198935156960943, + 102.59767251455833 + ], + [ + 9.966035138037114, + 102.8270964137946 + ], + [ + 9.733135119116923, + 103.05652031303089 + ], + [ + 8.989245506440056, + 103.28594421226717 + ], + [ + 8.756345487519866, + 103.28594421226717 + ], + [ + 8.245355893766828, + 103.53970094930173 + ], + [ + 7.734366300013789, + 103.53970094930173 + ], + [ + 7.223376706257113, + 103.53970094930173 + ], + [ + 6.712387112504075, + 103.79345768633539 + ], + [ + 6.201397518751037, + 103.79345768633539 + ], + [ + 5.690407924997999, + 104.04721442336995 + ], + [ + 5.45750790607417, + 104.27663832260623 + ], + [ + 4.946518312321132, + 104.27663832260623 + ], + [ + 4.713618293400941, + 104.50606222184251 + ], + [ + 4.480718274477113, + 104.50606222184251 + ], + [ + 4.480718274477113, + 104.7354861210788 + ], + [ + 4.247818255556922, + 104.7354861210788 + ], + [ + 4.247818255556922, + 104.7354861210788 + ] + ], + "lastCommittedPoint": null, + "simulatePressure": true, + "pressures": [] + }, + { + "type": "text", + "version": 186, + "versionNonce": 1179652372, + "index": "b6e", + "isDeleted": false, + "id": "4Z11mQdPPxzRPhEowiaSH", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 23374.818949556007, + "y": 7861.283565300014, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 183.40786743164062, + "height": 20, + "seed": 459695607, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "ConsumerTrustingPeriod", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "ConsumerTrustingPeriod", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 223, + "versionNonce": 323238444, + "index": "b6f", + "isDeleted": false, + "id": "cM5lZu_zzhwhF6ymMkEew", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17231.493728024623, + "y": 4142.768704948955, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 682.3301149533181, + "height": 0, + "seed": 2014854551, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 682.3301149533181, + 0 + ] + ] + }, + { + "type": "rectangle", + "version": 610, + "versionNonce": 1574227604, + "index": "b6g", + "isDeleted": false, + "id": "jEi6rt-lKj0ViJsCCagG3", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17581.762213698024, + "y": 4066.7765566234257, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 422231511, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "l33JddToJO1JzktjcWLY5" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 388, + "versionNonce": 831788204, + "index": "b6h", + "isDeleted": false, + "id": "l33JddToJO1JzktjcWLY5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17656.70882818593, + "y": 4091.7765566234257, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 55.23197937011719, + "height": 20, + "seed": 585296631, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 18", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "jEi6rt-lKj0ViJsCCagG3", + "originalText": "Day 18", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 360, + "versionNonce": 1894112276, + "index": "b6i", + "isDeleted": false, + "id": "CKsipJ-izdpk5iCDYu3bi", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17199.367495681578, + "y": 3851.0601630726674, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 682.3301149533181, + "height": 0, + "seed": 2045581559, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 682.3301149533181, + 0 + ] + ] + }, + { + "type": "rectangle", + "version": 865, + "versionNonce": 1577361196, + "index": "b6j", + "isDeleted": false, + "id": "NjWKbr1PT6xxfrsuJoL-g", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 20, + "angle": 0, + "x": 17573.475000844042, + "y": 4149.039311709246, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 218.9737339250205, + "height": 153.12718062234276, + "seed": 227191991, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "EGLtFlDZTCOeWEk1eLKe4", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 741, + "versionNonce": 1769552276, + "index": "b6k", + "isDeleted": false, + "id": "4jP3OmRdCfPwTdpfBPbg_", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 20, + "angle": 0, + "x": 17456.836552044944, + "y": 4747.321744310823, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 218.9737339250205, + "height": 554.90205740889, + "seed": 758654711, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "RpAh5nWnvi5sb6LuYvIaJ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 609, + "versionNonce": 1895815596, + "index": "b6l", + "isDeleted": false, + "id": "5Ch6XLJ7ufm7IGaf5S-Pf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17151.635783239206, + "y": 4642.47149297857, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189522, + "height": 562.7313924176319, + "seed": 1604726807, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "PY0CNIITNpd03N7t8AIx2", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 393, + "versionNonce": 46458644, + "index": "b6m", + "isDeleted": false, + "id": "pQqRYg7yqiF402Q_p8qLK", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17162.56746686652, + "y": 4649.520330209872, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 1706431799, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "81pipy_7wP_GpW5M_Q3Z6" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 138, + "versionNonce": 632276012, + "index": "b6n", + "isDeleted": false, + "id": "81pipy_7wP_GpW5M_Q3Z6", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17186.882130976006, + "y": 4654.520330209872, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 60, + "seed": 650925655, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 1\nValidator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "pQqRYg7yqiF402Q_p8qLK", + "originalText": "Day 1\nValidator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 551, + "versionNonce": 557769876, + "index": "b6o", + "isDeleted": false, + "id": "UCOrndF3aFsaM2dLMSy8C", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17165.934228794893, + "y": 5119.155374920572, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 700281719, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "B5slaPM5n1IWSAGbM6222" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 317, + "versionNonce": 1107189420, + "index": "b6p", + "isDeleted": false, + "id": "B5slaPM5n1IWSAGbM6222", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17175.72089302645, + "y": 5124.155374920572, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 60, + "seed": 651029655, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21\nValidator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "UCOrndF3aFsaM2dLMSy8C", + "originalText": "Day 21\nValidator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 553, + "versionNonce": 714945044, + "index": "b6q", + "isDeleted": false, + "id": "3CEEKPefVF1hpOnZQqykc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17462.087442201755, + "y": 4751.976051291791, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 328135383, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "7VptdtWIHAac9WPGBYq5S" + }, + { + "id": "PY0CNIITNpd03N7t8AIx2", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 323, + "versionNonce": 1049995564, + "index": "b6r", + "isDeleted": false, + "id": "7VptdtWIHAac9WPGBYq5S", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17486.40210631124, + "y": 4756.976051291791, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 60, + "seed": 217612279, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 13\nValidator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "3CEEKPefVF1hpOnZQqykc", + "originalText": "Day 13\nValidator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 624, + "versionNonce": 1574293396, + "index": "b6s", + "isDeleted": false, + "id": "Pj4TWEOlCoGzjHthwI05d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17463.779712879714, + "y": 5231.103884049439, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 2012440855, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "2H5NKiK5LnpFYs3O1PRpt" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 401, + "versionNonce": 1860150188, + "index": "b6t", + "isDeleted": false, + "id": "2H5NKiK5LnpFYs3O1PRpt", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17535.87032456, + "y": 5256.103884049439, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 60.94398498535156, + "height": 20, + "seed": 1374957111, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 23", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Pj4TWEOlCoGzjHthwI05d", + "originalText": "Day 23", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1127, + "versionNonce": 723434772, + "index": "b6u", + "isDeleted": false, + "id": "PY0CNIITNpd03N7t8AIx2", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17396.05397326395, + "y": 4689.6395651879275, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 52.37142532794314, + "height": 65.32311517913331, + "seed": 1977569111, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "5Ch6XLJ7ufm7IGaf5S-Pf", + "gap": 15.188783782850805, + "focus": -0.9332552955375547, + "fixedPoint": null + }, + "endBinding": { + "elementId": "3CEEKPefVF1hpOnZQqykc", + "gap": 13.66204360986012, + "focus": -0.6932816298391926, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 52.37142532794314, + 65.32311517913331 + ] + ] + }, + { + "type": "text", + "version": 931, + "versionNonce": 688279084, + "index": "b6v", + "isDeleted": false, + "id": "m2oNSy5m8cRxXDSIVx-km", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.9151181395173165, + "x": 17411.56481781355, + "y": 4660.169563925179, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 73.96746826171875, + "height": 71.17988561441425, + "seed": 1846103159, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "PY0CNIITNpd03N7t8AIx2", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 14.235977122882849, + "fontFamily": 1, + "text": "VSCPacket\ndelayed\n13 days\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket\ndelayed\n13 days\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 194, + "versionNonce": 200145556, + "index": "b6w", + "isDeleted": false, + "id": "hOdRcPCvnKbillpVNBC7e", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17516.089303767058, + "y": 4713.771869230441, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 20, + "seed": 104244631, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 796, + "versionNonce": 1844684972, + "index": "b6x", + "isDeleted": false, + "id": "R2fQ2ZZ1bOrgD3DUhUFhx", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17797.653237760813, + "y": 4841.476738202215, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189496, + "height": 124.89233315508174, + "seed": 496753335, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "RpAh5nWnvi5sb6LuYvIaJ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 777, + "versionNonce": 1526302740, + "index": "b6y", + "isDeleted": false, + "id": "0PI84RwTx-hu9zVkXb3Ky", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17811.36685653767, + "y": 4855.36052111736, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 90, + "seed": 954035159, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "88-PNus0a51m4faR9VoXa" + }, + { + "id": "RpAh5nWnvi5sb6LuYvIaJ", + "type": "arrow" + }, + { + "id": "-ATW2pTFX43jraZsZN_a7", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 627, + "versionNonce": 290566956, + "index": "b6z", + "isDeleted": false, + "id": "88-PNus0a51m4faR9VoXa", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17816.63352412616, + "y": 4860.36052111736, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 194.5918731689453, + "height": 80, + "seed": 1410324727, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC: light client\ntracking the consumer \nchain with \ntrustingPeriod = 10 days", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "0PI84RwTx-hu9zVkXb3Ky", + "originalText": "LC: light client\ntracking the consumer chain with \ntrustingPeriod = 10 days", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 411, + "versionNonce": 741827988, + "index": "b70", + "isDeleted": false, + "id": "_FS6fvmp-wWJYj7Sr_ue5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17848.91993700548, + "y": 4804.413231845676, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 121.02391052246094, + "height": 20, + "seed": 1958191639, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "3rd-party chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "3rd-party chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1416, + "versionNonce": 1636461996, + "index": "b71", + "isDeleted": false, + "id": "RpAh5nWnvi5sb6LuYvIaJ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17784.93732374562, + "y": 4867.541045604759, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 98.48613598014708, + "height": 110.90769521182301, + "seed": 2076788535, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "R2fQ2ZZ1bOrgD3DUhUFhx", + "focus": -0.407842097720293, + "gap": 12.715914015192538, + "fixedPoint": null + }, + "endBinding": { + "elementId": "4jP3OmRdCfPwTdpfBPbg_", + "gap": 10.640901795508398, + "focus": -1.013448668493488, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -44.570882062489545, + -34.20834228524109 + ], + [ + -98.48613598014708, + -110.90769521182301 + ] + ] + }, + { + "type": "text", + "version": 98, + "versionNonce": 618500884, + "index": "b72", + "isDeleted": false, + "id": "ury0yrZ6X6vna86M3wG8e", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17204.519964692725, + "y": 4623.427850446937, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.82392883300781, + "height": 20, + "seed": 933840983, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "provider chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1419, + "versionNonce": 1338497068, + "index": "b73", + "isDeleted": false, + "id": "-ATW2pTFX43jraZsZN_a7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17800.898279494086, + "y": 4920.459158239562, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 112.71196345203862, + "height": 366.08365355394017, + "seed": 908862839, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "0PI84RwTx-hu9zVkXb3Ky", + "focus": 1.020892395116262, + "gap": 10.468577043582627, + "fixedPoint": null + }, + "endBinding": { + "elementId": "VwsWUejVCVU6_JucnD06d", + "focus": 0.9992755387516216, + "gap": 8.70512844946279, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -18.54171441134531, + 147.06967283267204 + ], + [ + -112.71196345203862, + 366.08365355394017 + ] + ] + }, + { + "type": "line", + "version": 348, + "versionNonce": 1398935700, + "index": "b74", + "isDeleted": false, + "id": "9bxnWj8ws4kdkTRQntGZk", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17124.60840478161, + "y": 5306.716872844643, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 682.3301149533181, + "height": 0, + "seed": 1452695191, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 682.3301149533181, + 0 + ] + ] + }, + { + "type": "rectangle", + "version": 756, + "versionNonce": 401863340, + "index": "b75", + "isDeleted": false, + "id": "fOPZ2YDD-8l4-e3kwBBJ2", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17462.864273537365, + "y": 5123.507713557438, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 463238071, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "0IVclwLwbL-7gaP5NxVIg" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 537, + "versionNonce": 125492756, + "index": "b76", + "isDeleted": false, + "id": "0IVclwLwbL-7gaP5NxVIg", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17472.65093776892, + "y": 5128.507713557438, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 60, + "seed": 1029891287, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21\nValidator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "fOPZ2YDD-8l4-e3kwBBJ2", + "originalText": "Day 21\nValidator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 361, + "versionNonce": 1756937516, + "index": "b77", + "isDeleted": false, + "id": "vkIAImgq5mqISmCpaWL6j", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17079.687025255796, + "y": 4746.553809153054, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 682.3301149533181, + "height": 0, + "seed": 2071867895, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 682.3301149533181, + 0 + ] + ] + }, + { + "type": "rectangle", + "version": 1267, + "versionNonce": 706608020, + "index": "b78", + "isDeleted": false, + "id": "gDNYmUjH-x4ivOwJ5_1bu", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19250.453900366516, + "y": 4821.448079266939, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ebfbee", + "width": 219.32094934067194, + "height": 439.4347935857414, + "seed": 445763126, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "gnwGXfDxssHPds91A2ylp", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 710, + "versionNonce": 192952236, + "index": "b79", + "isDeleted": false, + "id": "MBBGA0lkEx2w3nK7r7QVw", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18852.16216129898, + "y": 4591.795635150471, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189522, + "height": 562.7313924176319, + "seed": 249993078, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 497, + "versionNonce": 360802580, + "index": "b7A", + "isDeleted": false, + "id": "NNY5ghsTrjxRIv3Td0D2l", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18860.47773613932, + "y": 4599.16936218432, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 1213216950, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Fm_dNx5bveIPNbXArkVWv" + }, + { + "id": "-RJ1Y9YAegQHGrAZdH2AL", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 242, + "versionNonce": 208953900, + "index": "b7B", + "isDeleted": false, + "id": "Fm_dNx5bveIPNbXArkVWv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18884.792400248807, + "y": 4604.16936218432, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 60, + "seed": 2121511414, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 1\nValidator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "NNY5ghsTrjxRIv3Td0D2l", + "originalText": "Day 1\nValidator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 652, + "versionNonce": 1830495892, + "index": "b7C", + "isDeleted": false, + "id": "DHAuuEj_2YBy0geUO7IiX", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18865.81896184923, + "y": 5068.4795170924735, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 743834422, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "gTn1XktELcgql9YnvoBzz" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 419, + "versionNonce": 1652505772, + "index": "b7D", + "isDeleted": false, + "id": "gTn1XktELcgql9YnvoBzz", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18875.605626080785, + "y": 5073.4795170924735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 185.5518798828125, + "height": 60, + "seed": 610020470, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21\nValidator's V unbonding \ncompletes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "DHAuuEj_2YBy0geUO7IiX", + "originalText": "Day 21\nValidator's V unbonding completes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 774, + "versionNonce": 1973498900, + "index": "b7E", + "isDeleted": false, + "id": "ClKtbdnFclmWSstap1BAl", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19259.324884106107, + "y": 5081.269522294584, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 736051574, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "uorHs7ouA3OeM2x2lwFaA" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 554, + "versionNonce": 390776620, + "index": "b7F", + "isDeleted": false, + "id": "uorHs7ouA3OeM2x2lwFaA", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19334.69549456569, + "y": 5106.269522294584, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 54.38398742675781, + "height": 20, + "seed": 1420010166, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 21", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ClKtbdnFclmWSstap1BAl", + "originalText": "Day 21", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1618, + "versionNonce": 1829343636, + "index": "b7G", + "isDeleted": false, + "id": "-RJ1Y9YAegQHGrAZdH2AL", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19066.76646645436, + "y": 4625.8569567518, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 189.7090406470561, + "height": 322.17413551147547, + "seed": 1086970870, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "NNY5ghsTrjxRIv3Td0D2l", + "focus": -0.9329531637278154, + "gap": 1.1635219691124803, + "fixedPoint": null + }, + "endBinding": { + "elementId": "VxmYAhw_SY6bFAjPp2Vh-", + "focus": -0.6630474563386289, + "gap": 5.275539431655488, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 88.64787970020916, + 268.3791894223896 + ], + [ + 189.7090406470561, + 322.17413551147547 + ] + ] + }, + { + "type": "text", + "version": 1326, + "versionNonce": 1866531244, + "index": "b7H", + "isDeleted": false, + "id": "Cs-j1X1_OEHB4V76ZbYCy", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.9974503052679609, + "x": 19118.600108740473, + "y": 4761.869251163764, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 69.02935791015625, + "height": 66.43599282122075, + "seed": 1448537398, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "-RJ1Y9YAegQHGrAZdH2AL", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 13.28719856424415, + "fontFamily": 1, + "text": "VSCPacket\ndelayed\n5 days\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket\ndelayed\n5 days\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 354, + "versionNonce": 1653227284, + "index": "b7I", + "isDeleted": false, + "id": "hZRaBMbnZjqoyiss2Dot0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19311.70184514872, + "y": 4560.717165046096, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 75.49992370605469, + "height": 25, + "seed": 1924126326, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Neutron", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Neutron", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 908, + "versionNonce": 294382636, + "index": "b7J", + "isDeleted": false, + "id": "3YBjJD93jKX3VqqHx3DDm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19652.753626251048, + "y": 4856.035296266236, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189496, + "height": 124.89233315508174, + "seed": 2123995062, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "gnwGXfDxssHPds91A2ylp", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 893, + "versionNonce": 244923540, + "index": "b7K", + "isDeleted": false, + "id": "jY8bb0Xye6ZTiJ-_EKvPH", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19664.556216468864, + "y": 4870.117593650511, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 90, + "seed": 37302518, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Gxk76kLW4Xvq_To0wrGm8" + }, + { + "id": "gnwGXfDxssHPds91A2ylp", + "type": "arrow" + }, + { + "id": "fXtkeqB7wUuWkRl76lJhX", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 754, + "versionNonce": 806717100, + "index": "b7L", + "isDeleted": false, + "id": "Gxk76kLW4Xvq_To0wrGm8", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19671.02288863499, + "y": 4885.117593650511, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 192.19186401367188, + "height": 60, + "seed": 957588022, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "LC: light client\ntracking Neutron with \ntrustingPeriod = 17 days", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "jY8bb0Xye6ZTiJ-_EKvPH", + "originalText": "LC: light client\ntracking Neutron with \ntrustingPeriod = 17 days", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 882, + "versionNonce": 720144916, + "index": "b7M", + "isDeleted": false, + "id": "lRiaruM1UOUOwsijMyP-A", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19741.234562806156, + "y": 4815.444192379928, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 56.49995422363281, + "height": 25, + "seed": 638446454, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Kujira", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Kujira", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 2114, + "versionNonce": 797430060, + "index": "b7N", + "isDeleted": false, + "id": "gnwGXfDxssHPds91A2ylp", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19678.03703016996, + "y": 4854.073429410227, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 213.64501098362962, + "height": 27.778814286036322, + "seed": 661458102, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "jY8bb0Xye6ZTiJ-_EKvPH", + "focus": 0.8805110487126344, + "gap": 16.044164240283862, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -144.03251088670004, + -17.199155880666694 + ], + [ + -213.64501098362962, + 10.579658405369628 + ] + ] + }, + { + "type": "text", + "version": 239, + "versionNonce": 1249519508, + "index": "b7O", + "isDeleted": false, + "id": "WVSuBcPkZlR-H7oFKcrV5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18908.737116963268, + "y": 4565.45834695498, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 111.95988464355469, + "height": 25, + "seed": 181798390, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Cosmos Hub", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Cosmos Hub", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1942, + "versionNonce": 1330432940, + "index": "b7P", + "isDeleted": false, + "id": "fXtkeqB7wUuWkRl76lJhX", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19650.760590218582, + "y": 4886.618544963544, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 175.93232808582252, + "height": 328.19308762507535, + "seed": 558749494, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "jY8bb0Xye6ZTiJ-_EKvPH", + "focus": 1.0747320510368414, + "gap": 13.795626250281202, + "fixedPoint": null + }, + "endBinding": { + "elementId": "pkYTyEmBlFNQ3rRRENJEA", + "focus": 0.8016224370798299, + "gap": 11.745465227762907, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -79.91199093486284, + 258.9114248574415 + ], + [ + -175.93232808582252, + 328.19308762507535 + ] + ] + }, + { + "type": "line", + "version": 479, + "versionNonce": 829953300, + "index": "b7Q", + "isDeleted": false, + "id": "1mS79JtOQrKFEWYBl2JUE", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18827.286408120082, + "y": 5164.801095494517, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 741.6728571120548, + "height": 0.9587291327707135, + "seed": 1396277366, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 741.6728571120548, + 0.9587291327707135 + ] + ] + }, + { + "type": "rectangle", + "version": 577, + "versionNonce": 1368290860, + "index": "b7R", + "isDeleted": false, + "id": "_WvyPMeZY9xAMfGUvu2Qo", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 19258.128605107086, + "y": 4602.939158536493, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 205.1252083459257, + "height": 60, + "seed": 2058970742, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "0r8yrDXsP91003Ld6aaRn" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 126, + "versionNonce": 761025172, + "index": "b7S", + "isDeleted": false, + "id": "0r8yrDXsP91003Ld6aaRn", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 19302.963242971455, + "y": 4612.939158536493, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 115.4559326171875, + "height": 40, + "seed": 296825258, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 1\nchain is halted", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "_WvyPMeZY9xAMfGUvu2Qo", + "originalText": "Day 1\nchain is halted", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 647, + "versionNonce": 590794924, + "index": "b7T", + "isDeleted": false, + "id": "KwvBe9AGFbigXOatyGEiA", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 19258.543566057742, + "y": 4673.565687442762, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 205.1252083459257, + "height": 60, + "seed": 339924086, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "VqPNixTEQ_R3ugAJsqcQp" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 210, + "versionNonce": 1826414612, + "index": "b7U", + "isDeleted": false, + "id": "VqPNixTEQ_R3ugAJsqcQp", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 19354.53018909057, + "y": 4693.565687442762, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 13.151962280273438, + "height": 20, + "seed": 823973302, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "KwvBe9AGFbigXOatyGEiA", + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 742, + "versionNonce": 66050860, + "index": "b7V", + "isDeleted": false, + "id": "vBscFtfTzJ2h0Ps3Pm5sm", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 19260.80268203957, + "y": 4750.531058717351, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 205.1252083459257, + "height": 60, + "seed": 1577876202, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "iutxLPwWfidXPuUG6z3Qq" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 299, + "versionNonce": 1475329428, + "index": "b7W", + "isDeleted": false, + "id": "iutxLPwWfidXPuUG6z3Qq", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 19305.63731990394, + "y": 4760.531058717351, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 115.4559326171875, + "height": 40, + "seed": 223448490, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 5\nchain is halted", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "vBscFtfTzJ2h0Ps3Pm5sm", + "originalText": "Day 5\nchain is halted", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 914, + "versionNonce": 774084012, + "index": "b7X", + "isDeleted": false, + "id": "HwH-ytcP4unSUVRb-r3pV", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19259.76621811225, + "y": 4829.3756204280835, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 957416886, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "yX9HYT4lKqu8DRerV549N" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 799, + "versionNonce": 1741351700, + "index": "b7Y", + "isDeleted": false, + "id": "yX9HYT4lKqu8DRerV549N", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19283.528880268612, + "y": 4834.3756204280835, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 157.59988403320312, + "height": 60, + "seed": 395501302, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 6\nfirst block X after \nchain resumes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "HwH-ytcP4unSUVRb-r3pV", + "originalText": "Day 6\nfirst block X after chain resumes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 956, + "versionNonce": 2130444332, + "index": "b7Z", + "isDeleted": false, + "id": "VxmYAhw_SY6bFAjPp2Vh-", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19261.75104653307, + "y": 4911.028248622399, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 1822849322, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "vIfMwA3YEkOLWRv1XAdPH" + }, + { + "id": "-RJ1Y9YAegQHGrAZdH2AL", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 856, + "versionNonce": 2128898196, + "index": "b7a", + "isDeleted": false, + "id": "vIfMwA3YEkOLWRv1XAdPH", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19329.849669077616, + "y": 4926.028248622399, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 68.92796325683594, + "height": 40, + "seed": 747750378, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 6\nblock X+1", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "VxmYAhw_SY6bFAjPp2Vh-", + "originalText": "Day 6\nblock X+1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 840, + "versionNonce": 509811372, + "index": "b7b", + "isDeleted": false, + "id": "pkYTyEmBlFNQ3rRRENJEA", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19257.95758855907, + "y": 5174.909924789666, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.1252083459257, + "height": 70, + "seed": 1763098730, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Z-NVQ9vyemxA089iHZnnB" + }, + { + "id": "fXtkeqB7wUuWkRl76lJhX", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 619, + "versionNonce": 1089615380, + "index": "b7c", + "isDeleted": false, + "id": "Z-NVQ9vyemxA089iHZnnB", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19329.800199140725, + "y": 5199.909924789666, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 61.43998718261719, + "height": 20, + "seed": 435626794, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Day 22", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "pkYTyEmBlFNQ3rRRENJEA", + "originalText": "Day 22", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 787, + "versionNonce": 654501164, + "index": "b7d", + "isDeleted": false, + "id": "_ZdB8F_4A-i7d3qaGNwmk", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 19996.056800658644, + "y": 4738.620816039806, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 321.5164946998735, + "height": 176.28830149901754, + "seed": 1197573826, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 463, + "versionNonce": 1793741716, + "index": "b7e", + "isDeleted": false, + "id": "A4HRKazYq2A3OYyFpbuju", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 20095.82068515397, + "y": 4698.233103142726, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 111.95988464355469, + "height": 25, + "seed": 1595686466, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Cosmos Hub", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Cosmos Hub", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 162, + "versionNonce": 1313169324, + "index": "b7f", + "isDeleted": false, + "id": "d9lzirT9580_e2YThT5iy", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 20101.244800196324, + "y": 4754.675345461571, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 90.36793518066406, + "height": 20, + "seed": 989497730, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "light clients", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "light clients", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 185, + "versionNonce": 721600788, + "index": "b7g", + "isDeleted": false, + "id": "XJGktoX3Ec16GsVXQus8r", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 20022.371317318728, + "y": 4783.289790840633, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ebfbee", + "width": 271.3997504785184, + "height": 120.60334690310184, + "seed": 1454696286, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 230, + "versionNonce": 206866988, + "index": "b7h", + "isDeleted": false, + "id": "coIrlp7mv0iBiZ3ASP3GF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 20037.23801988133, + "y": 4815.899235000339, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 86.54923472739392, + "height": 75.75748525436302, + "seed": 1038119774, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 130, + "versionNonce": 2024898196, + "index": "b7i", + "isDeleted": false, + "id": "U8DmFIrQk99mko8EaHTew", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 20052.922001773517, + "y": 4824.59488830386, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 51.10395812988281, + "height": 60, + "seed": 478457218, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "client\ntracks\nStride", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "client\ntracks\nStride", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 282, + "versionNonce": 1142580396, + "index": "b7j", + "isDeleted": false, + "id": "5pnHnU120wjUI0D2xOLc7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 20138.479481678212, + "y": 4814.8448785060755, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 86.54923472739392, + "height": 75.75748525436302, + "seed": 776168706, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 193, + "versionNonce": 1823247380, + "index": "b7k", + "isDeleted": false, + "id": "FQI0MvhpNqfJY1c04bKrl", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 20153.751512537252, + "y": 4823.267029593002, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 60.17594909667969, + "height": 60, + "seed": 1347646658, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "client\ntracks\nOsmosis", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "client\ntracks\nOsmosis", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 95, + "versionNonce": 1799417644, + "index": "b7l", + "isDeleted": false, + "id": "kGlrLmxiohYyfJBSrB_nG", + "fillStyle": "cross-hatch", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 20248.951697095363, + "y": 4842.48290016434, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 13.151962280273438, + "height": 20, + "seed": 580341214, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 764, + "versionNonce": 417982868, + "index": "b7m", + "isDeleted": false, + "id": "eVuccbJtS_gBNnaXcLczv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 19976.831723999352, + "y": 5016.74362666858, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 660.902764751172, + "height": 85.01607117844743, + "seed": 699781314, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 665, + "versionNonce": 842148268, + "index": "b7n", + "isDeleted": false, + "id": "WafF4ObVNhahbaus9frms", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19991.436514134602, + "y": 5026.681076349287, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 2009126978, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "hqqSD4cZ-QsXgT0JW4IX0" + }, + { + "id": "mQRB8dcsfE_nDFG-kq4-l", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 542, + "versionNonce": 1621071636, + "index": "b7o", + "isDeleted": false, + "id": "hqqSD4cZ-QsXgT0JW4IX0", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20004.90990044061, + "y": 5031.681076349287, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 131.6479034423828, + "height": 60, + "seed": 1770946754, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consensus state\nfor Stride height\n73 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "WafF4ObVNhahbaus9frms", + "originalText": "consensus state\nfor Stride height\n73 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 286, + "versionNonce": 739775532, + "index": "b7p", + "isDeleted": false, + "id": "mQRB8dcsfE_nDFG-kq4-l", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20151.031190188995, + "y": 5065.00433845564, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 34.9383140140053, + "height": 1.6357033349377161, + "seed": 827074242, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "WafF4ObVNhahbaus9frms", + "focus": -0.00689627685858934, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "EDtWYw3hJeikW6sKr-mkV", + "focus": -0.2435056076792594, + "gap": 3.496771740623444, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 34.9383140140053, + 1.6357033349377161 + ] + ] + }, + { + "type": "rectangle", + "version": 715, + "versionNonce": 1346606228, + "index": "b7q", + "isDeleted": false, + "id": "EDtWYw3hJeikW6sKr-mkV", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20189.466275943625, + "y": 5026.089504939114, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 1645037570, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "cgt1PJUKrdfQLM88R4DEN" + }, + { + "id": "mQRB8dcsfE_nDFG-kq4-l", + "type": "arrow" + }, + { + "id": "Qqeu2oY5T3JNwhWrVi2aX", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 594, + "versionNonce": 1994174124, + "index": "b7r", + "isDeleted": false, + "id": "cgt1PJUKrdfQLM88R4DEN", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20202.939662249628, + "y": 5031.089504939114, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 131.6479034423828, + "height": 60, + "seed": 1458108354, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consensus state\nfor Stride height\n89", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "EDtWYw3hJeikW6sKr-mkV", + "originalText": "consensus state\nfor Stride height\n89", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 444, + "versionNonce": 1972101652, + "index": "b7s", + "isDeleted": false, + "id": "Qqeu2oY5T3JNwhWrVi2aX", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20349.70337408092, + "y": 5061.543559273332, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 31.04742295181859, + "height": 0.44850424142350676, + "seed": 371643138, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "EDtWYw3hJeikW6sKr-mkV", + "focus": -0.018598157362909318, + "gap": 1.6424220829048863, + "fixedPoint": null + }, + "endBinding": { + "elementId": "dq40ntmYslrL310Cg0M-e", + "focus": -0.21457372145488707, + "gap": 7.2883051303251705, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 31.04742295181859, + 0.44850424142350676 + ] + ] + }, + { + "type": "text", + "version": 105, + "versionNonce": 1663695148, + "index": "b7t", + "isDeleted": false, + "id": "dq40ntmYslrL310Cg0M-e", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20388.039102163064, + "y": 5050.026223260871, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 1519870750, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "Qqeu2oY5T3JNwhWrVi2aX", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 404, + "versionNonce": 929988500, + "index": "b7u", + "isDeleted": false, + "id": "3rWB9w-VtY2XsXGfCoav4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20418.73878157209, + "y": 5059.750067255062, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 30.802398315263417, + "height": 0.13104519083572086, + "seed": 110603330, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "-l4GqkEBBkJu2dALV7lb3", + "focus": -0.019097036718216408, + "gap": 1, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 30.802398315263417, + -0.13104519083572086 + ] + ] + }, + { + "type": "rectangle", + "version": 791, + "versionNonce": 476705708, + "index": "b7v", + "isDeleted": false, + "id": "-l4GqkEBBkJu2dALV7lb3", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20450.54117988735, + "y": 5023.602567572803, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 1671929474, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "HFBLCQObaQ0NiNv4ISTE5" + }, + { + "id": "3rWB9w-VtY2XsXGfCoav4", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 672, + "versionNonce": 773942548, + "index": "b7w", + "isDeleted": false, + "id": "HFBLCQObaQ0NiNv4ISTE5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20464.014566193353, + "y": 5028.602567572803, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 131.6479034423828, + "height": 60, + "seed": 267681346, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consensus state\nfor Stride height\n3129", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "-l4GqkEBBkJu2dALV7lb3", + "originalText": "consensus state\nfor Stride height\n3129", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 848, + "versionNonce": 1355193900, + "index": "b7x", + "isDeleted": false, + "id": "FnIeuY6cpPAeTTZ0RXh6Q", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 19971.859298043222, + "y": 5233.992603660872, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 660.902764751172, + "height": 117.69927685466696, + "seed": 671263042, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 705, + "versionNonce": 2065345172, + "index": "b7y", + "isDeleted": false, + "id": "oBqI9Vkw_JpLpCm4QzHtl", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19986.67973349074, + "y": 5278.398020074642, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 304099586, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ANEEag1cF9zM0sTJU7ZCN" + }, + { + "id": "AbjrN-aFizHvIGoJJL3r3", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 596, + "versionNonce": 1495922860, + "index": "b7z", + "isDeleted": false, + "id": "ANEEag1cF9zM0sTJU7ZCN", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20029.561094039906, + "y": 5283.398020074642, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 917946562, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n73 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "oBqI9Vkw_JpLpCm4QzHtl", + "originalText": "header\nat height\n73 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 406, + "versionNonce": 554711060, + "index": "b80", + "isDeleted": false, + "id": "AbjrN-aFizHvIGoJJL3r3", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20146.274409545134, + "y": 5316.836341368031, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 35.35223505854083, + "height": 1.6839830044655173, + "seed": 1902467202, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "oBqI9Vkw_JpLpCm4QzHtl", + "focus": -0.009969635202942254, + "gap": 1.000000000005457, + "fixedPoint": null + }, + "endBinding": { + "elementId": "EaziIioMxu-RAjUxVfkAn", + "focus": -0.2435056076792623, + "gap": 3.496771740623444, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 35.35223505854083, + 1.6839830044655173 + ] + ] + }, + { + "type": "rectangle", + "version": 755, + "versionNonce": 1631453996, + "index": "b81", + "isDeleted": false, + "id": "EaziIioMxu-RAjUxVfkAn", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20185.123416344297, + "y": 5278.0216876076265, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 1374353474, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "pVj7daDewFNT0O-4rKACo" + }, + { + "id": "AbjrN-aFizHvIGoJJL3r3", + "type": "arrow" + }, + { + "id": "FzsSFnz0LFBGBhiTB_JOc", + "type": "arrow" + }, + { + "id": "i3kwhBF902Jy3dOrTw0Wc", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 647, + "versionNonce": 1542985108, + "index": "b82", + "isDeleted": false, + "id": "pVj7daDewFNT0O-4rKACo", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20228.004776893467, + "y": 5283.0216876076265, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 405184514, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n89", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "EaziIioMxu-RAjUxVfkAn", + "originalText": "header\nat height\n89", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 560, + "versionNonce": 258784684, + "index": "b83", + "isDeleted": false, + "id": "FzsSFnz0LFBGBhiTB_JOc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20345.360514481596, + "y": 5313.477946810705, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 30.835495377014013, + "height": 0.4460529497400785, + "seed": 806834114, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "EaziIioMxu-RAjUxVfkAn", + "focus": -0.01976868854136813, + "gap": 1.6424220829048863, + "fixedPoint": null + }, + "endBinding": { + "elementId": "NhcF7g8JaSY4klmWrYxRk", + "focus": -0.21457372145487527, + "gap": 7.2883051303251705, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 30.835495377014013, + 0.4460529497400785 + ] + ] + }, + { + "type": "text", + "version": 143, + "versionNonce": 2030584596, + "index": "b84", + "isDeleted": false, + "id": "NhcF7g8JaSY4klmWrYxRk", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20383.484314988935, + "y": 5301.958405929383, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 769394562, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "FzsSFnz0LFBGBhiTB_JOc", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 478, + "versionNonce": 752887852, + "index": "b85", + "isDeleted": false, + "id": "k3F1bnf12HS0fTQhSQHNb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20414.183994397965, + "y": 5311.682249923575, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 31.01432589005708, + "height": 0.8981019306283997, + "seed": 1236518722, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "xWtD4oFg8fgT-vviZuWug", + "focus": -0.0190970367182231, + "gap": 1, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 31.01432589005708, + -0.8981019306283997 + ] + ] + }, + { + "type": "rectangle", + "version": 827, + "versionNonce": 783728788, + "index": "b86", + "isDeleted": false, + "id": "xWtD4oFg8fgT-vviZuWug", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20446.19832028802, + "y": 5272.746677816115, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 1543343874, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Q031km88v8pCd6eLVeVTJ" + }, + { + "id": "k3F1bnf12HS0fTQhSQHNb", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 723, + "versionNonce": 1300382380, + "index": "b87", + "isDeleted": false, + "id": "Q031km88v8pCd6eLVeVTJ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20489.07968083719, + "y": 5277.746677816115, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 1496866498, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n3129", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "xWtD4oFg8fgT-vviZuWug", + "originalText": "header\nat height\n3129", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 126, + "versionNonce": 1958317588, + "index": "b88", + "isDeleted": false, + "id": "iWHm7wkI7u6reL53iu9Oq", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19997.87050285071, + "y": 5248.410301484, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 393.2797546386719, + "height": 20, + "seed": 1812431454, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "internal state of light client that tracks Stride ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "internal state of light client that tracks Stride ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1032, + "versionNonce": 2013072684, + "index": "b89", + "isDeleted": false, + "id": "LTDx13MrzKCR90bAH-U-T", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20726.944407952058, + "y": 5266.23324950295, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 158.59467605439204, + "height": 70, + "seed": 195645726, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "M3Kh1tj9LfebbUtvGCPEz" + }, + { + "id": "i3kwhBF902Jy3dOrTw0Wc", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 933, + "versionNonce": 1543941012, + "index": "b8A", + "isDeleted": false, + "id": "M3Kh1tj9LfebbUtvGCPEz", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20769.82576850123, + "y": 5271.23324950295, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 316505438, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n3378", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "LTDx13MrzKCR90bAH-U-T", + "originalText": "header\nat height\n3378", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1721, + "versionNonce": 1304070060, + "index": "b8B", + "isDeleted": false, + "id": "i3kwhBF902Jy3dOrTw0Wc", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20825.585013906275, + "y": 5340.636441130564, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 569.0061336006472, + "height": 254.11456265551078, + "seed": 1172340190, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "LTDx13MrzKCR90bAH-U-T", + "focus": -0.5219060062342471, + "gap": 4.403191627614433, + "fixedPoint": null + }, + "endBinding": { + "elementId": "EaziIioMxu-RAjUxVfkAn", + "focus": 0.4671222791873526, + "gap": 4.6057073702904745, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -265.0070918046913, + 254.11456265551078 + ], + [ + -569.0061336006472, + 11.990953847353012 + ] + ] + }, + { + "type": "text", + "version": 1213, + "versionNonce": 1725176084, + "index": "b8C", + "isDeleted": false, + "id": "T7FYSl7EHED5ZV8Iz1Bz3", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 6.256479984364239, + "x": 20394.670253196276, + "y": 5416.1020562917365, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 345.89971923828125, + "height": 75, + "seed": 1351034498, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "compare validator set from header\nat height 3378 against validator\nset stored at header 89", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "compare validator set from header\nat height 3378 against validator\nset stored at header 89", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 936, + "versionNonce": 853848620, + "index": "b8D", + "isDeleted": false, + "id": "Vk8ZgkI2ZfjVGEtjpcGe1", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 20179.191099934127, + "y": 5691.089121239316, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 852.8392136306395, + "height": 117.69927685466696, + "seed": 801079838, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 707, + "versionNonce": 1620563604, + "index": "b8E", + "isDeleted": false, + "id": "ov_npszJt-LecqBMEPtAo", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20193.59389659964, + "y": 5735.494537653087, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 386240094, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "78QqWqUUq2y7eBU93Vyy4" + }, + { + "id": "LxlGuIzKVW7xG-oS2ejLw", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 599, + "versionNonce": 1986366636, + "index": "b8F", + "isDeleted": false, + "id": "78QqWqUUq2y7eBU93Vyy4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20236.475257148806, + "y": 5740.494537653087, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 2051019422, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n73 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ov_npszJt-LecqBMEPtAo", + "originalText": "header\nat height\n73 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 408, + "versionNonce": 906486804, + "index": "b8G", + "isDeleted": false, + "id": "LxlGuIzKVW7xG-oS2ejLw", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20353.188572654028, + "y": 5773.932858946475, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 35.35223505854083, + "height": 1.6839830044655173, + "seed": 1411387102, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "ov_npszJt-LecqBMEPtAo", + "focus": -0.009969635202942254, + "gap": 1.000000000005457, + "fixedPoint": null + }, + "endBinding": { + "elementId": "N6gKJd14CBJlm9UlJTdlR", + "focus": -0.2435056076792623, + "gap": 3.496771740623444, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 35.35223505854083, + 1.6839830044655173 + ] + ] + }, + { + "type": "rectangle", + "version": 758, + "versionNonce": 2045187884, + "index": "b8H", + "isDeleted": false, + "id": "N6gKJd14CBJlm9UlJTdlR", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20392.037579453194, + "y": 5735.118205186071, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 557220638, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "3Ve-NhdVjcQhxU7oB0k70" + }, + { + "id": "LxlGuIzKVW7xG-oS2ejLw", + "type": "arrow" + }, + { + "id": "cAQ94Wv4pFzOq0hKum90f", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 650, + "versionNonce": 1293566356, + "index": "b8I", + "isDeleted": false, + "id": "3Ve-NhdVjcQhxU7oB0k70", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20434.91894000236, + "y": 5740.118205186071, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 603221854, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n89", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "N6gKJd14CBJlm9UlJTdlR", + "originalText": "header\nat height\n89", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 562, + "versionNonce": 1507021228, + "index": "b8J", + "isDeleted": false, + "id": "cAQ94Wv4pFzOq0hKum90f", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20552.27467759049, + "y": 5770.57446438915, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 30.835495377014013, + "height": 0.4460529497400785, + "seed": 682283934, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "N6gKJd14CBJlm9UlJTdlR", + "focus": -0.01976868854136813, + "gap": 1.6424220829048863, + "fixedPoint": null + }, + "endBinding": { + "elementId": "14L6MzInBS31CH-B0emg4", + "focus": -0.21457372145487527, + "gap": 7.2883051303251705, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 30.835495377014013, + 0.4460529497400785 + ] + ] + }, + { + "type": "text", + "version": 145, + "versionNonce": 1560604436, + "index": "b8K", + "isDeleted": false, + "id": "14L6MzInBS31CH-B0emg4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20590.398478097828, + "y": 5759.054923507827, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 1233825758, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "cAQ94Wv4pFzOq0hKum90f", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 482, + "versionNonce": 357841964, + "index": "b8L", + "isDeleted": false, + "id": "PkmteDRZmiN4kGBloCgko", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20621.098157506865, + "y": 5769.03513140402, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 31.01432589005708, + "height": 0.8981019306283997, + "seed": 849675294, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "EYaBl5aqS9RX7u4UbI4Yk", + "focus": -0.025970751985333586, + "gap": 1, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 31.01432589005708, + -0.8981019306283997 + ] + ] + }, + { + "type": "rectangle", + "version": 830, + "versionNonce": 1178463380, + "index": "b8M", + "isDeleted": false, + "id": "EYaBl5aqS9RX7u4UbI4Yk", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20653.112483396915, + "y": 5729.84319539456, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 1709887582, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "gkvBhKVxZdZwHSWJr4Q0c" + }, + { + "id": "PkmteDRZmiN4kGBloCgko", + "type": "arrow" + }, + { + "id": "lhxktISSSc612g2bs36J-", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 726, + "versionNonce": 911464108, + "index": "b8N", + "isDeleted": false, + "id": "gkvBhKVxZdZwHSWJr4Q0c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20695.993843946082, + "y": 5734.84319539456, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 2133660830, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n3129", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "EYaBl5aqS9RX7u4UbI4Yk", + "originalText": "header\nat height\n3129", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 128, + "versionNonce": 1786460692, + "index": "b8O", + "isDeleted": false, + "id": "7G1SS0hcfH-0Y5YL_G8bT", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20204.784665959603, + "y": 5705.506819062444, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 393.2797546386719, + "height": 20, + "seed": 2015154398, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "internal state of light client that tracks Stride ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "internal state of light client that tracks Stride ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1084, + "versionNonce": 2038178092, + "index": "b8P", + "isDeleted": false, + "id": "9nwffESoU99dO_1yoI81c", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 21045.204623934787, + "y": 5931.308988265775, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 158.59467605439204, + "height": 70, + "seed": 1816855838, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Fu05ZmHQMXJqr90FRS8Bc" + }, + { + "id": "L7PRgf6Vta_puDAPIPRre", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 986, + "versionNonce": 78829460, + "index": "b8Q", + "isDeleted": false, + "id": "Fu05ZmHQMXJqr90FRS8Bc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 21088.085984483954, + "y": 5936.308988265775, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 1562947934, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n3378", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "9nwffESoU99dO_1yoI81c", + "originalText": "header\nat height\n3378", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 801, + "versionNonce": 1983323052, + "index": "b8R", + "isDeleted": false, + "id": "L7PRgf6Vta_puDAPIPRre", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 21039.776127673293, + "y": 5988.525852327341, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 539.5373737106274, + "height": 72.02215485097986, + "seed": 1980159390, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "9nwffESoU99dO_1yoI81c", + "focus": -0.6581590333501324, + "gap": 5.428496261496548, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -338.467831675526, + -8.516964183509103 + ], + [ + -539.5373737106274, + -72.02215485097986 + ] + ] + }, + { + "type": "text", + "version": 639, + "versionNonce": 18531604, + "index": "b8S", + "isDeleted": false, + "id": "AxfPS9UE73mSCKo93B-Kk", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 5.863427300514742, + "x": 20564.650235356094, + "y": 5999.738379789802, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 312.43182373046875, + "height": 60, + "seed": 1343648222, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "compare validator set from header at \nheight 3378 against validator set\nstored at header 89", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "compare validator set from header at \nheight 3378 against validator set\nstored at header 89", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 911, + "versionNonce": 1185859116, + "index": "b8T", + "isDeleted": false, + "id": "lWuyRdMyqfTLU8GJ-YBSA", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20856.95309035175, + "y": 5729.310571692307, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 158.59467605439204, + "height": 70, + "seed": 321832578, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "x4nbCAu7iJ7jJI109_GP_" + }, + { + "id": "lhxktISSSc612g2bs36J-", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 810, + "versionNonce": 1428750996, + "index": "b8U", + "isDeleted": false, + "id": "x4nbCAu7iJ7jJI109_GP_", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20899.83445090092, + "y": 5734.310571692307, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 341222978, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n3378", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "lWuyRdMyqfTLU8GJ-YBSA", + "originalText": "header\nat height\n3378", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 596, + "versionNonce": 801972396, + "index": "b8V", + "isDeleted": false, + "id": "lhxktISSSc612g2bs36J-", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20812.707159451307, + "y": 5764.405122684196, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 38.58782777598026, + "height": 0.8017534558757689, + "seed": 576715906, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "EYaBl5aqS9RX7u4UbI4Yk", + "focus": 0.03796916057940455, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "lWuyRdMyqfTLU8GJ-YBSA", + "focus": 0.0674629039244055, + "gap": 5.658103124462286, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 38.58782777598026, + -0.8017534558757689 + ] + ] + }, + { + "type": "rectangle", + "version": 1109, + "versionNonce": 1469288468, + "index": "b8W", + "isDeleted": false, + "id": "JsjbWwrHbBiJgqJoJ4Dcc", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 20018.042438585733, + "y": 6376.227386146207, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 642.8070617965972, + "height": 146.72021771844172, + "seed": 762426398, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 755, + "versionNonce": 1228679980, + "index": "b8X", + "isDeleted": false, + "id": "j30QQ3oyRVhjDA9bRsrKF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20031.70431826769, + "y": 6421.58579670875, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 1134657630, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "bunEbkakgiaR2-5DLPi0L" + }, + { + "id": "JpAbHsXpYjgfKinlDx--N", + "type": "arrow" + }, + { + "id": "JEPKBVIFlq785p6VgV_Op", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 791, + "versionNonce": 407924116, + "index": "b8Y", + "isDeleted": false, + "id": "bunEbkakgiaR2-5DLPi0L", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20041.80168223483, + "y": 6426.58579670875, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 138.3999481201172, + "height": 60, + "seed": 1385022622, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "a header from \n3. January 2023\nsigned by Vm", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "j30QQ3oyRVhjDA9bRsrKF", + "originalText": "a header from \n3. January 2023\nsigned by Vm", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 514, + "versionNonce": 627434924, + "index": "b8Z", + "isDeleted": false, + "id": "JpAbHsXpYjgfKinlDx--N", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20191.298994322082, + "y": 6469.341891509548, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 36.11992478949105, + "height": 2.577157812036603, + "seed": 2078769374, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "j30QQ3oyRVhjDA9bRsrKF", + "focus": -0.009969635202956725, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "wuhX0S-fD-0GO2O-JqaGD", + "focus": -0.2435056076792623, + "gap": 3.496771740623444, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 36.11992478949105, + 2.577157812036603 + ] + ] + }, + { + "type": "rectangle", + "version": 795, + "versionNonce": 949328660, + "index": "b8a", + "isDeleted": false, + "id": "wuhX0S-fD-0GO2O-JqaGD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20230.915690852198, + "y": 6420.490936907342, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 54506782, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "mYc6r8k1-euWOOtq1AqgD" + }, + { + "id": "JpAbHsXpYjgfKinlDx--N", + "type": "arrow" + }, + { + "id": "aab25dc4TWbMdH-L-qL6a", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 698, + "versionNonce": 2037665836, + "index": "b8b", + "isDeleted": false, + "id": "mYc6r8k1-euWOOtq1AqgD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20241.34105774902, + "y": 6435.490936907342, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 137.7439422607422, + "height": 40, + "seed": 302473566, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "a header from \n4. January 2023", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "wuhX0S-fD-0GO2O-JqaGD", + "originalText": "a header from \n4. January 2023", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 662, + "versionNonce": 1121523860, + "index": "b8c", + "isDeleted": false, + "id": "aab25dc4TWbMdH-L-qL6a", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20391.152788989493, + "y": 6455.952658996448, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 30.313617628879, + "height": 0.43998253461541026, + "seed": 2073003422, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "wuhX0S-fD-0GO2O-JqaGD", + "focus": -0.01976868854134297, + "gap": 1.6424220829048863, + "fixedPoint": null + }, + "endBinding": { + "elementId": "FcHeyx8qW-WQ-uUJHADVp", + "focus": -0.21457372145496534, + "gap": 7.2883051303251705, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 30.313617628879, + 0.43998253461541026 + ] + ] + }, + { + "type": "text", + "version": 177, + "versionNonce": 1162963628, + "index": "b8d", + "isDeleted": false, + "id": "FcHeyx8qW-WQ-uUJHADVp", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20428.754711748697, + "y": 6444.4276552290985, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 17375710, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "aab25dc4TWbMdH-L-qL6a", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 548, + "versionNonce": 47244820, + "index": "b8e", + "isDeleted": false, + "id": "0qFJy7wdFxZEJM76WaHOr", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20459.454391157735, + "y": 6454.407863125291, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 30.791887411458447, + "height": 0.8934135477538803, + "seed": 361051678, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "Fw-b40F9leShuX5QFjcNi", + "focus": -0.025970751985351974, + "gap": 1.000000000001819, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 30.791887411458447, + -0.8934135477538803 + ] + ] + }, + { + "type": "rectangle", + "version": 869, + "versionNonce": 2074555692, + "index": "b8f", + "isDeleted": false, + "id": "Fw-b40F9leShuX5QFjcNi", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20491.246278569193, + "y": 6415.215927115832, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 569688670, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ZxDxjm6_zvMDRVCi-eLwR" + }, + { + "id": "0qFJy7wdFxZEJM76WaHOr", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 811, + "versionNonce": 1567818644, + "index": "b8g", + "isDeleted": false, + "id": "ZxDxjm6_zvMDRVCi-eLwR", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20499.015654865434, + "y": 6430.215927115832, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 143.05592346191406, + "height": 40, + "seed": 1227409054, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "a header from \n3. February 2023", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Fw-b40F9leShuX5QFjcNi", + "originalText": "a header from \n3. February 2023", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 160, + "versionNonce": 702525356, + "index": "b8h", + "isDeleted": false, + "id": "f9Lj9KJ0xhcGXPlqqOrVt", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20043.140899610473, + "y": 6390.879550783716, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 393.2797546386719, + "height": 20, + "seed": 735199966, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "internal state of light client that tracks Stride ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "internal state of light client that tracks Stride ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1273, + "versionNonce": 687173908, + "index": "b8i", + "isDeleted": false, + "id": "dr-C5qJTTjNBk139hzYmq", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20753.82828251446, + "y": 6414.641818979236, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e03131", + "width": 158.59467605439204, + "height": 70, + "seed": 746731294, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "dE-bYDPDswGGRx3XcBnKT" + }, + { + "id": "JEPKBVIFlq785p6VgV_Op", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1190, + "versionNonce": 539286060, + "index": "b8j", + "isDeleted": false, + "id": "dE-bYDPDswGGRx3XcBnKT", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20765.365656552396, + "y": 6419.641818979236, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 135.51992797851562, + "height": 60, + "seed": 866755422, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "bogus header\n4. Febuary 2023\nsigned by Vm", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "dr-C5qJTTjNBk139hzYmq", + "originalText": "bogus header\n4. Febuary 2023\nsigned by Vm", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1132, + "versionNonce": 80621204, + "index": "b8k", + "isDeleted": false, + "id": "JEPKBVIFlq785p6VgV_Op", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20838.52208229295, + "y": 6486.23943003159, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 694.7259731174381, + "height": 184.8525912805162, + "seed": 1939441566, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "dr-C5qJTTjNBk139hzYmq", + "focus": -0.4752018073166667, + "gap": 1.5976110523542957, + "fixedPoint": null + }, + "endBinding": { + "elementId": "j30QQ3oyRVhjDA9bRsrKF", + "focus": 0.41677412444430506, + "gap": 8.100918647221079, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -298.9203965711083, + 184.8525912805162 + ], + [ + -694.7259731174381, + 13.447285324381482 + ] + ] + }, + { + "type": "text", + "version": 1154, + "versionNonce": 425768108, + "index": "b8l", + "isDeleted": false, + "id": "LvTsCM69403jtM_wkdlrM", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0.4017093864248764, + "x": 20259.971916294435, + "y": 6661.662171482878, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 302.2197265625, + "height": 50, + "seed": 746775518, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "use the 3. January 2023\nheader as the trusted header", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "use the 3. January 2023\nheader as the trusted header", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 672, + "versionNonce": 833829908, + "index": "b8m", + "isDeleted": false, + "id": "A48ITRWFPa_d-AYSVGNhd", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17627.59127070417, + "y": 6082.534700592714, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189522, + "height": 299.9367497639638, + "seed": 1021106142, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "mb7rQVD_ARXfQ5a0mSD6T", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 399, + "versionNonce": 1664958252, + "index": "b8n", + "isDeleted": false, + "id": "pjU1ttIRppBPeBAoTkpP7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17637.883848846384, + "y": 6090.239062686547, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 1232219166, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ES_DlKKZ865ptzrUAP2Vh" + }, + { + "id": "mb7rQVD_ARXfQ5a0mSD6T", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 146, + "versionNonce": 1771739540, + "index": "b8o", + "isDeleted": false, + "id": "ES_DlKKZ865ptzrUAP2Vh", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17662.19851295587, + "y": 6105.239062686547, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 40, + "seed": 2027092062, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "pjU1ttIRppBPeBAoTkpP7", + "originalText": "Validator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1045, + "versionNonce": 103053740, + "index": "b8p", + "isDeleted": false, + "id": "MAxf6fHAdJ5l80Pko4Ebg", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17981.90860407803, + "y": 6081.533799430844, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189496, + "height": 304.410519609004, + "seed": 1061432606, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "mb7rQVD_ARXfQ5a0mSD6T", + "type": "arrow" + }, + { + "id": "jwApWzwPgxbp9QPcMyoDZ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 728, + "versionNonce": 934954772, + "index": "b8q", + "isDeleted": false, + "id": "31m0UIIRyol8ySEHQq-ts", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17996.425998396193, + "y": 6109.036219218102, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 1186781534, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "BGynG3wokRe7uunAQzSTY" + }, + { + "id": "mb7rQVD_ARXfQ5a0mSD6T", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 500, + "versionNonce": 1832936492, + "index": "b8r", + "isDeleted": false, + "id": "BGynG3wokRe7uunAQzSTY", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18020.74066250568, + "y": 6124.036219218102, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 40, + "seed": 1792408990, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "31m0UIIRyol8ySEHQq-ts", + "originalText": "Validator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 2602, + "versionNonce": 1351107732, + "index": "b8s", + "isDeleted": false, + "id": "mb7rQVD_ARXfQ5a0mSD6T", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17859.645577445564, + "y": 6127.972023806989, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 121.6687073115645, + "height": 23.433176671102956, + "seed": 1949186654, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "pjU1ttIRppBPeBAoTkpP7", + "focus": -0.36952284787164413, + "gap": 16.636520253254275, + "fixedPoint": null + }, + "endBinding": { + "elementId": "31m0UIIRyol8ySEHQq-ts", + "focus": -0.5485113112510734, + "gap": 15.111713639063964, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 121.6687073115645, + 23.433176671102956 + ] + ] + }, + { + "type": "text", + "version": 349, + "versionNonce": 242941612, + "index": "b8t", + "isDeleted": false, + "id": "RKyEt5s2gfelTko664Ue7", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18040.4094522648, + "y": 6054.269285573024, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 20, + "seed": 1745730270, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 135, + "versionNonce": 1773834772, + "index": "b8u", + "isDeleted": false, + "id": "gVs30YOO_3yuApaSNQido", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17679.687697228648, + "y": 6056.434913323099, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.82392883300781, + "height": 20, + "seed": 1319599198, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "provider chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 480, + "versionNonce": 310266156, + "index": "b8v", + "isDeleted": false, + "id": "dd45-6Mrh-O_5c3Op9ZBE", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17637.34398388759, + "y": 6230.859525940146, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 1939427934, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "9OstZPVMKOJrM1S1h3V6n" + }, + { + "id": "jwApWzwPgxbp9QPcMyoDZ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 308, + "versionNonce": 306655124, + "index": "b8w", + "isDeleted": false, + "id": "9OstZPVMKOJrM1S1h3V6n", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17656.16264579981, + "y": 6245.859525940146, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 167.48788452148438, + "height": 40, + "seed": 398153374, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "new Validator V' joins\nthe validator set", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "dd45-6Mrh-O_5c3Op9ZBE", + "originalText": "new Validator V' joins\nthe validator set", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 75, + "versionNonce": 2092188588, + "index": "b8x", + "isDeleted": false, + "id": "IGf-sAr7K6xLOzsuQCvkW", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17725.16604906368, + "y": 6183.733978030588, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 360661122, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1562, + "versionNonce": 174333204, + "index": "b8y", + "isDeleted": false, + "id": "EZgEqR2IvKX6axQyMnQEp", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.18351802102541015, + "x": 17881.05480467639, + "y": 6109.849613105694, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 73.96746826171875, + "height": 17.79497140360356, + "seed": 91438750, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "mb7rQVD_ARXfQ5a0mSD6T", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 14.235977122882849, + "fontFamily": 1, + "text": "VSCPacket", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1842, + "versionNonce": 1397157420, + "index": "b8z", + "isDeleted": false, + "id": "Cd_JcDA0Jo2y9txh2FDaE", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.07354736149085461, + "x": 17877.77390760082, + "y": 6238.86033933543, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 73.96746826171875, + "height": 17.79497140360356, + "seed": 372283678, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "jwApWzwPgxbp9QPcMyoDZ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 14.235977122882849, + "fontFamily": 1, + "text": "VSCPacket", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 3168, + "versionNonce": 461855380, + "index": "b90", + "isDeleted": false, + "id": "jwApWzwPgxbp9QPcMyoDZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17857.830754124563, + "y": 6264.497746670951, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 124.79944357023123, + "height": 10.443964982850048, + "seed": 735821698, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "dd45-6Mrh-O_5c3Op9ZBE", + "focus": -0.2574467964713553, + "gap": 15.36156189104804, + "fixedPoint": null + }, + "endBinding": { + "elementId": "PS4FXybLIROB8nBb4O4yp", + "focus": -0.05034159969650953, + "gap": 10.585430973344046, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 124.79944357023123, + 10.443964982850048 + ] + ] + }, + { + "type": "rectangle", + "version": 833, + "versionNonce": 1193298092, + "index": "b91", + "isDeleted": false, + "id": "PS4FXybLIROB8nBb4O4yp", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17993.21562866814, + "y": 6247.216576377248, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 2023990466, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "8Fvtonh9OiWuBpFXmga1K" + }, + { + "id": "jwApWzwPgxbp9QPcMyoDZ", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 605, + "versionNonce": 1885792276, + "index": "b92", + "isDeleted": false, + "id": "8Fvtonh9OiWuBpFXmga1K", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18012.03429058036, + "y": 6262.216576377248, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 167.48788452148438, + "height": 40, + "seed": 739622018, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "new Validator V' joins\nthe validator set", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "PS4FXybLIROB8nBb4O4yp", + "originalText": "new Validator V' joins\nthe validator set", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 165, + "versionNonce": 1542083372, + "index": "b93", + "isDeleted": false, + "id": "JQpjtKdIdpNAm7HQhhR8Z", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18093.218730301014, + "y": 6201.440144816609, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 1568391582, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 246, + "versionNonce": 1828242836, + "index": "b94", + "isDeleted": false, + "id": "k7W312UzfWK6kp0SeD-o1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17723.446793801213, + "y": 6334.681157902073, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 1307989086, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 319, + "versionNonce": 269421996, + "index": "b95", + "isDeleted": false, + "id": "eWb6oK5ZwFTZkKvL04LJN", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18094.73482393725, + "y": 6338.533610240697, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 255912158, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 152, + "versionNonce": 108196628, + "index": "b96", + "isDeleted": false, + "id": "qLUn2Jw5x-rOwdQ04JXri", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17584.112094936096, + "y": 6293.799328596407, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 0.15745026037984644, + "height": 50.29012106908067, + "seed": 1982214210, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "FJLkgLAZXD1XcwJGXXwnU", + "focus": 0.1439043098644823, + "gap": 11.177691075346956, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0.15745026037984644, + 50.29012106908067 + ] + ] + }, + { + "type": "text", + "version": 93, + "versionNonce": 79198252, + "index": "b97", + "isDeleted": false, + "id": "FJLkgLAZXD1XcwJGXXwnU", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17570.5993291843, + "y": 6262.62163752106, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 31.423980712890625, + "height": 20, + "seed": 1474281246, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "qLUn2Jw5x-rOwdQ04JXri", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "time", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 721, + "versionNonce": 457928852, + "index": "b98", + "isDeleted": false, + "id": "n91UQ0GMMsKC_HizJucIl", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17732.337212684462, + "y": 6650.139717865368, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189522, + "height": 484.6462213510208, + "seed": 347974878, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "mRrsyqp8h4ukchI5_JXXe", + "type": "arrow" + }, + { + "id": "bSr_J5TFAsoFT0E4tYZuq", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 401, + "versionNonce": 634426028, + "index": "b99", + "isDeleted": false, + "id": "RiU6XDcTo6wQrIc7N5pQN", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17742.78724108706, + "y": 6658.155258704179, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 2020630814, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "mIllKYuNwuAQn1llcMuPD" + }, + { + "id": "mRrsyqp8h4ukchI5_JXXe", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 147, + "versionNonce": 1261977108, + "index": "b9A", + "isDeleted": false, + "id": "mIllKYuNwuAQn1llcMuPD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17767.101905196545, + "y": 6673.155258704179, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 40, + "seed": 1950518622, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "RiU6XDcTo6wQrIc7N5pQN", + "originalText": "Validator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1146, + "versionNonce": 1375821100, + "index": "b9B", + "isDeleted": false, + "id": "L2UtNipH2C1uEVB-IfBnQ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18111.312106194473, + "y": 6649.526181058335, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 229.22940624189496, + "height": 393.4562604142475, + "seed": 1166356894, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "mRrsyqp8h4ukchI5_JXXe", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 769, + "versionNonce": 1328503700, + "index": "b9C", + "isDeleted": false, + "id": "_z8DD8lhZ2cecANe1IYu4", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18125.82950051263, + "y": 6677.028600845594, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 1466519006, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Bwak-m4Lx3rKo4TZHeySx" + }, + { + "id": "mRrsyqp8h4ukchI5_JXXe", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 541, + "versionNonce": 45406124, + "index": "b9D", + "isDeleted": false, + "id": "Bwak-m4Lx3rKo4TZHeySx", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18150.144164622117, + "y": 6692.028600845594, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 156.49588012695312, + "height": 40, + "seed": 117432862, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Validator V starts \nunbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "_z8DD8lhZ2cecANe1IYu4", + "originalText": "Validator V starts unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 2678, + "versionNonce": 1365690644, + "index": "b9E", + "isDeleted": false, + "id": "mRrsyqp8h4ukchI5_JXXe", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17964.54896968624, + "y": 6694.584559764767, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 146.1688171873284, + "height": 25.800866219398813, + "seed": 1731849822, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "RiU6XDcTo6wQrIc7N5pQN", + "focus": -0.36952284787164413, + "gap": 16.636520253254275, + "fixedPoint": null + }, + "endBinding": { + "elementId": "_z8DD8lhZ2cecANe1IYu4", + "focus": -0.5485113112510734, + "gap": 15.111713639063964, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 146.1688171873284, + 25.800866219398813 + ] + ] + }, + { + "type": "text", + "version": 389, + "versionNonce": 1947533868, + "index": "b9F", + "isDeleted": false, + "id": "QmY9qh3pCyzJjWabTAa6j", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18169.812954381243, + "y": 6622.261667200516, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.48794555664062, + "height": 20, + "seed": 82342558, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "consumer chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 137, + "versionNonce": 1163167380, + "index": "b9G", + "isDeleted": false, + "id": "r4IJQkxO8FH8YWy6K5VSv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17784.9022682143, + "y": 6624.3511093407305, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.82392883300781, + "height": 20, + "seed": 716992222, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "provider chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 133, + "versionNonce": 1292623020, + "index": "b9H", + "isDeleted": false, + "id": "4AwJ1mc01zvwKjrhdvZ6h", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17831.282149766015, + "y": 6856.014301476132, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 1814246302, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1565, + "versionNonce": 1068405780, + "index": "b9I", + "isDeleted": false, + "id": "74w-220_s9V-_ojh9rJfW", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.18351802102541015, + "x": 17986.10430684068, + "y": 6677.765809123324, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 73.96746826171875, + "height": 17.79497140360356, + "seed": 1056378846, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "mRrsyqp8h4ukchI5_JXXe", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 14.235977122882849, + "fontFamily": 1, + "text": "VSCPacket", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 940, + "versionNonce": 1195599660, + "index": "b9J", + "isDeleted": false, + "id": "c5XkW4MJ8vpvTg9P-IyqC", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18123.829439421417, + "y": 6955.311265862112, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 326464670, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "qBCjNSNsfAdwgsH47nQtz" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 762, + "versionNonce": 1315631508, + "index": "b9K", + "isDeleted": false, + "id": "qBCjNSNsfAdwgsH47nQtz", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18143.704093460103, + "y": 6970.311265862112, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 165.3759002685547, + "height": 40, + "seed": 609824990, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "unbonding period has \nelapsed", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "c5XkW4MJ8vpvTg9P-IyqC", + "originalText": "unbonding period has elapsed", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 251, + "versionNonce": 1462084012, + "index": "b9L", + "isDeleted": false, + "id": "skt4QKPLCrwcyJ8MHMuGd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18221.76387454636, + "y": 6829.4464708517435, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 301688094, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 154, + "versionNonce": 1354735380, + "index": "b9M", + "isDeleted": false, + "id": "jKa95uGeRxdL-WtNaij8B", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17689.32666592175, + "y": 6861.715524614039, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 0.15745026037984644, + "height": 50.29012106908067, + "seed": 1260573150, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "6QTeiTdvAbAde3GeOvvTQ", + "focus": 0.1439043098644823, + "gap": 11.177691075346956, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0.15745026037984644, + 50.29012106908067 + ] + ] + }, + { + "type": "text", + "version": 95, + "versionNonce": 1406962732, + "index": "b9N", + "isDeleted": false, + "id": "6QTeiTdvAbAde3GeOvvTQ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17675.81390016995, + "y": 6830.537833538692, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 31.423980712890625, + "height": 20, + "seed": 1357440542, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "jKa95uGeRxdL-WtNaij8B", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "time", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 2787, + "versionNonce": 1327668372, + "index": "b9O", + "isDeleted": false, + "id": "bSr_J5TFAsoFT0E4tYZuq", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 18108.51514797032, + "y": 6987.4554106553705, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 138.79329841549043, + "height": 59.43642430249383, + "seed": 678888770, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "Mg-EEbnXIcvviQUb6Web2", + "focus": -1.5164137397430435, + "gap": 14.12411151082415, + "fixedPoint": null + }, + "endBinding": { + "elementId": "n91UQ0GMMsKC_HizJucIl", + "focus": 0.7104461771875246, + "gap": 8.155230628472054, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -138.79329841549043, + 59.43642430249383 + ] + ] + }, + { + "type": "text", + "version": 1739, + "versionNonce": 525477548, + "index": "b9P", + "isDeleted": false, + "id": "Mg-EEbnXIcvviQUb6Web2", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.931561492677185, + "x": 17961.813093535744, + "y": 6992.570658667509, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 132.48118591308594, + "height": 17.79497140360356, + "seed": 1331934110, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "bSr_J5TFAsoFT0E4tYZuq", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 14.235977122882849, + "fontFamily": 1, + "text": "VSCMaturedPacket", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCMaturedPacket", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1086, + "versionNonce": 1397352980, + "index": "b9Q", + "isDeleted": false, + "id": "xBc6ahit2CGywOk3qJB06", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17744.16636699379, + "y": 7030.351315818838, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffffff", + "width": 205.1252083459257, + "height": 70, + "seed": 1305542430, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "MR48k7XHh4qYofe1AGvc5" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 941, + "versionNonce": 1311797548, + "index": "b9R", + "isDeleted": false, + "id": "MR48k7XHh4qYofe1AGvc5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 17749.60901419654, + "y": 7045.351315818838, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 194.2399139404297, + "height": 40, + "seed": 1340042078, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "only now can V complete \nthe unbonding", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "xBc6ahit2CGywOk3qJB06", + "originalText": "only now can V complete the unbonding", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 881, + "versionNonce": 1076594580, + "index": "b9S", + "isDeleted": false, + "id": "F-bpXho6oriiVBTyydaxa", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 20599.636648660242, + "y": 4706.211687337862, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 660.902764751172, + "height": 117.69927685466696, + "seed": 531296303, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 738, + "versionNonce": 1340173228, + "index": "b9T", + "isDeleted": false, + "id": "dsN05Ov6a7mTKjj8e5o_d", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20614.45708410776, + "y": 4750.617103751631, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 1281036879, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "LTM8c3Z5j9IGh7EUwijzr" + }, + { + "id": "J7tT6DQDvbG9D6Q5zMQgh", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 629, + "versionNonce": 704476436, + "index": "b9U", + "isDeleted": false, + "id": "LTM8c3Z5j9IGh7EUwijzr", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20657.338444656925, + "y": 4755.617103751631, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 1325527151, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n73 ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "dsN05Ov6a7mTKjj8e5o_d", + "originalText": "header\nat height\n73 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 503, + "versionNonce": 378476076, + "index": "b9V", + "isDeleted": false, + "id": "J7tT6DQDvbG9D6Q5zMQgh", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20774.051760162154, + "y": 4789.0554250450205, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 35.35223505854083, + "height": 1.6839830044655173, + "seed": 828902031, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "dsN05Ov6a7mTKjj8e5o_d", + "focus": -0.009969635202918744, + "gap": 1.000000000005457, + "fixedPoint": null + }, + "endBinding": { + "elementId": "BcwX_SWird7xuQQe38fHZ", + "focus": -0.2435056076792623, + "gap": 3.496771740623444, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 35.35223505854083, + 1.6839830044655173 + ] + ] + }, + { + "type": "rectangle", + "version": 788, + "versionNonce": 775271060, + "index": "b9W", + "isDeleted": false, + "id": "BcwX_SWird7xuQQe38fHZ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20812.90076696132, + "y": 4750.240771284616, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 809885871, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "UGWjiFvn49KRtbYPIQh_C" + }, + { + "id": "J7tT6DQDvbG9D6Q5zMQgh", + "type": "arrow" + }, + { + "id": "9FBuAthJv7NM3j1a4gwnr", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 680, + "versionNonce": 1059287212, + "index": "b9X", + "isDeleted": false, + "id": "UGWjiFvn49KRtbYPIQh_C", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20855.782127510487, + "y": 4755.240771284616, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 1564734159, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n89", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "BcwX_SWird7xuQQe38fHZ", + "originalText": "header\nat height\n89", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 657, + "versionNonce": 1267351572, + "index": "b9Y", + "isDeleted": false, + "id": "9FBuAthJv7NM3j1a4gwnr", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20973.137865098615, + "y": 4785.697030487694, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 30.835495377014013, + "height": 0.4460529497400785, + "seed": 16433391, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "BcwX_SWird7xuQQe38fHZ", + "focus": -0.01976868854139329, + "gap": 1.6424220829048863, + "fixedPoint": null + }, + "endBinding": { + "elementId": "MQtSfwm2u2tX1tBd18NwR", + "focus": -0.21457372145478512, + "gap": 7.2883051303251705, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 30.835495377014013, + 0.4460529497400785 + ] + ] + }, + { + "type": "text", + "version": 176, + "versionNonce": 961051436, + "index": "b9Z", + "isDeleted": false, + "id": "MQtSfwm2u2tX1tBd18NwR", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 21011.261665605954, + "y": 4774.177489606373, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 13.151962280273438, + "height": 20, + "seed": 1022544655, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "9FBuAthJv7NM3j1a4gwnr", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "...", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 543, + "versionNonce": 972103060, + "index": "b9a", + "isDeleted": false, + "id": "RT7alO_RWHI37vwDPIraD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 21041.961345014985, + "y": 4783.901333600565, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 31.01432589005708, + "height": 0.8981019306283997, + "seed": 1839501615, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "TTKk4gxtscRHNPzSe9ZyB", + "focus": -0.019097036718247473, + "gap": 1, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 31.01432589005708, + -0.8981019306283997 + ] + ] + }, + { + "type": "rectangle", + "version": 860, + "versionNonce": 1869100460, + "index": "b9b", + "isDeleted": false, + "id": "TTKk4gxtscRHNPzSe9ZyB", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 21073.97567090504, + "y": 4744.965761493104, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 158.59467605439204, + "height": 70, + "seed": 1282970447, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "qcEvFEg9um3-rmoeD0WHb" + }, + { + "id": "RT7alO_RWHI37vwDPIraD", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 756, + "versionNonce": 1117801236, + "index": "b9c", + "isDeleted": false, + "id": "qcEvFEg9um3-rmoeD0WHb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 21116.85703145421, + "y": 4749.965761493104, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 72.83195495605469, + "height": 60, + "seed": 1372017007, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "header\nat height\n3129", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "TTKk4gxtscRHNPzSe9ZyB", + "originalText": "header\nat height\n3129", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 159, + "versionNonce": 1856806956, + "index": "b9d", + "isDeleted": false, + "id": "ukigh86m-T0PDqKZJ2NSq", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20625.64785346773, + "y": 4720.62938516099, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fff5f5", + "width": 393.2797546386719, + "height": 20, + "seed": 1457081231, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "internal state of light client that tracks Stride ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "internal state of light client that tracks Stride ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 57, + "versionNonce": 403556500, + "index": "b9e", + "isDeleted": false, + "id": "sQyu2s-P5gKXcwonvd1Nv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17910.779613541763, + "y": 11496.40319099905, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 279663188, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "msjxjcLvMaU53bTSMBjA0" + }, + { + "id": "-tAiQ1Nkoj816GboZJlTV", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 65, + "versionNonce": 251640492, + "index": "b9f", + "isDeleted": false, + "id": "msjxjcLvMaU53bTSMBjA0", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17972.85439788365, + "y": 11543.135893234705, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 250.2358856201172, + "height": 90, + "seed": 1238799980, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 7\npublicKey: ABC", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "sQyu2s-P5gKXcwonvd1Nv", + "originalText": "power: 7\npublicKey: ABC", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 149, + "versionNonce": 770676244, + "index": "b9g", + "isDeleted": false, + "id": "FEkE9h-7NwEG8G7RpqSGw", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19991.0519361891, + "y": 11492.846294843677, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 1437984724, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "CrLD0SSny6q0wyWTeLRKu", + "type": "arrow" + }, + { + "type": "text", + "id": "4SeK43SfRy5c1XyHgmd1Z" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 30, + "versionNonce": 453739820, + "index": "b9h", + "isDeleted": false, + "id": "4SeK43SfRy5c1XyHgmd1Z", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20057.284717662333, + "y": 11539.578997079332, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 241.91989135742188, + "height": 90, + "seed": 1754785004, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 78\npublicKey: LLX", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "FEkE9h-7NwEG8G7RpqSGw", + "originalText": "power: 78\npublicKey: LLX", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 112, + "versionNonce": 289125268, + "index": "b9i", + "isDeleted": false, + "id": "zkYQ03UMIlNSpgmGWCz_p", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18308.501765324778, + "y": 11497.59548190431, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 2018047060, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "n0nunrU0NKgm663EMey5f" + }, + { + "id": "TxlhcIcET4QGiWRsZE8HL", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 27, + "versionNonce": 2017066924, + "index": "b9j", + "isDeleted": false, + "id": "n0nunrU0NKgm663EMey5f", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18369.29855741813, + "y": 11544.328184139966, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 252.7918701171875, + "height": 90, + "seed": 968553428, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 9\npublicKey: CDE", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "zkYQ03UMIlNSpgmGWCz_p", + "originalText": "power: 9\npublicKey: CDE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 150, + "versionNonce": 1076371732, + "index": "b9k", + "isDeleted": false, + "id": "ml3Z1yL52Q-sCzt4-2tMD", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18699.310452015226, + "y": 11497.905158693246, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 2022596716, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "cQvlvZbDFmPGisqm9ra60" + }, + { + "id": "9x3zeRrcXb4cTkb0tTEtL", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 36, + "versionNonce": 1320495660, + "index": "b9l", + "isDeleted": false, + "id": "cQvlvZbDFmPGisqm9ra60", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18761.36724624481, + "y": 11544.6378609289, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 250.27186584472656, + "height": 90, + "seed": 1098026964, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 13\npublicKey: DEF", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ml3Z1yL52Q-sCzt4-2tMD", + "originalText": "power: 13\npublicKey: DEF", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 176, + "versionNonce": 36363924, + "index": "b9m", + "isDeleted": false, + "id": "i6tR_GTeh1u3KBm2xJSX-", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19085.281823660363, + "y": 11497.112254381449, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 1243835116, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "mNcm9_RBRnYPAVxOxvonT" + }, + { + "id": "6Ry9OJCruZ0l64n0nNbb2", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 32, + "versionNonce": 828834988, + "index": "b9n", + "isDeleted": false, + "id": "mNcm9_RBRnYPAVxOxvonT", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19147.57261142022, + "y": 11543.844956617104, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 249.8038787841797, + "height": 90, + "seed": 1539592940, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 23\npublicKey: BCC", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "i6tR_GTeh1u3KBm2xJSX-", + "originalText": "power: 23\npublicKey: BCC", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 217, + "versionNonce": 1073343508, + "index": "b9o", + "isDeleted": false, + "id": "wOY2ZET8knJ-MWEiDsLVf", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19472.232642965857, + "y": 11495.815376858467, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 374909036, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "yGY_vn3UlAQ0AyKcilq_8" + }, + { + "id": "OBdLhBJagwnCTsr-obc2h", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 47, + "versionNonce": 1173983020, + "index": "b9p", + "isDeleted": false, + "id": "yGY_vn3UlAQ0AyKcilq_8", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19530.581437012333, + "y": 11542.548079094122, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 257.6878662109375, + "height": 90, + "seed": 61760620, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 6\npublicKey: DDE", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "wOY2ZET8knJ-MWEiDsLVf", + "originalText": "power: 6\npublicKey: DDE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 48, + "versionNonce": 1535854996, + "index": "b9q", + "isDeleted": false, + "id": "HqIXB7l6u8ubuy0j9JZRt", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17898.519086844244, + "y": 11460.461764784304, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 1964.6689741876107, + "height": 0, + "seed": 1496620244, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1964.6689741876107, + 0 + ] + ] + }, + { + "type": "text", + "version": 72, + "versionNonce": 1826015660, + "index": "b9r", + "isDeleted": false, + "id": "bJ7Z1CBupwKcoeU9FR9MR", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18038.357017717648, + "y": 11391.995203500868, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 335.6998596191406, + "height": 45, + "seed": 2043402348, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "opted-in validators", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "opted-in validators", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 108, + "versionNonce": 135591700, + "index": "b9s", + "isDeleted": false, + "id": "czhBWDEMiFeB-Qj3r_MqP", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20002.527521432705, + "y": 11380.958845427453, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 443.55584716796875, + "height": 45, + "seed": 1560956012, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "to-be-opted-in validators", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "to-be-opted-in validators", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 250, + "versionNonce": 1764275244, + "index": "b9t", + "isDeleted": false, + "id": "ac3UYKPSWtXlLOfXqLqQf", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20010.27088868997, + "y": 11450.690965977128, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 454.9157339374069, + "height": 0.6658911467784492, + "seed": 1686990956, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 454.9157339374069, + -0.6658911467784492 + ] + ] + }, + { + "type": "arrow", + "version": 149, + "versionNonce": 571274388, + "index": "b9u", + "isDeleted": false, + "id": "wYEDxQIof5oMJxTmSXrkV", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17300.5949879092, + "y": 11203.455900417362, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 569.5017550364355, + "height": 394.1973652720626, + "seed": 1245407468, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "VRaEhhoWV9n_JAdrbBgo0", + "gap": 4.43707665130205, + "focus": -0.6269647494413619, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 569.5017550364355, + 394.1973652720626 + ] + ] + }, + { + "type": "rectangle", + "version": 160, + "versionNonce": 148459180, + "index": "b9v", + "isDeleted": false, + "id": "VRaEhhoWV9n_JAdrbBgo0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 16773.86190484454, + "y": 11041.409996753693, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 522.2960064133586, + "height": 490.8079260469092, + "seed": 407111892, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "wYEDxQIof5oMJxTmSXrkV", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "line", + "version": 102, + "versionNonce": 120144404, + "index": "b9w", + "isDeleted": false, + "id": "oKSZnlSsrQFyYod66XnOT", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17360.399924467845, + "y": 11934.60634176899, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 3098.78049187523, + "height": 1.2197016054851701, + "seed": 1081791852, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 3098.78049187523, + -1.2197016054851701 + ] + ] + }, + { + "type": "arrow", + "version": 52, + "versionNonce": 1284675884, + "index": "b9x", + "isDeleted": false, + "id": "-tAiQ1Nkoj816GboZJlTV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18082.199555648538, + "y": 11696.105230534411, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 0.7186349999865342, + "height": 289.0890594447483, + "seed": 792905044, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "sQyu2s-P5gKXcwonvd1Nv", + "focus": 0.08272503115772649, + "gap": 16.23663506404864, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -0.7186349999865342, + 289.0890594447483 + ] + ] + }, + { + "type": "text", + "version": 110, + "versionNonce": 1851776916, + "index": "b9y", + "isDeleted": false, + "id": "T3r-lSRjpjmoMBauhsNuc", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17818.11201757592, + "y": 11735.326878377797, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 248.5799102783203, + "height": 135, + "seed": 1316574956, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "did NO change\npower\nor publicKey", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "did NO change\npower\nor publicKey", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 60, + "versionNonce": 264147884, + "index": "b9z", + "isDeleted": false, + "id": "baVZEH3Qn1Zx2GQxM3Uqs", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17984.448096218057, + "y": 12018.310836813473, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 190.04393005371094, + "height": 90, + "seed": 1075303508, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "NO update\ngenerated", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "NO update\ngenerated", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 31, + "versionNonce": 1072090388, + "index": "bA0", + "isDeleted": false, + "id": "CM9wCHmCIhPhslBJlMzBG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17960.967809045043, + "y": 12013.161718143834, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 248.3576188032239, + "height": 114.84314738341527, + "seed": 809899628, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "S80ceLwlIRZT6TkuZbwYR", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "arrow", + "version": 143, + "versionNonce": 814169644, + "index": "bA1", + "isDeleted": false, + "id": "TxlhcIcET4QGiWRsZE8HL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18476.47723477462, + "y": 11691.549480213384, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 2.189763964383019, + "height": 276.1931873348731, + "seed": 1873487316, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "zkYQ03UMIlNSpgmGWCz_p", + "gap": 10.488593837762892, + "focus": 0.11300394577596834, + "fixedPoint": null + }, + "endBinding": { + "elementId": "7-wH_vW9aCi2dFbd5sZ10", + "gap": 23.30948662805804, + "focus": -0.08023372712381609, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 2.189763964383019, + 276.1931873348731 + ] + ] + }, + { + "type": "rectangle", + "version": 116, + "versionNonce": 1832127124, + "index": "bA2", + "isDeleted": false, + "id": "7-wH_vW9aCi2dFbd5sZ10", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18332.84493908475, + "y": 11991.052154176314, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 318.73110494884537, + "height": 133.619959126223, + "seed": 2087733460, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "TxlhcIcET4QGiWRsZE8HL", + "type": "arrow" + }, + { + "id": "Jabp7DSoy6JrxcLd3_v73", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 140, + "versionNonce": 936810668, + "index": "bA3", + "isDeleted": false, + "id": "dfOglHwiaswXQUzcgYgEY", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18351.244067051277, + "y": 12009.097144955831, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 252.7918701171875, + "height": 90, + "seed": 1331549012, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 0\npublicKey: CDE", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "power: 0\npublicKey: CDE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 207, + "versionNonce": 1224579092, + "index": "bA4", + "isDeleted": false, + "id": "9x3zeRrcXb4cTkb0tTEtL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18893.22156048775, + "y": 11698.636935488497, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 2.189763964383019, + "height": 276.1931873348731, + "seed": 1195272660, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "ml3Z1yL52Q-sCzt4-2tMD", + "focus": -0.03115259091119511, + "gap": 17.266372323939322, + "fixedPoint": null + }, + "endBinding": { + "elementId": "YrseiQj_EZInDkF6ibNZo", + "focus": -0.004631476534573674, + "gap": 19.347104655640578, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 2.189763964383019, + 276.1931873348731 + ] + ] + }, + { + "type": "text", + "version": 145, + "versionNonce": 22455084, + "index": "bA5", + "isDeleted": false, + "id": "BpXMiHMBjHpAnntMSq4Xs", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18254.19400477019, + "y": 11747.536026541611, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 212.47193908691406, + "height": 135, + "seed": 256040940, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "was set\nto be opted\nout", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "was set\nto be opted\nout", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 198, + "versionNonce": 1597601172, + "index": "bA6", + "isDeleted": false, + "id": "f8yk7stZv9gs6E2NYwn9X", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18684.089016414688, + "y": 11737.020220807843, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 190.58395385742188, + "height": 135, + "seed": 396948204, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "ONLY\nchanged\npower to 11", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "ONLY\nchanged\npower to 11", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 168, + "versionNonce": 1668373932, + "index": "bA7", + "isDeleted": false, + "id": "YrseiQj_EZInDkF6ibNZo", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18737.4694089863, + "y": 11994.177227479011, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 318.73110494884537, + "height": 133.619959126223, + "seed": 152773844, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "9x3zeRrcXb4cTkb0tTEtL", + "type": "arrow" + }, + { + "type": "text", + "id": "1gmT_8T3u_gIyuY22ZMNn" + }, + { + "id": "JBW9igfUjlthWLGsNu7Iv", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 32, + "versionNonce": 1293787924, + "index": "bA8", + "isDeleted": false, + "id": "1gmT_8T3u_gIyuY22ZMNn", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18771.69902853836, + "y": 12015.987207042122, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 250.27186584472656, + "height": 90, + "seed": 754652652, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 11\npublicKey: DEF", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "YrseiQj_EZInDkF6ibNZo", + "originalText": "power: 11\npublicKey: DEF", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 210, + "versionNonce": 1464911916, + "index": "bA9", + "isDeleted": false, + "id": "gcHEw6hbaZZKJxXxs0fKb", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19115.41867512682, + "y": 11988.091905414889, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 318.73110494884537, + "height": 133.619959126223, + "seed": 1030293100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "255lSIAxNiAFR3DrZ7RRJ" + }, + { + "id": "6Ry9OJCruZ0l64n0nNbb2", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 84, + "versionNonce": 421535892, + "index": "bAA", + "isDeleted": false, + "id": "255lSIAxNiAFR3DrZ7RRJ", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19149.882288209155, + "y": 12009.901884978, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 249.8038787841797, + "height": 90, + "seed": 232085740, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 0\npublicKey: BCC", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "gcHEw6hbaZZKJxXxs0fKb", + "originalText": "power: 0\npublicKey: BCC", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 268, + "versionNonce": 551477932, + "index": "bAB", + "isDeleted": false, + "id": "KmmmrmePfysYbxKMVn93d", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19088.053917586378, + "y": 11745.050472459088, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 150.55191040039062, + "height": 180, + "seed": 2071760236, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "ONLY\nchanged\npublicKey\nto EEF", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "ONLY\nchanged\npublicKey\nto EEF", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 242, + "versionNonce": 183954964, + "index": "bAC", + "isDeleted": false, + "id": "6Ry9OJCruZ0l64n0nNbb2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19275.574938371312, + "y": 11692.999936176666, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 2.189763964383019, + "height": 276.1931873348731, + "seed": 203892436, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "i6tR_GTeh1u3KBm2xJSX-", + "focus": -0.012104125660330676, + "gap": 12.42227732390711, + "fixedPoint": null + }, + "endBinding": { + "elementId": "gcHEw6hbaZZKJxXxs0fKb", + "focus": 0.022890024865780942, + "gap": 18.898781903350027, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 2.189763964383019, + 276.1931873348731 + ] + ] + }, + { + "type": "rectangle", + "version": 247, + "versionNonce": 1992666412, + "index": "bAD", + "isDeleted": false, + "id": "JXfKWizn1fUTrlOgFD5RU", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19124.984898154136, + "y": 12156.12063577908, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 318.73110494884537, + "height": 133.619959126223, + "seed": 1843151852, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "YZfv3Dq5DFCpHkiZkMEvH" + }, + { + "id": "Pjr1OiD0yNhbkS8uRdE6h", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 122, + "versionNonce": 60296084, + "index": "bAE", + "isDeleted": false, + "id": "YZfv3Dq5DFCpHkiZkMEvH", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19161.122514837545, + "y": 12177.930615342191, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 246.45587158203125, + "height": 90, + "seed": 402974316, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 23\npublicKey: EEF", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "JXfKWizn1fUTrlOgFD5RU", + "originalText": "power: 23\npublicKey: EEF", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 283, + "versionNonce": 711927724, + "index": "bAF", + "isDeleted": false, + "id": "OBdLhBJagwnCTsr-obc2h", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19660.80285625484, + "y": 11688.958438424439, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 2.189763964383019, + "height": 276.1931873348731, + "seed": 1277913428, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "wOY2ZET8knJ-MWEiDsLVf", + "focus": -0.003051651913714151, + "gap": 9.677657094662209, + "fixedPoint": null + }, + "endBinding": { + "elementId": "KKcmUuJL863OZvRV41Aps", + "focus": -0.03168251270147107, + "gap": 23.058953325300536, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 2.189763964383019, + 276.1931873348731 + ] + ] + }, + { + "type": "text", + "version": 454, + "versionNonce": 1429829908, + "index": "bAG", + "isDeleted": false, + "id": "OOzD3aW2GddZUQmiLzDeK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19422.57141354151, + "y": 11697.483956220969, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 229.85989379882812, + "height": 225, + "seed": 1711054572, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Changed\nboth\npower to 29\nand publicKey\nto CLB", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Changed\nboth\npower to 29\nand publicKey\nto CLB", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 282, + "versionNonce": 1342525996, + "index": "bAH", + "isDeleted": false, + "id": "KKcmUuJL863OZvRV41Aps", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19509.405465808384, + "y": 11988.210579084613, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 318.73110494884537, + "height": 133.619959126223, + "seed": 1919879148, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "2BZrRGNEnENdiVIXjFt7E" + }, + { + "id": "OBdLhBJagwnCTsr-obc2h", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 168, + "versionNonce": 458307220, + "index": "bAI", + "isDeleted": false, + "id": "2BZrRGNEnENdiVIXjFt7E", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19539.92708517734, + "y": 12010.020558647724, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 257.6878662109375, + "height": 90, + "seed": 94317164, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 0\npublicKey: DDE", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "KKcmUuJL863OZvRV41Aps", + "originalText": "power: 0\npublicKey: DDE", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 318, + "versionNonce": 1718758572, + "index": "bAJ", + "isDeleted": false, + "id": "EsLGfc_wxNA_AWDE4tjGq", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19518.9716888357, + "y": 12156.239309448802, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 318.73110494884537, + "height": 133.619959126223, + "seed": 866581740, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "b--hBfBoNvKS0rZ31KzgV" + }, + { + "id": "CBqpLrKIjDZd0DiqWo5q1", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 202, + "versionNonce": 311772180, + "index": "bAK", + "isDeleted": false, + "id": "b--hBfBoNvKS0rZ31KzgV", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19554.245299476628, + "y": 12178.049289011913, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 248.1838836669922, + "height": 90, + "seed": 638615404, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 29\npublicKey: CLB", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "EsLGfc_wxNA_AWDE4tjGq", + "originalText": "power: 29\npublicKey: CLB", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 318, + "versionNonce": 2136979244, + "index": "bAL", + "isDeleted": false, + "id": "CrLD0SSny6q0wyWTeLRKu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20176.894866934355, + "y": 11688.127722736379, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 2.189763964383019, + "height": 276.1931873348731, + "seed": 1752772308, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "FEkE9h-7NwEG8G7RpqSGw", + "focus": 0.011551562471415045, + "gap": 11.816023421389218, + "fixedPoint": null + }, + "endBinding": { + "elementId": "AETq1JI1SgPBtHZt8YOkr", + "focus": -0.15578637652196073, + "gap": 21.957925389540833, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 2.189763964383019, + 276.1931873348731 + ] + ] + }, + { + "type": "rectangle", + "version": 322, + "versionNonce": 1895539092, + "index": "bAM", + "isDeleted": false, + "id": "AETq1JI1SgPBtHZt8YOkr", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20045.3323651114, + "y": 11986.278835460793, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 318.73110494884537, + "height": 133.619959126223, + "seed": 234560084, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "r5CnLehXwNHSOD-cYwSIU" + }, + { + "id": "CrLD0SSny6q0wyWTeLRKu", + "type": "arrow" + }, + { + "id": "Iac4vxTiy7j0WOREJi0PR", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 232, + "versionNonce": 1731719596, + "index": "bAN", + "isDeleted": false, + "id": "r5CnLehXwNHSOD-cYwSIU", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20083.737971907114, + "y": 12008.088815023904, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 241.91989135742188, + "height": 90, + "seed": 634171348, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 78\npublicKey: LLX", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "AETq1JI1SgPBtHZt8YOkr", + "originalText": "power: 78\npublicKey: LLX", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 44, + "versionNonce": 1035620116, + "index": "bAO", + "isDeleted": false, + "id": "ocP7c4kxKSker7mObmScz", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19622.438743054194, + "y": 11148.24164127744, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1225.1342223650063, + "height": 231.57188751909598, + "seed": 1180537044, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "-Dlk3T1EbGcWocuVa6etm", + "focus": -0.7022661097428772, + "gap": 13.209434999034784, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -1225.1342223650063, + 231.57188751909598 + ] + ] + }, + { + "type": "arrow", + "version": 108, + "versionNonce": 1294261292, + "index": "bAP", + "isDeleted": false, + "id": "ImvBF45AbPAv8w-XlwTeT", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19624.060616540402, + "y": 11145.037452194927, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 600.231642512983, + "height": 197.7498916480963, + "seed": 2034201172, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "-Dlk3T1EbGcWocuVa6etm", + "focus": 0.6945743717984635, + "gap": 10.005245916521744, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 600.231642512983, + 197.7498916480963 + ] + ] + }, + { + "type": "text", + "version": 40, + "versionNonce": 692538516, + "index": "bAQ", + "isDeleted": false, + "id": "-Dlk3T1EbGcWocuVa6etm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19538.956185115272, + "y": 11090.032206278405, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 221.8319091796875, + "height": 45, + "seed": 1640847084, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "ocP7c4kxKSker7mObmScz", + "type": "arrow" + }, + { + "id": "ImvBF45AbPAv8w-XlwTeT", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "disjoint sets", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "disjoint sets", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 325, + "versionNonce": 1796241068, + "index": "bAR", + "isDeleted": false, + "id": "V5JAPyPcj5cXxDhhvKEfG", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 16661.49798600976, + "y": 12002.204182639429, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 811.331787109375, + "height": 360, + "seed": 1829665236, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "At the end of the epoch you can get\nthe latest publicKey through\n\nnextPuKey := GetValidatorConsumerPubKey(...)\n\nand latest power through\n\nnextPower := GetLastValidatorPower(...)", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "At the end of the epoch you can get\nthe latest publicKey through\n\nnextPuKey := GetValidatorConsumerPubKey(...)\n\nand latest power through\n\nnextPower := GetLastValidatorPower(...)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 174, + "versionNonce": 1700305428, + "index": "bAS", + "isDeleted": false, + "id": "cfw-qr6Ae-syfsqh4noj4", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17339.33205160122, + "y": 12506.20672527729, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 3129.5960881132487, + "height": 5.498546697155689, + "seed": 652217452, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 3129.5960881132487, + 5.498546697155689 + ] + ] + }, + { + "type": "arrow", + "version": 123, + "versionNonce": 765772076, + "index": "bAT", + "isDeleted": false, + "id": "S80ceLwlIRZT6TkuZbwYR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18080.475490946737, + "y": 12138.50954560449, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 1.2922244036490156, + "height": 431.62272976348686, + "seed": 1025491820, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "CM9wCHmCIhPhslBJlMzBG", + "focus": 0.039199532608742774, + "gap": 10.504680077240664, + "fixedPoint": null + }, + "endBinding": { + "elementId": "9a0lUI-6DP-fug3vaacNv", + "focus": 0.09028016426570148, + "gap": 10.801348404847886, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 1.2922244036490156, + 431.62272976348686 + ] + ] + }, + { + "type": "rectangle", + "version": 93, + "versionNonce": 2095331220, + "index": "bAU", + "isDeleted": false, + "id": "9a0lUI-6DP-fug3vaacNv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17877.95737794641, + "y": 12580.933623772824, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 191593172, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "iK1S7gmkFUQ717maFCCwd" + }, + { + "id": "S80ceLwlIRZT6TkuZbwYR", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 101, + "versionNonce": 1548467116, + "index": "bAV", + "isDeleted": false, + "id": "iK1S7gmkFUQ717maFCCwd", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 17940.0321622883, + "y": 12627.666326008479, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 250.2358856201172, + "height": 90, + "seed": 1197277268, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 7\npublicKey: ABC", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "9a0lUI-6DP-fug3vaacNv", + "originalText": "power: 7\npublicKey: ABC", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 158, + "versionNonce": 740304148, + "index": "bAW", + "isDeleted": false, + "id": "Jabp7DSoy6JrxcLd3_v73", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18488.703025320698, + "y": 12141.56539259985, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 1.2922244036490156, + "height": 431.62272976348686, + "seed": 443490772, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "7-wH_vW9aCi2dFbd5sZ10", + "focus": 0.023551842912183846, + "gap": 16.89327929731371, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 1.2922244036490156, + 431.62272976348686 + ] + ] + }, + { + "type": "line", + "version": 45, + "versionNonce": 1093625388, + "index": "bAX", + "isDeleted": false, + "id": "fJ6A00J9u0Qn7BRajYmqM", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18425.62137688138, + "y": 12601.317078578466, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 168.22651981372474, + "height": 114.48712637424796, + "seed": 1261990100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 168.22651981372474, + 114.48712637424796 + ] + ] + }, + { + "type": "line", + "version": 75, + "versionNonce": 948069012, + "index": "bAY", + "isDeleted": false, + "id": "ngFjffVxiW-g5IlleTQHs", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18438.457912156395, + "y": 12695.553861810853, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 146.04113655721085, + "height": 79.85419376014579, + "seed": 98686700, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 146.04113655721085, + -79.85419376014579 + ] + ] + }, + { + "type": "rectangle", + "version": 221, + "versionNonce": 1362739372, + "index": "bAZ", + "isDeleted": false, + "id": "W4qzRS5ui0lZdbYxwXdev", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18710.977702978296, + "y": 12581.098448314106, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 1868786028, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "UR6pouQhuMiBmrfVGN248" + }, + { + "id": "JBW9igfUjlthWLGsNu7Iv", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 108, + "versionNonce": 1220603924, + "index": "bAa", + "isDeleted": false, + "id": "UR6pouQhuMiBmrfVGN248", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18773.03449720788, + "y": 12627.83115054976, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 250.27186584472656, + "height": 90, + "seed": 2022398956, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 11\npublicKey: DEF", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "W4qzRS5ui0lZdbYxwXdev", + "originalText": "power: 11\npublicKey: DEF", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 262, + "versionNonce": 1410648876, + "index": "bAb", + "isDeleted": false, + "id": "xZTiWNHzHf_EdXIJj0HLH", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19117.26554411828, + "y": 12582.107174506744, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 302995412, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "B6noa9MLJFkzV3F0cgLrA" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 157, + "versionNonce": 1020382612, + "index": "bAc", + "isDeleted": false, + "id": "B6noa9MLJFkzV3F0cgLrA", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19181.23033547921, + "y": 12628.839876742399, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 246.45587158203125, + "height": 90, + "seed": 1736260948, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 23\npublicKey: EEF", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "xZTiWNHzHf_EdXIJj0HLH", + "originalText": "power: 23\npublicKey: EEF", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 295, + "versionNonce": 204113324, + "index": "bAd", + "isDeleted": false, + "id": "ouTsGVqUbcVTiNgnjvmcv", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19511.59274342392, + "y": 12576.24601381877, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 666668012, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "q5CIc9HOBB5XiCAQGs71E" + }, + { + "id": "CBqpLrKIjDZd0DiqWo5q1", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 195, + "versionNonce": 99285780, + "index": "bAe", + "isDeleted": false, + "id": "q5CIc9HOBB5XiCAQGs71E", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19574.69352874237, + "y": 12622.978716054426, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 248.1838836669922, + "height": 90, + "seed": 1050422892, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 29\npublicKey: CLB", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ouTsGVqUbcVTiNgnjvmcv", + "originalText": "power: 29\npublicKey: CLB", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 192, + "versionNonce": 1587867692, + "index": "bAf", + "isDeleted": false, + "id": "JBW9igfUjlthWLGsNu7Iv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 18882.86443334168, + "y": 12130.32435888444, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 1.2922244036490156, + "height": 431.62272976348686, + "seed": 1732576364, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "YrseiQj_EZInDkF6ibNZo", + "focus": 0.08885447271512065, + "gap": 2.5271722792058426, + "fixedPoint": null + }, + "endBinding": { + "elementId": "W4qzRS5ui0lZdbYxwXdev", + "focus": -0.0729823001855582, + "gap": 19.151359666179815, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 1.2922244036490156, + 431.62272976348686 + ] + ] + }, + { + "type": "arrow", + "version": 238, + "versionNonce": 2122479764, + "index": "bAg", + "isDeleted": false, + "id": "Iac4vxTiy7j0WOREJi0PR", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20210.776646668295, + "y": 12137.728277278813, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 1.2916317938834254, + "height": 430.62272976348686, + "seed": 712904940, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "AETq1JI1SgPBtHZt8YOkr", + "focus": -0.03650743086351115, + "gap": 17.82948269179724, + "fixedPoint": null + }, + "endBinding": { + "elementId": "xIcE2wd8JE18iW6h43Bx5", + "focus": -0.014712961570141264, + "gap": 13.191304253432463, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 1.2916317938834254, + 430.62272976348686 + ] + ] + }, + { + "type": "rectangle", + "version": 349, + "versionNonce": 2070809260, + "index": "bAh", + "isDeleted": false, + "id": "xIcE2wd8JE18iW6h43Bx5", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20027.948473369484, + "y": 12581.542311295732, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 374.3854543038906, + "height": 183.46540447131065, + "seed": 1724015596, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "tyuIUKHNZxJC3SF9z5CCd" + }, + { + "id": "Iac4vxTiy7j0WOREJi0PR", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 249, + "versionNonce": 1112426004, + "index": "bAi", + "isDeleted": false, + "id": "tyuIUKHNZxJC3SF9z5CCd", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 20094.18125484272, + "y": 12628.275013531387, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 241.91989135742188, + "height": 90, + "seed": 1327957612, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "power: 78\npublicKey: LLX", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "xIcE2wd8JE18iW6h43Bx5", + "originalText": "power: 78\npublicKey: LLX", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 60, + "versionNonce": 87020844, + "index": "bAj", + "isDeleted": false, + "id": "rr6A0tmWjeFX31TayYRJm", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19948.085885755216, + "y": 11313.622053324587, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 10.482840825516178, + "height": 1616.7243675420013, + "seed": 1721872852, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 10.482840825516178, + 1616.7243675420013 + ] + ] + }, + { + "type": "arrow", + "version": 252, + "versionNonce": 105145236, + "index": "bAk", + "isDeleted": false, + "id": "Pjr1OiD0yNhbkS8uRdE6h", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19284.238116261076, + "y": 12305.951500601712, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 2.189763964383019, + "height": 276.1931873348731, + "seed": 518447724, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "JXfKWizn1fUTrlOgFD5RU", + "focus": 0.004819125854274831, + "gap": 16.2109056964091, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 2.189763964383019, + 276.1931873348731 + ] + ] + }, + { + "type": "arrow", + "version": 304, + "versionNonce": 961826732, + "index": "bAl", + "isDeleted": false, + "id": "CBqpLrKIjDZd0DiqWo5q1", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 19666.373925750155, + "y": 12297.545448996347, + "strokeColor": "#1e1e1e", + "backgroundColor": "#fa5252", + "width": 2.189763964383019, + "height": 276.1931873348731, + "seed": 1493415916, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "EsLGfc_wxNA_AWDE4tjGq", + "focus": 0.07851358614830031, + "gap": 7.686180421322206, + "fixedPoint": null + }, + "endBinding": { + "elementId": "ouTsGVqUbcVTiNgnjvmcv", + "focus": -0.15684656750315842, + "gap": 2.5073774875509116, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 2.189763964383019, + 276.1931873348731 + ] + ] + }, + { + "type": "text", + "version": 105, + "versionNonce": 1889194260, + "index": "bAm", + "isDeleted": false, + "id": "Clzb8dmJQ2N8kYzcSPzA5", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 16789.711676653933, + "y": 11058.709156483914, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 479.91583251953125, + "height": 450, + "seed": 2000012628, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "powers and consumer\npublic keys the validators\nhad when they actually\nopted in to a\nconsumer chain at the\nbeginning of an epoch\nCurrently used by consumer\nchain.\nWE STORE THOSE for\neach validator", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "powers and consumer\npublic keys the validators\nhad when they actually\nopted in to a\nconsumer chain at the\nbeginning of an epoch\nCurrently used by consumer\nchain.\nWE STORE THOSE for\neach validator", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 299, + "versionNonce": 403012140, + "index": "bAn", + "isDeleted": false, + "id": "J7P51QjAq8xMPw10njNxB", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 22725.764817459127, + "y": 11485.493398492727, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 695.7514644422009, + "height": 212.58914392854425, + "seed": 41355319, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "uN0BQqk8xIhRPyWu7m5F5", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 96, + "versionNonce": 1892126356, + "index": "bAo", + "isDeleted": false, + "id": "WUN982pAz3OPpomCV0B9L", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 22752.83752802051, + "y": 11578.597804098043, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 535.787841796875, + "height": 90, + "seed": 828879129, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "OPT OUT and then\nUNBOND >1/3 of your power V", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "OPT OUT and then\nUNBOND >1/3 of your power V", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "magicframe", + "version": 3, + "versionNonce": 204297388, + "index": "bAp", + "isDeleted": false, + "id": "TiNUnzzJoT1xl6E_OcGF7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23110.03791439966, + "y": 11580.760727299888, + "strokeColor": "#bbb", + "backgroundColor": "transparent", + "width": 0.3383888297357771, + "height": 0.3331015042713261, + "seed": 820589977, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "name": null + }, + { + "type": "arrow", + "version": 79, + "versionNonce": 394304532, + "index": "bAq", + "isDeleted": false, + "id": "uN0BQqk8xIhRPyWu7m5F5", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23421.84735902516, + "y": 11701.977950901946, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 393.64138084154547, + "height": 199.56481233691557, + "seed": 994467063, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": { + "elementId": "J7P51QjAq8xMPw10njNxB", + "focus": -0.23470387673392068, + "gap": 3.895408480675542, + "fixedPoint": null + }, + "endBinding": { + "elementId": "aQwZfLADDRpAn3cS2AOIn", + "focus": -1.123673912952936, + "gap": 15.666345351621203, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 393.64138084154547, + 199.56481233691557 + ] + ] + }, + { + "type": "text", + "version": 113, + "versionNonce": 326491948, + "index": "bAr", + "isDeleted": false, + "id": "hCnRWPLApREw_d4Ul6DKi", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23500.640965857332, + "y": 11694.882360128417, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 381.2758483886719, + "height": 90, + "seed": 115606873, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "VSCPacket is delayed\nby 10 days ... ", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket is delayed\nby 10 days ... ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 110, + "versionNonce": 1857812884, + "index": "bAs", + "isDeleted": false, + "id": "EW_IWXfBk1X96sd-My_23", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 22721.32960821657, + "y": 12041.77320921173, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 711.853776604712, + "height": 167.87258350193588, + "seed": 74944279, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Z5rfh8dfUiAqC1UyYsjmu" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 127, + "versionNonce": 1716066732, + "index": "bAt", + "isDeleted": false, + "id": "Z5rfh8dfUiAqC1UyYsjmu", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 22733.00658807166, + "y": 12080.709500962697, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 688.4998168945312, + "height": 90, + "seed": 552493273, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "unbonding was successful ... we did not\nhave to look up for ... validator V", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "EW_IWXfBk1X96sd-My_23", + "originalText": "unbonding was successful ... we did not have to look up for ... validator V", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 111, + "versionNonce": 1370466068, + "index": "bAu", + "isDeleted": false, + "id": "aQwZfLADDRpAn3cS2AOIn", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23831.155085218328, + "y": 11812.372019277924, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 360.5955966876245, + "height": 80.8114824013719, + "seed": 147603351, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "-OMwOMP42uKOU_jTOkDMV" + }, + { + "id": "uN0BQqk8xIhRPyWu7m5F5", + "type": "arrow" + } + ], + "updated": 1714739836022, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 80, + "versionNonce": 533791788, + "index": "bAv", + "isDeleted": false, + "id": "-OMwOMP42uKOU_jTOkDMV", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23867.956942400033, + "y": 11830.27776047861, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 286.99188232421875, + "height": 45, + "seed": 275984665, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "V is still here ...", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "aQwZfLADDRpAn3cS2AOIn", + "originalText": "V is still here ...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 134, + "versionNonce": 1154589844, + "index": "bAw", + "isDeleted": false, + "id": "1SmQFetoSJGCGjzDfEW3Q", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 22733.60677794542, + "y": 12568.390825488685, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1159.8330012462357, + "height": 0, + "seed": 472056044, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1159.8330012462357, + 0 + ] + ] + }, + { + "type": "line", + "version": 189, + "versionNonce": 1710726828, + "index": "bAx", + "isDeleted": false, + "id": "tA-7nd0yy5CaGQs33CQQK", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23079.63579297799, + "y": 12491.999547175741, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0.740225565048604, + "height": 250.78313411276577, + "seed": 903176916, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -0.740225565048604, + 250.78313411276577 + ] + ] + }, + { + "type": "text", + "version": 43, + "versionNonce": 1305997844, + "index": "bAy", + "isDeleted": false, + "id": "9OmjYy4xVdI7KSqVWlxei", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 22828.219785020963, + "y": 12498.719737841286, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 136.00794982910156, + "height": 45, + "seed": 1654049900, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "epoch 0", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "epoch 0", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 151, + "versionNonce": 291957036, + "index": "bAz", + "isDeleted": false, + "id": "Nxc6AqOq-1TIbko2IsFIx", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23225.74534462334, + "y": 12494.857560104098, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 120.99595642089844, + "height": 45, + "seed": 2126130412, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "epoch 1", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "epoch 1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 222, + "versionNonce": 1270386580, + "index": "bB0", + "isDeleted": false, + "id": "KkDupH9HZsNWY6Z-rYviR", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23638.615007791497, + "y": 12496.200540772112, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 136.8719482421875, + "height": 45, + "seed": 219077332, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "epoch 2", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "epoch 2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 152, + "versionNonce": 1435034540, + "index": "bB1", + "isDeleted": false, + "id": "snF1ak-KmV3UdVpF63xgH", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 22731.753983149658, + "y": 12583.51257631752, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 315.10791015625, + "height": 135, + "seed": 1967151060, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "current consumer \nvalidators\nV0, V1, V2", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "current consumer \nvalidators\nV0, V1, V2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 238, + "versionNonce": 1319730452, + "index": "bB2", + "isDeleted": false, + "id": "J86QPqDuhTYs9paeDYGMN", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23131.8829123363, + "y": 12585.001598979985, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 315.10791015625, + "height": 135, + "seed": 910829908, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "current consumer \nvalidators\nV1, V2", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "current consumer \nvalidators\nV1, V2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 261, + "versionNonce": 1753714220, + "index": "bB3", + "isDeleted": false, + "id": "azuG8x6g4yBeh2DU_qO9F", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23539.04621527404, + "y": 12485.995789110653, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0.740225565048604, + "height": 250.78313411276577, + "seed": 1308131180, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -0.740225565048604, + 250.78313411276577 + ] + ] + }, + { + "type": "text", + "version": 300, + "versionNonce": 1881193108, + "index": "bB4", + "isDeleted": false, + "id": "yONQLQgSIhHKZdhjzPzID", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23592.102295428438, + "y": 12592.128913706303, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 315.10791015625, + "height": 135, + "seed": 714545900, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714739836022, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "current consumer \nvalidators\nV0, V1, V2", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "current consumer \nvalidators\nV0, V1, V2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 239, + "versionNonce": 1547484564, + "index": "bB5", + "isDeleted": false, + "id": "tEUwQ97Z_yl76NSW47ZLX", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24141.113965931218, + "y": 12511.018056872008, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 436.91285244406026, + "height": 200.68572533541555, + "seed": 718555156, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "5JazlioBp9sTaZLdwjU6m" + }, + { + "id": "d5y_nOehPhL6vkjdy2ypS", + "type": "arrow" + } + ], + "updated": 1714740224798, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 236, + "versionNonce": 1517808404, + "index": "bB5G", + "isDeleted": false, + "id": "5JazlioBp9sTaZLdwjU6m", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24181.74843170403, + "y": 12521.360919539717, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 355.6439208984375, + "height": 180, + "seed": 438022164, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714740224798, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "if Top N chain, then\nautomatically\nopt in top N% \nvalidators", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "tEUwQ97Z_yl76NSW47ZLX", + "originalText": "if Top N chain, then\nautomatically\nopt in top N% validators", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 234, + "versionNonce": 119638444, + "index": "bB8", + "isDeleted": false, + "id": "oWUYzqdFrexVBjWndosgh", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24640.718636409372, + "y": 12810.0480358495, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 436.91285244406026, + "height": 200.68572533541555, + "seed": 456291476, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "RpssbX3dE90Mp1_pArM_z" + }, + { + "id": "d5y_nOehPhL6vkjdy2ypS", + "type": "arrow" + } + ], + "updated": 1714740075560, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 333, + "versionNonce": 1813738540, + "index": "bB9", + "isDeleted": false, + "id": "RpssbX3dE90Mp1_pArM_z", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24679.22913977984, + "y": 12820.390898517207, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 359.891845703125, + "height": 180, + "seed": 1067368980, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714740075560, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "filter opted-in \nvalidators\nthat are allowlisted\nand not denylisted", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "oWUYzqdFrexVBjWndosgh", + "originalText": "filter opted-in validators\nthat are allowlisted\nand not denylisted", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 234, + "versionNonce": 1539561644, + "index": "bBA", + "isDeleted": false, + "id": "Yds4I1iiAxIFJoJwVHhax", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25125.106384200324, + "y": 12816.059724902785, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 436.91285244406026, + "height": 200.68572533541555, + "seed": 272160428, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "rriXIy7Z_Ait6j3ZeYAPT" + } + ], + "updated": 1714740093130, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 393, + "versionNonce": 899408684, + "index": "bBB", + "isDeleted": false, + "id": "rriXIy7Z_Ait6j3ZeYAPT", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25167.252873898917, + "y": 12871.402587570494, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 352.619873046875, + "height": 90, + "seed": 1321279788, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714740093130, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "cap the size of the\nvalidator set", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Yds4I1iiAxIFJoJwVHhax", + "originalText": "cap the size of the\nvalidator set", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 276, + "versionNonce": 1014047148, + "index": "bBC", + "isDeleted": false, + "id": "qcrI9sS486GaZ0wXnvzbW", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25614.300310838626, + "y": 12814.029391924365, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 436.91285244406026, + "height": 200.68572533541555, + "seed": 1813596052, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "1mMmKGyomcG_j2-DEgurt" + }, + { + "id": "G-8e-hrDz_CMbhHxjUQlH", + "type": "arrow" + } + ], + "updated": 1714740141196, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 504, + "versionNonce": 1965191188, + "index": "bBD", + "isDeleted": false, + "id": "1mMmKGyomcG_j2-DEgurt", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25671.818779296984, + "y": 12846.872254592074, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 321.87591552734375, + "height": 135, + "seed": 305345812, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714740105503, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "cap the power of \nvalidators on the\nconsumer chain", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "qcrI9sS486GaZ0wXnvzbW", + "originalText": "cap the power of validators on the\nconsumer chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 175, + "versionNonce": 1254697516, + "index": "bBE", + "isDeleted": false, + "id": "nlTdDndslobeJqlbZPMf7", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24151.30792942702, + "y": 12809.207351100624, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 436.91285244406026, + "height": 200.68572533541555, + "seed": 1540845076, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "FTbp_FKuCcaeL14CsT58K" + }, + { + "id": "d5y_nOehPhL6vkjdy2ypS", + "type": "arrow" + } + ], + "updated": 1714740081895, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 195, + "versionNonce": 184222892, + "index": "bBF", + "isDeleted": false, + "id": "FTbp_FKuCcaeL14CsT58K", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24212.912411679325, + "y": 12887.05021376833, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 313.7038879394531, + "height": 45, + "seed": 1684573076, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714740081895, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "bonded validators", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "nlTdDndslobeJqlbZPMf7", + "originalText": "bonded validators", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 414, + "versionNonce": 1902823852, + "index": "bBI", + "isDeleted": false, + "id": "d5y_nOehPhL6vkjdy2ypS", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24589.22078187108, + "y": 12942.430989680759, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 44.16962144431818, + "height": 5.229817020668634, + "seed": 1009857836, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714740081895, + "link": null, + "locked": false, + "startBinding": { + "elementId": "nlTdDndslobeJqlbZPMf7", + "focus": 0.45079476037940974, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "oWUYzqdFrexVBjWndosgh", + "focus": -0.0006076147931378523, + "gap": 7.328233093972813, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 44.16962144431818, + -5.229817020668634 + ] + ] + }, + { + "type": "arrow", + "version": 447, + "versionNonce": 1239715732, + "index": "bBK", + "isDeleted": false, + "id": "fbNmH9Evm5FoPK7h1aDfj", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25080.254350027484, + "y": 12923.448274820184, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 44.16962144431818, + "height": 5.229817020668634, + "seed": 710054828, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714740087530, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 44.16962144431818, + -5.229817020668634 + ] + ] + }, + { + "type": "arrow", + "version": 485, + "versionNonce": 601835668, + "index": "bBL", + "isDeleted": false, + "id": "zjlVeevH6pHcwt-Odpf3x", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25563.3308411032, + "y": 12923.183908546953, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 44.16962144431818, + "height": 5.229817020668634, + "seed": 1388660268, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714740102400, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 44.16962144431818, + -5.229817020668634 + ] + ] + }, + { + "type": "arrow", + "version": 657, + "versionNonce": 318381716, + "index": "bBM", + "isDeleted": false, + "id": "G-8e-hrDz_CMbhHxjUQlH", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25867.32661839963, + "y": 13015.71511725978, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 3.4390439395792782, + "height": 99.23642067123365, + "seed": 1683224724, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714740146912, + "link": null, + "locked": false, + "startBinding": { + "elementId": "qcrI9sS486GaZ0wXnvzbW", + "focus": -0.1717097059728926, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "Yjcxh7AMXmN3HWBqpmsfN", + "focus": -0.28508648148052057, + "gap": 1, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -3.4390439395792782, + 99.23642067123365 + ] + ] + }, + { + "type": "rectangle", + "version": 405, + "versionNonce": 60453804, + "index": "bBN", + "isDeleted": false, + "id": "Yjcxh7AMXmN3HWBqpmsfN", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25705.189435575587, + "y": 13115.951537931016, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 436.91285244406026, + "height": 200.68572533541555, + "seed": 804893612, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "LUijPmHqMQVi55uZ81PIE" + }, + { + "id": "G-8e-hrDz_CMbhHxjUQlH", + "type": "arrow" + }, + { + "id": "DQLyNhxKwlwVFyIPUOzvK", + "type": "arrow" + } + ], + "updated": 1714740185385, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 655, + "versionNonce": 282784660, + "index": "bBO", + "isDeleted": false, + "id": "LUijPmHqMQVi55uZ81PIE", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25786.10791318922, + "y": 13193.794400598723, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 275.0758972167969, + "height": 45, + "seed": 1549688364, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714740146912, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "next validators", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Yjcxh7AMXmN3HWBqpmsfN", + "originalText": "next validators", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 429, + "versionNonce": 2089200148, + "index": "bBP", + "isDeleted": false, + "id": "vliPhOAStxvPQe2rM1Hbn", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24924.959966062306, + "y": 13120.18668562818, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 436.91285244406026, + "height": 200.68572533541555, + "seed": 1263930668, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "eJ-ycnaHDDAdBaN9jjX3T" + }, + { + "id": "jpE5m5UNHKYoL9RKgoPa0", + "type": "arrow" + } + ], + "updated": 1714740175797, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 704, + "versionNonce": 1574699820, + "index": "bBQ", + "isDeleted": false, + "id": "eJ-ycnaHDDAdBaN9jjX3T", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24981.254450756016, + "y": 13198.029548295886, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 324.3238830566406, + "height": 45, + "seed": 1307805612, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714740149280, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "current validators", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "vliPhOAStxvPQe2rM1Hbn", + "originalText": "current validators", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 452, + "versionNonce": 1256433940, + "index": "bBR", + "isDeleted": false, + "id": "j7VuT6nbQ_1fvS_068W5K", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25353.740911941764, + "y": 13449.108889577787, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 436.91285244406026, + "height": 200.68572533541555, + "seed": 674991636, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ilZb_-XNNLlLlYEaZBmUt" + }, + { + "id": "jpE5m5UNHKYoL9RKgoPa0", + "type": "arrow" + }, + { + "id": "DQLyNhxKwlwVFyIPUOzvK", + "type": "arrow" + }, + { + "id": "1OaKRqsDs-NLaXdEhliE8", + "type": "arrow" + } + ], + "updated": 1714740200604, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 774, + "versionNonce": 330005780, + "index": "bBS", + "isDeleted": false, + "id": "ilZb_-XNNLlLlYEaZBmUt", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25441.51740652317, + "y": 13526.951752245495, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 261.35986328125, + "height": 45, + "seed": 1330162580, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714740164307, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "diff validators", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "j7VuT6nbQ_1fvS_068W5K", + "originalText": "diff validators", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 731, + "versionNonce": 275185684, + "index": "bBT", + "isDeleted": false, + "id": "jpE5m5UNHKYoL9RKgoPa0", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25169.55278324978, + "y": 13319.826546466624, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 358.3620629539764, + "height": 130.57439870008238, + "seed": 1517399468, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714740176246, + "link": null, + "locked": false, + "startBinding": { + "elementId": "vliPhOAStxvPQe2rM1Hbn", + "focus": 0.49890806362360346, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "j7VuT6nbQ_1fvS_068W5K", + "focus": 0.4607955721708475, + "gap": 1, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 358.3620629539764, + 130.57439870008238 + ] + ] + }, + { + "type": "arrow", + "version": 806, + "versionNonce": 238713004, + "index": "bBU", + "isDeleted": false, + "id": "DQLyNhxKwlwVFyIPUOzvK", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25915.224293526247, + "y": 13317.180240071579, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 372.38861486131646, + "height": 127.5447612088501, + "seed": 690129044, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714740185830, + "link": null, + "locked": false, + "startBinding": { + "elementId": "Yjcxh7AMXmN3HWBqpmsfN", + "focus": -0.5594800541580929, + "gap": 1, + "fixedPoint": null + }, + "endBinding": { + "elementId": "j7VuT6nbQ_1fvS_068W5K", + "focus": -0.6552858366669876, + "gap": 4.383888297358681, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -372.38861486131646, + 127.5447612088501 + ] + ] + }, + { + "type": "arrow", + "version": 829, + "versionNonce": 1858616212, + "index": "bBV", + "isDeleted": false, + "id": "1OaKRqsDs-NLaXdEhliE8", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25555.88179297374, + "y": 13649.939224790378, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 5.06754018268839, + "height": 90.63394214028449, + "seed": 861913876, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1714740200604, + "link": null, + "locked": false, + "startBinding": { + "elementId": "j7VuT6nbQ_1fvS_068W5K", + "focus": 0.04774054938842235, + "gap": 1, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -5.06754018268839, + 90.63394214028449 + ] + ] + }, + { + "type": "rectangle", + "version": 476, + "versionNonce": 695824300, + "index": "bBW", + "isDeleted": false, + "id": "obP8nfPBO5hW5kn0mbANJ", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25344.197289478117, + "y": 13763.161316802736, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 436.91285244406026, + "height": 200.68572533541555, + "seed": 314345260, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "mAiz_U2Vgmc5rauXpir31" + } + ], + "updated": 1714740203725, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 826, + "versionNonce": 520714924, + "index": "bBX", + "isDeleted": false, + "id": "mAiz_U2Vgmc5rauXpir31", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25363.501783937452, + "y": 13841.004179470445, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 398.3038635253906, + "height": 45, + "seed": 377143724, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1714740209537, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "validator set updates", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "obP8nfPBO5hW5kn0mbANJ", + "originalText": "validator set updates", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 87, + "versionNonce": 2065025298, + "index": "bBY", + "isDeleted": false, + "id": "nW9DCNdKEVjVU8SI5Tv_M", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23263.080434096835, + "y": 13861.736449989276, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1257.5250120500386, + "height": 5.766471766215545, + "seed": 1770476178, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721227250797, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1257.5250120500386, + -5.766471766215545 + ] + ] + }, + { + "type": "line", + "version": 145, + "versionNonce": 2138282894, + "index": "bBZ", + "isDeleted": false, + "id": "5-I1Tuu4kRaSVN92vWtDu", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23274.49413457578, + "y": 14074.530265213682, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1257.5250120500386, + "height": 5.766471766215545, + "seed": 1388326034, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721227253731, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1257.5250120500386, + -5.766471766215545 + ] + ] + }, + { + "type": "text", + "version": 50, + "versionNonce": 1339871374, + "index": "bBa", + "isDeleted": false, + "id": "efguysNRGhUDK0T7ihO7F", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23008.56811397335, + "y": 13822.123296117017, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 163.43992614746094, + "height": 45, + "seed": 23777810, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721227257731, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "proposals", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "proposals", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 136, + "versionNonce": 209805650, + "index": "bBb", + "isDeleted": false, + "id": "GmYeC_PEh1Hz495Ef93z6", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23020.113883242648, + "y": 14025.714240562673, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 162.86392211914062, + "height": 90, + "seed": 844137742, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721227267452, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "messages\nperm.", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "messages\nperm.", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 85, + "versionNonce": 896285518, + "index": "bBc", + "isDeleted": false, + "id": "tMzYFNpjtGq6yoG7b16P7", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24039.407747572975, + "y": 13748.950866472775, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 2.3114807291931356, + "height": 105.91840664114716, + "seed": 125647182, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721227289480, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -2.3114807291931356, + 105.91840664114716 + ] + ] + }, + { + "type": "text", + "version": 190, + "versionNonce": 1332899982, + "index": "bBd", + "isDeleted": false, + "id": "fQtvzVCdwyGjma7KPnsF-", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23076.59787484946, + "y": 13574.09774485757, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 581.0037841796875, + "height": 135, + "seed": 265062926, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721227475139, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "ConsumerAdditionProposal\nconsumerID = proposalID\n.Set(consumerID <-> proposalID)", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "ConsumerAdditionProposal\nconsumerID = proposalID\n.Set(consumerID <-> proposalID)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 287, + "versionNonce": 254555150, + "index": "bBe", + "isDeleted": false, + "id": "WfJBk6NZodu8UJZ07kdnh", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23658.723715050557, + "y": 13620.434619377478, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 904.0316772460938, + "height": 135, + "seed": 197361422, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721227309212, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "proposal is passing\nand `ConsumerAdditionProposal` in the pending ones\nHandleConsumerAdditionProposal", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "proposal is passing\nand `ConsumerAdditionProposal` in the pending ones\nHandleConsumerAdditionProposal", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 31, + "versionNonce": 1919974670, + "index": "bBf", + "isDeleted": false, + "id": "3sYwUW0MR-koYSkKs36AN", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23393.202123082287, + "y": 13773.242816728645, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 2.3114807291931356, + "height": 105.91840664114716, + "seed": 1745782478, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721227286916, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -2.3114807291931356, + 105.91840664114716 + ] + ] + }, + { + "type": "rectangle", + "version": 55, + "versionNonce": 2083253452, + "index": "bBg", + "isDeleted": false, + "id": "U5aNPe48awObVViFta3ts", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23989.21559455461, + "y": 14966.252944123687, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 417.01436065429516, + "height": 160.20762863526397, + "seed": 195907335, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1723719805344, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 84, + "versionNonce": 268381260, + "index": "bBi", + "isDeleted": false, + "id": "SmACGh7gl4n5hDUQDVP3v", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24042.402327560372, + "y": 14997.170575895729, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 304.0919189453125, + "height": 135, + "seed": 416628, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723719855967, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "provider chain\nCosmos Hub chain\n", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "provider chain\nCosmos Hub chain\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "version": 229, + "versionNonce": 239008204, + "index": "bBj", + "isDeleted": false, + "id": "d8T6n_DYA-VHBzTu2j0va", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 23964.76779485635, + "y": 15176.444883380917, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 541.1000790550934, + "height": 357.80552837764833, + "seed": 391653836, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "yQORSWYuLTKHOLjpQGJG0" + } + ], + "updated": 1723719845121, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 222, + "versionNonce": 1784012876, + "index": "bBjV", + "isDeleted": false, + "id": "yQORSWYuLTKHOLjpQGJG0", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24070.972119028374, + "y": 15287.844289838806, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 329.0758955106139, + "height": 135, + "seed": 341773260, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723719845121, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Coinbase validator\nmachine somewhere\n", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "d8T6n_DYA-VHBzTu2j0va", + "originalText": "Coinbase validator\nmachine somewhere\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "version": 258, + "versionNonce": 1921993036, + "index": "bBm", + "isDeleted": false, + "id": "1dZyl039dITP-coZvLfWx", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24641.15676342006, + "y": 14964.572177620308, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 541.1000790550934, + "height": 357.80552837764833, + "seed": 796832628, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "ovy16-w_zlQzeeU3fEG2O" + } + ], + "updated": 1723719932309, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 256, + "versionNonce": 250625996, + "index": "bBn", + "isDeleted": false, + "id": "ovy16-w_zlQzeeU3fEG2O", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24749.953099263596, + "y": 15075.971584078197, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 323.8918721675873, + "height": 135, + "seed": 1103111412, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723719932309, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "SG-1 validator\nmachine somewhere\n", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "1dZyl039dITP-coZvLfWx", + "originalText": "SG-1 validator\nmachine somewhere\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 52, + "versionNonce": 501495540, + "index": "bBo", + "isDeleted": false, + "id": "sg-seZBSrSamGXuTNL7ww", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24481.612656545032, + "y": 15269.12182763824, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 164.5737775812304, + "height": 79.61156356890751, + "seed": 843043020, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1723719934597, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 164.5737775812304, + -79.61156356890751 + ] + ] + }, + { + "type": "ellipse", + "version": 292, + "versionNonce": 549668084, + "index": "bBp", + "isDeleted": false, + "id": "c554NkGIbDXv0NTNGMSTW", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24568.880939527186, + "y": 15330.847894127715, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 541.1000790550934, + "height": 357.80552837764833, + "seed": 516990540, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "c7Pjfz4d42GJaDnFkLDIO" + } + ], + "updated": 1723719860563, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 296, + "versionNonce": 259425908, + "index": "bBq", + "isDeleted": false, + "id": "c7Pjfz4d42GJaDnFkLDIO", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 24824.467212986117, + "y": 15487.247300585605, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 30.311996936798096, + "height": 45, + "seed": 1157496012, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723719860563, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "...", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "c554NkGIbDXv0NTNGMSTW", + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 105, + "versionNonce": 1589953100, + "index": "bBr", + "isDeleted": false, + "id": "bL5bSgu-DjFWiN15T__Vd", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25967.609552069887, + "y": 14822.204367934117, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 417.01436065429516, + "height": 160.20762863526397, + "seed": 1042398924, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1723720022363, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 37, + "versionNonce": 856466764, + "index": "bBs", + "isDeleted": false, + "id": "iz-OMT2BsH2_njUlNh7_O", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 26021.102772189955, + "y": 14865.485952732151, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 255.34791564941406, + "height": 90, + "seed": 2014065612, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723720021688, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "consumer chain\nStride ", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "consumer chain\nStride ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "version": 321, + "versionNonce": 991388108, + "index": "bBt", + "isDeleted": false, + "id": "Ia4cxC8QY75iMkAIl04ch", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25706.733360609305, + "y": 15051.393223399022, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 541.1000790550934, + "height": 357.80552837764833, + "seed": 1447168372, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "Y8Tbf21IvyElLEWQaryDJ" + } + ], + "updated": 1723720011055, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 351, + "versionNonce": 803293260, + "index": "bBu", + "isDeleted": false, + "id": "Y8Tbf21IvyElLEWQaryDJ", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25797.295694428907, + "y": 15140.292629856911, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 360.3598762154579, + "height": 180, + "seed": 564706036, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723720011055, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Coinbase validator\nDIFFERENT machine\nsomewhere\n$1000 per month", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Ia4cxC8QY75iMkAIl04ch", + "originalText": "Coinbase validator\nDIFFERENT machine somewhere\n$1000 per month", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "version": 301, + "versionNonce": 1483739764, + "index": "bBv", + "isDeleted": false, + "id": "gSpG8BNCZETCsn9-tF21c", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 26321.786998994347, + "y": 15045.205881553517, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 541.1000790550934, + "height": 357.80552837764833, + "seed": 425477620, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "NcDNOPHCXv9zi6NEAlxGO" + } + ], + "updated": 1723719933692, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 300, + "versionNonce": 590193652, + "index": "bBw", + "isDeleted": false, + "id": "NcDNOPHCXv9zi6NEAlxGO", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 26430.583334837884, + "y": 15156.605288011406, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 323.8918721675873, + "height": 135, + "seed": 1866950516, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723719933692, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "SG-1 validator\nmachine somewhere\n", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "gSpG8BNCZETCsn9-tF21c", + "originalText": "SG-1 validator\nmachine somewhere\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 176, + "versionNonce": 1919010164, + "index": "bBx", + "isDeleted": false, + "id": "cgGExHf34M-8Z095_WLP_", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 26250.391390521032, + "y": 15237.806863154292, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 69.27362208276827, + "height": 17.411171764288156, + "seed": 1951533556, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1723719939842, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 69.27362208276827, + -17.411171764288156 + ] + ] + }, + { + "type": "rectangle", + "version": 157, + "versionNonce": 1169045876, + "index": "bBy", + "isDeleted": false, + "id": "3hGZaU24TfjJKKf76iw6Y", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25825.24200209896, + "y": 15724.55020553319, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 417.01436065429516, + "height": 160.20762863526397, + "seed": 114925388, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "4hwO_gSUKIt7z_WYTHMs8" + } + ], + "updated": 1723720024395, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 29, + "versionNonce": 1525177804, + "index": "bBz", + "isDeleted": false, + "id": "4hwO_gSUKIt7z_WYTHMs8", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25906.0752246014, + "y": 15759.654019850823, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 255.34791564941406, + "height": 90, + "seed": 971198796, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723720027934, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "consumer chain\nNeutron", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "3hGZaU24TfjJKKf76iw6Y", + "originalText": "consumer chain\nNeutron", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "version": 365, + "versionNonce": 592378100, + "index": "bC0", + "isDeleted": false, + "id": "84xUYa34aDlCeKLv-2mmW", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25379.910921826733, + "y": 15904.46669239913, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 541.1000790550934, + "height": 357.80552837764833, + "seed": 1892116852, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "HWhXmuHrUQfR-lMTqJfjF" + } + ], + "updated": 1723720032067, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 396, + "versionNonce": 778812020, + "index": "bC1", + "isDeleted": false, + "id": "HWhXmuHrUQfR-lMTqJfjF", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 25470.473255646335, + "y": 15993.36609885702, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 360.3598762154579, + "height": 180, + "seed": 75635444, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723720032067, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Coinbase validator\nDIFFERENT machine\nsomewhere\n$1000 per month", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "84xUYa34aDlCeKLv-2mmW", + "originalText": "Coinbase validator\nDIFFERENT machine somewhere\n$1000 per month", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "HhqQPaE4FB96ErwmdraJp", + "type": "rectangle", + "x": 28501.153663268902, + "y": 14117.571451614353, + "width": 659.9461601320581, + "height": 1365.442170430484, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "bC2", + "roundness": { + "type": 3 + }, + "seed": 1532460223, + "version": 73, + "versionNonce": 1387554673, + "isDeleted": false, + "boundElements": null, + "updated": 1726742355524, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 122, + "versionNonce": 934938129, + "index": "bC4", + "isDeleted": false, + "id": "rAVVT8_syCTzfyZ-vXmfD", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 29527.234336898884, + "y": 14115.185419849155, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 659.9461601320581, + "height": 1365.442170430484, + "seed": 301246751, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1726742456315, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 156, + "versionNonce": 534553841, + "index": "bC5", + "isDeleted": false, + "id": "8q078ohYv0Ym4UNkZifdr", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 30434.97974223521, + "y": 14107.702164754455, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 659.9461601320581, + "height": 1365.442170430484, + "seed": 124118737, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1726742101251, + "link": null, + "locked": false + }, + { + "id": "bd3IVnEItihvc9aWj58-W", + "type": "text", + "x": 28552.12950937307, + "y": 14174.396561293042, + "width": 530.0397494775365, + "height": 95.55089947077428, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "bC7", + "roundness": null, + "seed": 717104241, + "version": 69, + "versionNonce": 77719551, + "isDeleted": false, + "boundElements": null, + "updated": 1726742178227, + "link": null, + "locked": false, + "text": "Provider Chain", + "fontSize": 76.44071957661944, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Provider Chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 119, + "versionNonce": 419058399, + "index": "bC8", + "isDeleted": false, + "id": "SvlWwkZcMYk7udrHsl2Q2", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 29579.81074057804, + "y": 14166.299766478365, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 563.8978271484375, + "height": 95.55089947077431, + "seed": 1689416497, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726742189493, + "link": null, + "locked": false, + "fontSize": 76.44071957661944, + "fontFamily": 1, + "text": "Consumer Chain", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Consumer Chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 183, + "versionNonce": 1666577247, + "index": "bC9", + "isDeleted": false, + "id": "4M096DeeinxpfbFqWSKKo", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 30512.742589154383, + "y": 14151.223343117452, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 463.99073803424835, + "height": 95.55089947077431, + "seed": 2065329201, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726742198857, + "link": null, + "locked": false, + "fontSize": 76.44071957661944, + "fontFamily": 1, + "text": "IBC Relayer", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "IBC Relayer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "WMKZmnhjjis3GCKyd-GRp", + "type": "rectangle", + "x": 29582.580198477463, + "y": 14301.474506438457, + "width": 559.3847676171754, + "height": 144.82892234678366, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "bCA", + "roundness": { + "type": 3 + }, + "seed": 1401527231, + "version": 30, + "versionNonce": 1681491569, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "dcd7KRb6zdxBwKLVKwqZB" + } + ], + "updated": 1726742218658, + "link": null, + "locked": false + }, + { + "id": "dcd7KRb6zdxBwKLVKwqZB", + "type": "text", + "x": 29708.462645762615, + "y": 14351.388967611849, + "width": 307.619873046875, + "height": 45, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "bCB", + "roundness": null, + "seed": 1013517567, + "version": 27, + "versionNonce": 1014124799, + "isDeleted": false, + "boundElements": null, + "updated": 1726742234537, + "link": null, + "locked": false, + "text": "1/ Initialize Chain", + "fontSize": 36, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "WMKZmnhjjis3GCKyd-GRp", + "originalText": "1/ Initialize Chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 64, + "versionNonce": 1437557777, + "index": "bCC", + "isDeleted": false, + "id": "XagVe9DVMAjM_-Vdf_IQ4", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 29581.81080627678, + "y": 14497.486328992287, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 559.3847676171754, + "height": 144.82892234678366, + "seed": 1037233169, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "8Fmp-YHKsm9phNk5Rwsp8" + }, + { + "id": "ozRFS97p0-guSncdG-uoY", + "type": "arrow" + } + ], + "updated": 1726742419339, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 116, + "versionNonce": 702479039, + "index": "bCD", + "isDeleted": false, + "id": "8Fmp-YHKsm9phNk5Rwsp8", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 29614.165283098893, + "y": 14524.900790165679, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 494.67581397295, + "height": 90, + "seed": 362627569, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726742371206, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "2/ Generate hashes for \ngenesis file and chain binary", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "XagVe9DVMAjM_-Vdf_IQ4", + "originalText": "2/ Generate hashes for genesis file and chain binary", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 188, + "versionNonce": 2099187711, + "index": "bCE", + "isDeleted": false, + "id": "hGvP6v9zGouSrPwaXmIDO", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 28545.816097936502, + "y": 14489.068811939622, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 559.3847676171754, + "height": 144.82892234678366, + "seed": 879950609, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "B_ZVLBQtl9_LxWwZbIZ0P" + }, + { + "id": "ozRFS97p0-guSncdG-uoY", + "type": "arrow" + } + ], + "updated": 1726742423486, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 275, + "versionNonce": 467318815, + "index": "bCF", + "isDeleted": false, + "id": "B_ZVLBQtl9_LxWwZbIZ0P", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 28580.438565973607, + "y": 14516.483273113014, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 490.13983154296875, + "height": 90, + "seed": 2070114545, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726742423486, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "3/ Create a new consumer \nchain ", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "hGvP6v9zGouSrPwaXmIDO", + "originalText": "3/ Create a new consumer chain ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 250, + "versionNonce": 670967985, + "index": "bCG", + "isDeleted": false, + "id": "ttgICHH_KXROYzdjXVcA1", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 28540.948719462376, + "y": 14683.322023749046, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 559.3847676171754, + "height": 143.3176162383079, + "seed": 1585420223, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "N4LVUzV3UVe1oOufGUr3P" + } + ], + "updated": 1726742425188, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 392, + "versionNonce": 1551362705, + "index": "bCH", + "isDeleted": false, + "id": "N4LVUzV3UVe1oOufGUr3P", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 28625.77318334909, + "y": 14732.480831868199, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 389.73583984375, + "height": 45, + "seed": 1465141215, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726742425188, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Spawn time is reached", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ttgICHH_KXROYzdjXVcA1", + "originalText": "Spawn time is reached", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 311, + "versionNonce": 1034649041, + "index": "bCI", + "isDeleted": false, + "id": "KRXDpfL-77chMbUV-H-DZ", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 28538.97781978057, + "y": 14868.585254070782, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 559.3847676171754, + "height": 142.66729664011655, + "seed": 979039377, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "yrhGVyPtyA68sk2MfeYDa" + }, + { + "id": "QOGewMQplwsY6pR8QwpY4", + "type": "arrow" + } + ], + "updated": 1726742440716, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 486, + "versionNonce": 790078897, + "index": "bCJ", + "isDeleted": false, + "id": "yrhGVyPtyA68sk2MfeYDa", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 28586.992286108692, + "y": 14894.91890239084, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 463.3558349609375, + "height": 90, + "seed": 1158691441, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726742426955, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "4/ Generate CCV genesis \nstates", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "KRXDpfL-77chMbUV-H-DZ", + "originalText": "4/ Generate CCV genesis states", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 149, + "versionNonce": 1108409745, + "index": "bCK", + "isDeleted": false, + "id": "vzkLq6oddpv2vQbEcSIr_", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 29566.899252673156, + "y": 14877.501960110789, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 559.3847676171754, + "height": 144.82892234678366, + "seed": 1773640817, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Y5R-Lr3O2xhGK83C4tuXw" + }, + { + "id": "QOGewMQplwsY6pR8QwpY4", + "type": "arrow" + } + ], + "updated": 1726742440717, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 241, + "versionNonce": 1552793553, + "index": "bCL", + "isDeleted": false, + "id": "Y5R-Lr3O2xhGK83C4tuXw", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 29646.611716511707, + "y": 14927.41642128418, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 399.9598399400711, + "height": 45, + "seed": 1447880273, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726742431589, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "5/ Update genesis file", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "vzkLq6oddpv2vQbEcSIr_", + "originalText": "5/ Update genesis file", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 178, + "versionNonce": 1756108991, + "index": "bCM", + "isDeleted": false, + "id": "o0tnGunzNT_0Bwb-hGsAl", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 29563.601857527392, + "y": 15068.118877828907, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 559.3847676171754, + "height": 144.82892234678366, + "seed": 199904959, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "__lPiQzs52JPE4SQqt2p2" + } + ], + "updated": 1726742443757, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 287, + "versionNonce": 1246275807, + "index": "bCN", + "isDeleted": false, + "id": "__lPiQzs52JPE4SQqt2p2", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 29710.77826097309, + "y": 15118.033339002299, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 265.0319607257843, + "height": 45, + "seed": 340795103, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726742443757, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "6/ Start chain", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "o0tnGunzNT_0Bwb-hGsAl", + "originalText": "6/ Start chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "ozRFS97p0-guSncdG-uoY", + "type": "arrow", + "x": 29573.118506295308, + "y": 14569.680963822628, + "width": 460.4445943822939, + "height": 3.320290722507707, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "bCO", + "roundness": { + "type": 2 + }, + "seed": 1123922865, + "version": 43, + "versionNonce": 1009350527, + "isDeleted": false, + "boundElements": null, + "updated": 1726742500130, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -460.4445943822939, + 3.320290722507707 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "XagVe9DVMAjM_-Vdf_IQ4", + "focus": 0.22553404331738455, + "gap": 8.69229998146875, + "fixedPoint": null + }, + "endBinding": { + "elementId": "hGvP6v9zGouSrPwaXmIDO", + "focus": 0.18256754686412358, + "gap": 7.473046359335058, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "QOGewMQplwsY6pR8QwpY4", + "type": "arrow", + "x": 29113.470782406574, + "y": 14953.250454153787, + "width": 446.3024329793443, + "height": 5.184237923618639, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "bCP", + "roundness": { + "type": 2 + }, + "seed": 1542422015, + "version": 27, + "versionNonce": 1604804049, + "isDeleted": false, + "boundElements": null, + "updated": 1726742503255, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 446.3024329793443, + 5.184237923618639 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "KRXDpfL-77chMbUV-H-DZ", + "focus": 0.13283476969784805, + "gap": 15.108195008828261, + "fixedPoint": null + }, + "endBinding": { + "elementId": "vzkLq6oddpv2vQbEcSIr_", + "focus": -0.1566140635334936, + "gap": 7.126037287240251, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "type": "rectangle", + "version": 230, + "versionNonce": 783921343, + "index": "bCS", + "isDeleted": false, + "id": "JPs9Nr8DLY87Fndn2AL48", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 30472.849409541235, + "y": 15230.130892657517, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 559.3847676171754, + "height": 178.20293723166452, + "seed": 1738243039, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "xQRi92RosWjqcgIejtsiu" + } + ], + "updated": 1726742486362, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 390, + "versionNonce": 719536351, + "index": "bCT", + "isDeleted": false, + "id": "xQRi92RosWjqcgIejtsiu", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 30567.35784021362, + "y": 15251.732361273349, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 370.36790627241135, + "height": 135, + "seed": 2006886399, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1726742486362, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "7/ Create connection\nCreate channel\nStart Hermes", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "JPs9Nr8DLY87Fndn2AL48", + "originalText": "7/ Create connection\nCreate channel\nStart Hermes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "OW7GsQcVA4a3lllbZdpWV", + "type": "line", + "x": 30609.21501768055, + "y": 15313.01191208899, + "width": 775.7488457651489, + "height": 3.755366693787437, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "bCU", + "roundness": { + "type": 2 + }, + "seed": 1091096657, + "version": 38, + "versionNonce": 772023903, + "isDeleted": false, + "boundElements": null, + "updated": 1726742568755, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -775.7488457651489, + 3.755366693787437 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "ellipse", + "version": 98, + "versionNonce": 1912024415, + "index": "bCZ", + "isDeleted": false, + "id": "eJo1WPqFxAYhjjxnvpahb", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 29777.868425985416, + "y": 15276.037960631334, + "strokeColor": "#f08c00", + "backgroundColor": "#fd7e14", + "width": 66.60738194446095, + "height": 65.03195981926365, + "seed": 1071562833, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1726742554951, + "link": null, + "locked": false + }, + { + "type": "line", + "version": 123, + "versionNonce": 855698847, + "index": "bCa", + "isDeleted": false, + "id": "nj6xO-ZTTw1LTUIagBI5S", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 30609.205858249596, + "y": 15370.692189035011, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "width": 1752.6021576981439, + "height": 2.857742459662404, + "seed": 722954673, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1726742574856, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -1752.6021576981439, + 2.857742459662404 + ] + ] + }, + { + "type": "ellipse", + "version": 105, + "versionNonce": 153231473, + "index": "bCb", + "isDeleted": false, + "id": "9DOhLT8HAF-JpqPc4vkcv", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 28809.21280476203, + "y": 15338.166380836132, + "strokeColor": "#f08c00", + "backgroundColor": "#fd7e14", + "width": 66.60738194446095, + "height": 65.03195981926365, + "seed": 1958985215, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1726742581558, + "link": null, + "locked": false + } + ], + "appState": { + "gridSize": 20, + "gridStep": 5, + "gridModeEnabled": false, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/docs/figures/hypha-consumer-start-process.png b/docs/figures/hypha-consumer-start-process.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e39ab9f14611d33f88f0e18ab22e5e5f6cc642 GIT binary patch literal 710291 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%0Dl?My5YHpB$RlFKggSoYOn zwR?{D(|^imkrg`3KZ+4u=(`_6c!Cme5pQze%=Rpvj-MGW798;Yq6E(@#^z-1KnY(4 zzqG4uxQ~shSxkY?(<&9sKZvn`x?w(}h%HN{Wt7$Db5reJN;uW~>u zycc((_-29mg~`3ii-8->o)p@*9zasq85HkWsO0v7w^1hfGKN%oPZ=pN?J z-Kb_u??F4JNx3ltCVNUL0^y0N>>17`ooS}HH@%AhQNY%a2c{OAB=a(78GmhA?( zN7)NVFvbuYXR8vPMY$hbDV#XVDe9iG?r=^DmZ1Y&`_W+?zp33vmji_nijizY##KF% z3RoNiwnY<2fs8w1ga_uhEV*F1j2K`iIM0&UT{y%S`nMM5MxfTDTHHi8rG9H%1>2*`)1j=pj6u?gg?eUaJ zo$(aY{4te%{R9T91*qt38$|6s|5BF%mSy)f2^%@0)F2UZ;V}a?23uVKcUKx{+8sCo z2*D#&p4{;k%-EipdTiyPntCueLgI3e6X zPMZiWvc}>VGVyG%IQf7(mgvRtlc9$#*;c4A_|yB@D09%vg766ir7Qk1t8*ophuFdplm{$8fbt}>^%x? zu~c}!tod~f(SyYgWFxP^@rzdcui@rA`zaOElD9V!H}f#dejU?VJ8|G5iD6A_<4jg9{W z0K|0TH~WSU7P8<{X2-Cdyas|LU2Cppx2q0^I964yfcD_NgCtG3^1v9$BpTLz2k_${ z!iFq9siJ!$@gRtiem6PyT>-^;BIuqE23mIZ*#5wQDaXA(;bU3dsgvTa%DT`NbEYuR zY%)%du%s_opgyqfafE*d8sj+_fS6RS35!Ak5A*_QFw`Z#vqk&$Bp73MwU1-zP~fG& zq$OvZ8f^Io76cN796!}I^xpKh?|H57(bJH=n$3@!3!NN z*k9-XiTQuP%Iw{y7Ch*!c+Yf}2-ATCS^>x}F$B(`A;%p2QHGH4L2^R|evbn*Q1@4m z!$O0rP#{p~%AQBZ_`ZWpG5`gstpQqmP~HZYmARNKjRm(+2;h=;pLQRN;{tyh*}?=B zhNn?lP!+r|t&Zgyc(TAToQsUIFw`pG-q0}6!Qmbj1_W9H08TMP%|XElx-g(ud96s$ z>|9XkYkNxS-8o%!O(-odPyPqLLHJ2c>#6+yaC0|nwJm-gl!N~s3&gR|e!y~8#&`XdG~G80Q6hwNj12B3d(Of?J*eFE7^SA9%>g`6By z@}tR6?tWb*b@Cp!(YS<93aCf)5a*!=D0%{GvbcH)K=fKy4m~V@i-EKC^&b4hqQnAk zf`#&*PJ9bd1J(*vR$4a`!|sR~w?Qs(n9 zzI@o9-p{t(eKlK)IEGr2#yI)*9&!j)Q1zn7)- z9{UVb0OqKKzc0YpjZaxf?v>rZ+t5nhhlXNXi8y!_T=!fRW@CW) z6GX`4nw=Op&|Z>-GB*Cr2RJ)1VR#e#lur3AI{3+yy~=XNQ;5GYIG$fR9_iG(UcNG7 zII&2DIwJ$%%K1`G4$C8~hjE@mg21!=Ec(9qP};BiY>XK@>=^`UMMw*26WoJUofx)7 zJqxgtLQKJBOmKhg3bmb2kYqI5BX=sagl6CqXGE4FmOX#<&b@6LXG4X9o(wRA>SMe< zwuEzn9PpbU^ClVuqRW6BQBPa3>=+{`AsarEz1dA>9Z+^W@-_}_5uV~%i`8$U^ix~N z(ig=Qsgqr&wiFIA2C4f@6e=g$H7$n|~D)S#3H3%`Ce)fCIZ zFF|qng|hJmYj%Di&cRpIA0SIcAqguTfcJvwzohgET14lL4bGyqyy_nU-rJI zyHLD=;e#lXyMlLN_oqDIr#Xm6mr$kT5JG_`%FM1WRgv1B><_pM+Qa~q(tvw2N+ ze~XKDk?RTIXC{YlsFMjOL4Tlowle81YEkGr9L7n2jQN?)yer(3Kt$A6WA*`Irx11( zw7qi$tzNx_L!o*vtWkr4C~2_vb-Zb;kAfap9^4M9iuQJwu~kJ|C?7;dtwH!k8G_5c z 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%0D4;pt@@T*S6?QIyq}N9-X;Y&2&D1Xk9Ohp7 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∨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 \ No newline at end of file diff --git a/proto/interchain_security/ccv/provider/v1/provider.proto b/proto/interchain_security/ccv/provider/v1/provider.proto index 25dfbf3d25..cc6cb4e00a 100644 --- a/proto/interchain_security/ccv/provider/v1/provider.proto +++ b/proto/interchain_security/ccv/provider/v1/provider.proto @@ -449,11 +449,34 @@ message PowerShapingParameters { // 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; - // Corresponds to the maximum power (percentage-wise) a validator can have on the consumer chain. For instance, if - // `validators_power_cap` is set to 32, it means that no validator can have more than 32% of the voting power on the - // consumer chain. Note that this might not be feasible. For example, think of a consumer chain with only - // 5 validators and with `validators_power_cap` set to 10%. In such a scenario, at least one validator would need - // to have more than 20% of the total voting power. Therefore, `validators_power_cap` operates on a best-effort basis. + // `validators_power_cap` 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. + // + // To respect this power cap, the voting powers of the validators that run the consumer chain are decremented or + // incremented accordingly. It is important to note that the voting powers of validators on the provider do **not** change. + // For example, assume that the provider chain has among others, validators `A`, `B`, `C`, and `D` with voting powers + // 100, 1, 1, 1 respectively. Assume that only those 4 validators opt in on a consumer chain. Without a power cap set, + // validator `A` would have 100 / (100 + 1 + 1 + 1) = ~97% of the total voting power on the consumer chain, while + // validators `B`, `C`, and `D` would have 1 /(100 + 1 + 1 + 1) = ~1% of the total voting power on the consumer chain. + // If `validators_power_cap` is set to 30%, then the voting power of `A` would be reduced from 100 to 30 on the consumer + // chain, the voting power of `B` would be increased from 1 to 25, and the power of `C` and `D` would be increased from + // 1 to 24. After those modifications, `A` would have 30 / (30 + 25 + 24 + 24) = ~29% of the total voting power of the + // consumer chain, `B` would have 25 / (30 + 25 + 24 + 24) = ~25%, and `C` and `D` would both have 24 / (30 + 25 + 24 + 24) = ~23%. + // Naturally, there are many ways to change the voting powers of validators to respect the power cap, and ICS chooses + // one of them (see the `NoMoreThanPercentOfTheSum` function). + // + // Note that respecting `validators_power_cap` might NOT always be possible. For example, if we have a consumer + // chain with only 5 validators and `validators_power_cap` is set to 10%, then it is not possible to respect the + // `validators_power_cap`. If the voting power of each validator is capped to a maximum of 10% of the total consumer + // chain's voting power, then the total voting power of the consumer chain would add up to 50% which obviously does not + // make sense (percentages should add up to 100%). In cases where it is not feasible to respect the power cap, all + // validators on the consumer chain will have equal voting power in order to minimize the power of a single validator. + // Thus, in the example of 5 validators and a `validators_power_cap` set to 10%, all validators would end up having 20% + // of the total voting power on the consumer chain. Therefore, `validators_power_cap` operates on a best-effort basis. + // For more information on the power cap and other power-shaping parameters, please refer to the ICS docs and + // specifically `interchain-security/docs/docs/features/power-shaping.md`. 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. From 14ff20c16b3225cff37fe4ccc7d1e7619cdba66f Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 2 Oct 2024 13:24:11 +0200 Subject: [PATCH 28/32] add collapsible sections --- docs/docs/build/modules/02-provider.md | 365 ++++++++++++++++++------- docs/docs/build/modules/03-consumer.md | 87 ++++-- 2 files changed, 322 insertions(+), 130 deletions(-) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 587e906bd3..8dd09b0fca 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -957,13 +957,14 @@ The `consumer-genesis` command allows to query for consumer chain genesis state interchain-security-pd query provider consumer-genesis [consumer-id] [flags] ``` -Example: +

+ Example ```bash interchain-security-pd query provider consumer-genesis 0 ``` -Example Output: +Output: ```bash new_chain: true @@ -1056,6 +1057,8 @@ provider: ed25519: mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI= ``` +
+ ##### List Consumer Chains The `list-consumer-chains` command allows to query consumer chains supported by the provider chain. @@ -1065,13 +1068,14 @@ An optional integer parameter can be passed for phase filtering of consumer chai interchain-security-pd query provider list-consumer-chains [phase] [limit] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider list-consumer-chains 3 ``` -Example Output: +Output: ```bash chains: @@ -1096,6 +1100,8 @@ pagination: total: "1" ``` +
+ ##### Validator Consumer Key Assignment The `validator-consumer-key` command allows to query assigned validator consensus public key for a consumer chain. @@ -1104,18 +1110,20 @@ The `validator-consumer-key` command allows to query assigned validator consensu interchain-security-pd query provider validator-consumer-key [consumer-id] [provider-validator-address] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider validator-consumer-key 0 cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6 ``` -Example Output: +Output: ```bash consumer_address: cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk ``` +
##### Validator Provider Key @@ -1126,19 +1134,21 @@ The `validator-provider-key` command allows to query validator consensus public interchain-security-pd query provider validator-provider-key [consumer-id] [consumer-validator-address] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider validator-provider-key 0 cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk ``` - -Example Output: +Output: ```bash provider_address: cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj ``` +
+ ##### Throttle State The `throttle-state` command allows to query on-chain state relevant to slash packet throttling. @@ -1148,13 +1158,14 @@ The `throttle-state` command allows to query on-chain state relevant to slash pa interchain-security-pd query provider throttle-state [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider throttle-state ``` -Example Output: +Output: ```bash next_replenish_candidate: "2024-09-26T07:59:51.336971970Z" @@ -1162,6 +1173,8 @@ slash_meter: "1500" slash_meter_allowance: "1511" ``` +
+ ##### Registered Consumer Reward Denoms The `registered-consumer-reward-denoms` command allows to query registered consumer reward denoms. @@ -1170,13 +1183,14 @@ The `registered-consumer-reward-denoms` command allows to query registered consu interchain-security-pd query provider registered-consumer-reward-denoms [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider registered-consumer-reward-denoms ``` -Example Output: +Output: ```bash denoms: @@ -1184,6 +1198,8 @@ denoms: - ibc/D549749C93524DA1831A4B3C850DFC1BA9060261BEDFB224B3B0B4744CD77A70 ``` +
+ ##### All Pairs Valconsensus Address The `all-pairs-valconsensus-address` command allows to query all pairs of valconsensus address by consumer id. @@ -1192,13 +1208,14 @@ The `all-pairs-valconsensus-address` command allows to query all pairs of valcon interchain-security-pd query provider all-pairs-valconsensus-address [consumer-id] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider all-pairs-valconsensus-address 0 ``` -Example Output: +Output: ```bash pair_val_con_addr: @@ -1208,6 +1225,8 @@ pair_val_con_addr: provider_address: cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6 ``` +
+ ##### Provider Parameters The `params` command allows to query provider parameters information. @@ -1216,13 +1235,14 @@ The `params` command allows to query provider parameters information. interchain-security-pd query provider params [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider params ``` -Example Output: +Output: ```bash blocks_per_epoch: "3" @@ -1293,6 +1313,8 @@ template_client: trusting_period_fraction: "0.66" ``` +
+ ##### Consumer Opted In Validators The `consumer-opted-in-validators` command allows to query opted-in validators for a given consumer chain. @@ -1301,13 +1323,14 @@ The `consumer-opted-in-validators` command allows to query opted-in validators f interchain-security-pd query provider consumer-opted-in-validators [consumer-id] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider consumer-opted-in-validators 0 ``` -Example Output: +Output: ```bash validators_provider_addresses: @@ -1316,6 +1339,8 @@ validators_provider_addresses: - cosmosvalcons1ezyrq65s3gshhx5585w6mpusq3xsj3ayzf4uv6 ``` +
+ ##### Consumer Validators The `consumer-validators` command allows to query the last set consumer-validator set for a given consumer chain. @@ -1324,13 +1349,14 @@ The `consumer-validators` command allows to query the last set consumer-validato interchain-security-pd query provider consumer-validators [consumer-id] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider consumer-validators 0 ``` -Example Output: +Output: ```bash validators: @@ -1376,6 +1402,8 @@ validators: validates_current_epoch: true ``` +
+ ##### Has to Validate The `has-to-validate` command allows to query the consumer chains list a given validator has to validate. @@ -1384,13 +1412,14 @@ The `has-to-validate` command allows to query the consumer chains list a given v interchain-security-pd query provider has-to-validate [provider-validator-address] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider has-to-validate cosmoscons1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj ``` -Example Output: +Output: ```bash consumer_ids: @@ -1398,6 +1427,8 @@ consumer_ids: - "2" ``` +
+ ##### Validator Consumer Commission Rate The `validator-consumer-commission-rate` command allows to query the consumer commission rate a validator charges on a consumer chain. @@ -1406,18 +1437,21 @@ The `validator-consumer-commission-rate` command allows to query the consumer co interchain-security-pd query provider validator-consumer-commission-rate [consumer-id] [provider-validator-address] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider validator-consumer-commission-rate 0 cosmoscons1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj ``` -Example Output: +Output: ```bash rate: "0.750000000000000000" ``` +
+ ##### Blocks Until Next Epoch The `blocks-until-next-epoch` command allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains @@ -1426,18 +1460,21 @@ The `blocks-until-next-epoch` command allows to query the number of blocks until interchain-security-pd query provider blocks-until-next-epoch [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider blocks-until-next-epoch ``` -Example Output: +Output: ```bash blocks_until_next_epoch: "286" ``` +
+ ##### Consumer Id From Client Id The `consumer-id-from-client-id` command allows to query the consumer id of the chain associated with the provided client id. @@ -1446,18 +1483,21 @@ The `consumer-id-from-client-id` command allows to query the consumer id of the interchain-security-pd query provider consumer-id-from-client-id [client-id] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider consumer-id-from-client-id 07-tendermint-0 ``` -Example Output: +Output: ```bash consumer_id: "0" ``` +
+ ##### Consumer Chain The `consumer-chain` command allows to query the consumer chain associated with the consumer id. @@ -1466,12 +1506,15 @@ The `consumer-chain` command allows to query the consumer chain associated with interchain-security-pd query provider consumer-chain [consumer-id] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd query provider consumer-chain 0 ``` +Output: + ```bash chain_id: pion-1 consumer_id: "0" @@ -1505,6 +1548,8 @@ power_shaping_params: validators_power_cap: 0 ``` +
+ #### Transactions The `tx` commands allows users to interact with the `provider` module. @@ -1521,7 +1566,8 @@ The `assign-consensus-key` command allows to assign a consensus public key to us interchain-security-pd tx provider assign-consensus-key [consumer-id] [consumer-pubkey] [flags] ``` -Example +
+ Example ```bash interchain-security-pd tx provider assign-consensus-key 0 \ @@ -1533,6 +1579,8 @@ interchain-security-pd tx provider assign-consensus-key 0 \ --gas-prices="0.025stake" \ ``` +
+ Note that the consumer pubkey can be obtained by using `interchain-security-cd tendermint show-validator` command. ##### Create Consumer @@ -1543,7 +1591,8 @@ The `create-consumer` command allows to create a consumer chain. interchain-security-pd tx provider create-consumer [consumer-parameters] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd tx provider create-consumer path/to/create-consumer-msg.json \ @@ -1567,6 +1616,8 @@ where `create-consumer-msg.json` contains: } ``` +
+ ##### Update Consumer The `update-consumer` command allows to update a consumer chain. @@ -1575,7 +1626,8 @@ The `update-consumer` command allows to update a consumer chain. interchain-security-pd tx provider update-consumer [consumer-parameters] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd tx provider update-consumer path/to/update-consumer.json \ @@ -1625,6 +1677,8 @@ where `update-consumer-msg.json` contains: } ``` +
+ ##### Remove Consumer The `remove-consumer` command allows to remove a consumer chain. @@ -1633,12 +1687,15 @@ The `remove-consumer` command allows to remove a consumer chain. interchain-security-pd tx provider remove-consumer [consumer-id] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd tx provider remove-consumer 0 ``` +
+ ##### Opt In The `opt-in` command allows a validator to opt in to a consumer chain and optionally set a consensus public key. @@ -1647,7 +1704,8 @@ The `opt-in` command allows a validator to opt in to a consumer chain and option interchain-security-pd tx provider opt-in [consumer-id] [consumer-pubkey] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd tx provider opt-in 0 \ @@ -1659,6 +1717,8 @@ interchain-security-pd tx provider opt-in 0 \ --gas-prices="0.025stake" \ ``` +
+ ##### Opt Out The `opt-out` command allows validators to opt out from consumer chains. @@ -1667,7 +1727,8 @@ The `opt-out` command allows validators to opt out from consumer chains. interchain-security-pd tx provider opt-out [consumer-id] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd tx provider opt-out 0 \ @@ -1678,6 +1739,8 @@ interchain-security-pd tx provider opt-out 0 \ --gas-prices="0.025stake" \ ``` +
+ ##### Set Consumer Commission Rate The `set-consumer-commission-rate` command allows to set a per-consumer chain commission rate. @@ -1686,7 +1749,8 @@ The `set-consumer-commission-rate` command allows to set a per-consumer chain co interchain-security-pd tx provider set-consumer-commission-rate [consumer-id] [commission-rate] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd tx provider set-consumer-commission-rate 0 0.5 \ @@ -1697,6 +1761,8 @@ interchain-security-pd tx provider set-consumer-commission-rate 0 0.5 \ --gas-prices="0.025stake" \ ``` +
+ ##### Submit Consumer Double Voting The `submit-consumer-double-voting` command allows to submit a double voting evidence for a consumer chain. @@ -1705,7 +1771,8 @@ The `submit-consumer-double-voting` command allows to submit a double voting evi interchain-security-pd tx provider submit-consumer-double-voting [consumer-id] [evidence] [infraction_header] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd tx provider submit-consumer-double-voting 0 path/to/evidence.json path/to/infraction_header.json \ @@ -1760,10 +1827,9 @@ where `evidence.json` contains: "validator_power": "500", "timestamp": "2024-09-26T09:34:45.945436342Z" } - ``` -where `infraction_header.json` contains: +and `infraction_header.json` contains: ```json { @@ -1868,9 +1934,10 @@ where `infraction_header.json` contains: }, "trusted_validators": null } - ``` +
+ ##### Submit Consumer Misbehaviour The `submit-consumer-misbehaviour` command allows to submit an IBC misbehaviour for a consumer chain. @@ -1879,7 +1946,8 @@ The `submit-consumer-misbehaviour` command allows to submit an IBC misbehaviour interchain-security-pd tx provider submit-consumer-misbehaviour [consumer-id] [misbehaviour] [flags] ``` -Example: +
+ Example ```bash interchain-security-pd tx provider submit-consumer-misbehaviour 0 path/to/consumer-misbehaviour.json @@ -2084,9 +2152,10 @@ where `consumer-misbehaviour.json` contains: } } } - ``` +
+ ### gRPC A user can query the `provider` module using gRPC endpoints. @@ -2099,14 +2168,15 @@ The `QueryConsumerGenesis` endpoint queries a consumer chain genesis state by co interchain_security.ccv.provider.v1.Query/QueryConsumerGenesis ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 \ interchain_security.ccv.provider.v1.Query/QueryConsumerGenesis ``` -Example Output: +Output: ```json @@ -2213,6 +2283,8 @@ Example Output: } ``` +
+ #### List Consumer Chains The `QueryConsumerChains` endpoint queries consumer chains supported by the provider chain. @@ -2222,13 +2294,14 @@ An optional integer parameter can be passed for phase filtering of consumer chai interchain_security.ccv.provider.v1.Query/QueryConsumerChains ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"phase": "1"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChains ``` -Example Output: +Output: ```json { @@ -2262,6 +2335,8 @@ Example Output: } ``` +
+ #### Validator Consumer Key Assignment The `QueryValidatorConsumerAddr` endpoint queries the address assigned by a validator for a consumer chain. @@ -2271,13 +2346,14 @@ The `QueryValidatorConsumerAddr` endpoint queries the address assigned by a vali interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerAddr ``` -Example Output: +Output: ```json { @@ -2285,6 +2361,8 @@ Example Output: } ``` +
+ #### Validator Provider Key The `QueryValidatorProviderAddr` endpoint queries the provider chain address given a consumer chain validator address. @@ -2293,19 +2371,21 @@ The `QueryValidatorProviderAddr` endpoint queries the provider chain address giv interchain_security.ccv.provider.v1.Query/QueryValidatorProviderAddr ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorProviderAddr ``` -Example Output: +Output: ```json { "consumerAddress": "cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk" } ``` +
#### Throttle State @@ -2315,13 +2395,14 @@ The `QueryThrottleState` queries the main on-chain state relevant to slash packe interchain_security.ccv.provider.v1.Query/QueryThrottleState ``` -Example: +
+ Example ```bash grpcurl -plaintext localhost:9090 interchain_security.ccv.provider.v1.Query/QueryThrottleState ``` -Example Output: +Output: ```json { @@ -2331,6 +2412,8 @@ Example Output: } ``` +
+ ##### Registered Consumer Reward Denoms The `QueryRegisteredConsumerRewardDenoms` command allows to query registered consumer reward denoms @@ -2339,13 +2422,14 @@ The `QueryRegisteredConsumerRewardDenoms` command allows to query registered con interchain_security.ccv.provider.v1.Query/QueryRegisteredConsumerRewardDenoms ``` -Example: +
+ Example ```bash grpcurl -plaintext localhost:9090 interchain_security.ccv.provider.v1.Query/QueryRegisteredConsumerRewardDenoms ``` -Example Output: +Output: ```json { @@ -2357,6 +2441,8 @@ Example Output: } ``` +
+ #### All Pairs Valconsensus Address The `QueryAllPairsValConsAddrByConsumer` endpoint queries the list of pair valconsensus address between provider and consumer chain. @@ -2365,13 +2451,14 @@ The `QueryAllPairsValConsAddrByConsumer` endpoint queries the list of pair valco interchain_security.ccv.provider.v1.Query/QueryAllPairsValConsAddrByConsumer ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryAllPairsValConsAddrByConsumer ``` -Example Output: +Output: ```json { @@ -2387,6 +2474,8 @@ Example Output: } ``` +
+ #### Provider Parameters The `QueryParams` endpoint queries all current values of provider parameters. @@ -2395,13 +2484,14 @@ The `QueryParams` endpoint queries all current values of provider parameters. interchain_security.ccv.provider.v1.Query/QueryParams ``` -Example: +
+ Example ```bash grpcurl -plaintext localhost:9090 interchain_security.ccv.provider.v1.Query/QueryParams ``` -Example Output: +Output: ```json { @@ -2474,6 +2564,8 @@ Example Output: } ``` +
+ #### Consumer Opted In Validators The `QueryConsumerChainOptedInValidators` endpoint queries opted-in validators for a given consumer chain. @@ -2482,13 +2574,14 @@ The `QueryConsumerChainOptedInValidators` endpoint queries opted-in validators f interchain_security.ccv.provider.v1.Query/QueryConsumerChainOptedInValidators ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChainOptedInValidators ``` -Example Output: +Output: ```json { @@ -2500,6 +2593,8 @@ Example Output: } ``` +
+ #### Consumer Validators The `QueryConsumerValidators` endpoint queries the latest set consumer-validator set for a given consumer ID. @@ -2509,13 +2604,14 @@ Note that this does not necessarily mean that the consumer chain is using this v interchain_security.ccv.provider.v1.Query/QueryConsumerValidators ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerValidators ``` -Example Output: +Output: ```json { @@ -2578,6 +2674,8 @@ Example Output: } ``` +
+ #### Has to Validate The `QueryConsumerChainsValidatorHasToValidate` endpoint queries a list of consumer chains that a given validator must validate. @@ -2586,13 +2684,14 @@ The `QueryConsumerChainsValidatorHasToValidate` endpoint queries a list of consu interchain_security.ccv.provider.v1.Query/QueryConsumerChainsValidatorHasToValidate ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChainsValidatorHasToValidate ``` -Example Output: +Output: ```json { @@ -2603,6 +2702,8 @@ Example Output: } ``` +
+ #### Validator Consumer Commission Rate The `QueryValidatorConsumerCommissionRate` endpoint queries the consumer commission rate a validator charges on a consumer chain. @@ -2611,13 +2712,14 @@ The `QueryValidatorConsumerCommissionRate` endpoint queries the consumer commiss interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerCommissionRate ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"consumer_id": "0", "provider_address": "cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryValidatorConsumerCommissionRate ``` -Example Output: +Output: ```json { @@ -2625,6 +2727,8 @@ Example Output: } ``` +
+ #### Blocks Until Next Epoch The `QueryBlocksUntilNextEpoch` endpoint allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains. @@ -2633,13 +2737,14 @@ The `QueryBlocksUntilNextEpoch` endpoint allows to query the number of blocks un interchain_security.ccv.provider.v1.Query/QueryBlocksUntilNextEpoch ``` -Example: +
+ Example ```bash grpcurl -plaintext localhost:9090 interchain_security.ccv.provider.v1.Query/QueryBlocksUntilNextEpoch ``` -Example Output: +Output: ```json { @@ -2647,6 +2752,8 @@ Example Output: } ``` +
+ #### Consumer Id From Client Id The `QueryConsumerIdFromClientId` endpoint allows to query the consumer id of the chain associated with the provided client id. @@ -2655,13 +2762,14 @@ The `QueryConsumerIdFromClientId` endpoint allows to query the consumer id of th interchain_security.ccv.provider.v1.Query/QueryConsumerIdFromClientId ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"client_id":"07-tendermint-0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerIdFromClientId ``` -Example Output: +Output: ```bash { @@ -2669,6 +2777,8 @@ Example Output: } ``` +
+ #### Consumer Chain The `QueryConsumerChain` command allows to query the consumer chain associated with the consumer id. @@ -2677,7 +2787,8 @@ The `QueryConsumerChain` command allows to query the consumer chain associated w interchain_security.ccv.provider.v1.Query/QueryConsumerChain ``` -Example: +
+ Example ```bash grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security.ccv.provider.v1.Query/QueryConsumerChain @@ -2717,6 +2828,8 @@ grpcurl -plaintext -d '{"consumer_id": "0"}' localhost:9090 interchain_security. } ``` +
+ ### REST A user can query the `provider` module using REST endpoints. @@ -2730,13 +2843,14 @@ The `consumer_genesis` endpoint queries a consumer chain genesis state by consum interchain_security/ccv/provider/consumer_genesis/{consumer_id} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/consumer_genesis/0 ``` -Example Output: +Output: ```json { @@ -2842,6 +2956,8 @@ Example Output: } ``` +
+ #### List Consumer Chains The `consumer_chains` endpoint queries consumer chains supported by the provider chain. @@ -2851,13 +2967,14 @@ An optional integer parameter can be passed for phase filtering of consumer chai interchain_security/ccv/provider/consumer_chains/{phase} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/consumer_chains/3 ``` -Example Output: +Output: ```json { @@ -2891,22 +3008,24 @@ Example Output: } ``` +
+ #### Validator Consumer Key Assignment The `validator_consumer_addr` endpoint queries the address assigned by a validator for a consumer chain. - ```bash /interchain_security/ccv/provider/validator_consumer_addr/{consumer_id}/{provider_address} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/validator_consumer_addr/0/cosmosvalcons1h7zs5nwruzvhyzkktvhwypfuxlch6nrrw4jjmj ``` -Example Output: +Output: ```json { @@ -2914,6 +3033,8 @@ Example Output: } ``` +
+ #### Validator Provider Key The `validator_provider_addr` endpoint queries the provider chain address given a consumer chain validator address. @@ -2922,13 +3043,14 @@ The `validator_provider_addr` endpoint queries the provider chain address given /interchain_security/ccv/provider/validator_provider_addr/{consumer_id}/{consumer_address} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/validator_provider_addr/0/cosmosvalcons1kswr5sq599365kcjmhgufevfps9njf43e4lwdk ``` -Example Output: +Output: ```json { @@ -2936,6 +3058,8 @@ Example Output: } ``` +
+ #### Throttle State The `throttle_state` queries the main on-chain state relevant to slash packet throttling. @@ -2944,13 +3068,14 @@ The `throttle_state` queries the main on-chain state relevant to slash packet th "/interchain_security/ccv/provider/throttle_state" ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/throttle_state ``` -Example Output: +Output: ```json { @@ -2960,6 +3085,8 @@ Example Output: } ``` +
+ #### Registered Consumer Reward Denoms The `registered_consumer_reward_denoms` endpoint allows to query registered consumer reward denoms @@ -2968,13 +3095,14 @@ The `registered_consumer_reward_denoms` endpoint allows to query registered cons interchain_security/ccv/provider/registered_consumer_reward_denoms ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/registered_consumer_reward_denoms ``` -Example Output: +Output: ```json { @@ -2986,6 +3114,8 @@ Example Output: } ``` +
+ #### All Pairs Valconsensus Address The `address_pairs` endpoint queries the list of pair valconsensus address between provider and consumer chain. @@ -2994,13 +3124,14 @@ The `address_pairs` endpoint queries the list of pair valconsensus address betwe interchain_security/ccv/provider/address_pairs/{consumer_id} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/address_pairs/0 ``` -Example Output: +Output: ```json { @@ -3016,6 +3147,8 @@ Example Output: } ``` +
+ #### Provider Parameters The `params` endpoint queries all current values of provider parameters @@ -3024,13 +3157,14 @@ The `params` endpoint queries all current values of provider parameters interchain_security/ccv/provider/params ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/params ``` -Example Output: +Output: ```json { @@ -3103,6 +3237,8 @@ Example Output: } ``` +
+ #### Consumer Opted In Validators The `opted_in_validators` endpoint queries opted-in validators for a given consumer chain @@ -3111,13 +3247,14 @@ The `opted_in_validators` endpoint queries opted-in validators for a given consu /interchain_security/ccv/provider/opted_in_validators/{consumer_id} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/opted_in_validators/0 ``` -Example Output: +Output: ```json { @@ -3129,6 +3266,8 @@ Example Output: } ``` +
+ #### Consumer Validators The `consumer_validators` endpoint queries the latest set consumer-validator set for a given consumer ID @@ -3138,13 +3277,14 @@ Note that this does not necessarily mean that the consumer chain is using this v /interchain_security/ccv/provider/consumer_validators/{consumer_id} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/consumer_validators/0 ``` -Example Output: +Output: ```json { @@ -3207,6 +3347,8 @@ Example Output: } ``` +
+ #### Has to Validate The `consumer_chains_per_validator` endpoint queries a list of consumer chains that a given validator must validate. @@ -3215,13 +3357,14 @@ The `consumer_chains_per_validator` endpoint queries a list of consumer chains t interchain_security/ccv/provider/consumer_chains_per_validator/{provider_address} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/consumer_chains_per_validator/cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph ``` -Example Output: +Output: ```json { @@ -3232,6 +3375,8 @@ Example Output: } ``` +
+ #### Validator Consumer Commission Rate The `consumer_commission_rate` endpoint queries the consumer commission rate a validator charges on a consumer chain. @@ -3240,13 +3385,14 @@ The `consumer_commission_rate` endpoint queries the consumer commission rate a v /interchain_security/ccv/provider/consumer_commission_rate/{consumer_id}/{provider_address} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/consumer_commission_rate/0/cosmosvalcons1znhu88l6dsvexunfem4u0392kwqyvdkrj66wph ``` -Example Output: +Output: ```json { @@ -3254,6 +3400,8 @@ Example Output: } ``` +
+ #### Blocks Until Next Epoch The `blocks_until_next_epoch` endpoint allows to query the number of blocks until the next epoch begins and validator updates are sent to consumer chains @@ -3262,13 +3410,14 @@ The `blocks_until_next_epoch` endpoint allows to query the number of blocks unti interchain_security/ccv/provider/blocks_until_next_epoch ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/blocks_until_next_epoch ``` -Example Output: +Output: ```json { @@ -3276,6 +3425,8 @@ Example Output: } ``` +
+ #### Consumer Id From Client Id The `consumer_id` endpoint allows to query the consumer id of the chain associated with the provided client id @@ -3284,13 +3435,14 @@ The `consumer_id` endpoint allows to query the consumer id of the chain associat /interchain_security/ccv/provider/consumer_id/{client_id} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/consumer_id/07-tendermint-0 ``` -Example Output: +Output: ```json { @@ -3298,6 +3450,8 @@ Example Output: } ``` +
+ #### Consumer Chain The `consumer_chain` endpoint allows to query the consumer chain associated with the consumer id. @@ -3306,13 +3460,14 @@ The `consumer_chain` endpoint allows to query the consumer chain associated with interchain_security/ccv/provider/consumer_chain/{consumer_id} ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/provider/consumer_chain/0 ``` -Example Output: +Output: ```json { @@ -3346,4 +3501,6 @@ Example Output: "allowInactiveVals": true } } -``` \ No newline at end of file +``` + +
diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index e343184625..431ee67815 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -461,13 +461,14 @@ The `next-fee-distribution` command allows to query next fee distribution data. interchain-security-cd query ccvconsumer next-fee-distribution [flags] ``` -Example: +
+ Example ```bash interchain-security-cd query ccvconsumer next-fee-distribution ``` -Example Output: +Output: ```bash data: @@ -480,6 +481,8 @@ data: total: "" ``` +
+ ##### Provider Info The `provider-info` command allows to query provider info. @@ -488,13 +491,14 @@ The `provider-info` command allows to query provider info. interchain-security-cd query ccvconsumer provider-info [flags] ``` -Example: +
+ Example ```bash interchain-security-cd query ccvconsumer provider-info ``` -Example Output: +Output: ```bash consumer: @@ -509,6 +513,8 @@ provider: connectionID: connection-0 ``` +
+ ##### Throttle State The `throttle-state` command allows to query on-chain state relevant with slash packet throttling. @@ -517,13 +523,14 @@ The `throttle-state` command allows to query on-chain state relevant with slash interchain-security-cd query ccvconsumer throttle-state [flags] ``` -Example: +
+ Example ```bash interchain-security-cd query ccvconsumer throttle-state ``` -Example Output: +Output: ```bash packet_data_queue: @@ -539,6 +546,8 @@ slash_record: waiting_on_reply: true ``` +
+ ##### Params The `params` command allows to query consumer module parameters. @@ -547,13 +556,14 @@ The `params` command allows to query consumer module parameters. interchain-security-cd query ccvconsumer params [flags] ``` -Example: +
+ Example ```bash interchain-security-cd query ccvconsumer params ``` -Example Output: +Output: ```bash params: @@ -573,6 +583,8 @@ params: unbonding_period: 1209600s ``` +
+ ### gRPC A user can query the `consumer` module using gRPC endpoints. @@ -585,13 +597,14 @@ The `QueryNextFeeDistribution` endpoint queries next fee distribution data. interchain_security.ccv.consumer.v1.Query/QueryNextFeeDistribution ``` -Example: +
+ Example ```bash grpcurl -plaintext localhost:9090 interchain_security.ccv.consumer.v1.Query/QueryNextFeeDistribution ``` -Example Output: +Output: ```json { @@ -604,6 +617,8 @@ Example Output: } ``` +
+ #### Provider Info The `QueryProviderInfo` endpoint queries provider info. @@ -612,13 +627,14 @@ The `QueryProviderInfo` endpoint queries provider info. interchain_security.ccv.consumer.v1.Query/QueryProviderInfo ``` -Example: +
+ Example ```bash grpcurl -plaintext localhost:9090 interchain_security.ccv.consumer.v1.Query/QueryProviderInfo ``` -Example Output: +Output: ```json { @@ -637,22 +653,24 @@ Example Output: } ``` +
+ #### Throttle State The `QueryThrottleState` endpoint queries on-chain state relevant with slash packet throttling. - ```bash interchain_security.ccv.consumer.v1.Query/QueryThrottleState ``` -Example: +
+ Example ```bash grpcurl -plaintext localhost:9090 interchain_security.ccv.consumer.v1.Query/QueryThrottleState ``` -Example Output: +Output: ```json { @@ -676,6 +694,8 @@ Example Output: } ``` +
+ #### Params The `QueryParams` endpoint queries consumer module parameters. @@ -684,13 +704,14 @@ The `QueryParams` endpoint queries consumer module parameters. interchain_security.ccv.consumer.v1.Query/QueryParams ``` -Example: +
+ Example ```bash grpcurl -plaintext localhost:9090 interchain_security.ccv.consumer.v1.Query/QueryParams ``` -Example Output: +Output: ```json { @@ -711,6 +732,8 @@ Example Output: } ``` +
+ ### REST A user can query the `consumer` module using REST endpoints. @@ -723,13 +746,14 @@ The `next-fee-distribution` endpoint queries next fee distribution data. /interchain_security/ccv/consumer/next-fee-distribution ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/consumer/next-fee-distribution ``` -Example Output: +Output: ```json { @@ -742,6 +766,8 @@ Example Output: } ``` +
+ #### Provider Info The `QueryProviderInfo` endpoint queries provider info. @@ -750,13 +776,14 @@ The `QueryProviderInfo` endpoint queries provider info. /interchain_security/ccv/consumer/provider-info ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/consumer/provider-info ``` -Example Output: +Output: ```json { @@ -775,6 +802,8 @@ Example Output: } ``` +
+ #### Throttle State The `throttle_state` endpoint queries on-chain state relevant with slash packet throttling. @@ -784,13 +813,14 @@ The `throttle_state` endpoint queries on-chain state relevant with slash packet /interchain_security/ccv/consumer/throttle_state ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/consumer/throttle_state ``` -Example Output: +Output: ```json { @@ -809,6 +839,8 @@ Example Output: } ``` +
+ #### Params The `params` endpoint queries consumer module parameters. @@ -817,13 +849,14 @@ The `params` endpoint queries consumer module parameters. /interchain_security/ccv/consumer/params ``` -Example: +
+ Example ```bash curl http://localhost:1317/interchain_security/ccv/consumer/params ``` -Example Output: +Output: ```json { @@ -842,4 +875,6 @@ Example Output: "consumerId": "0" } } -``` \ No newline at end of file +``` + +
From 007d44a88f6cae76ee670bc45f2d6410b4fe157c Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 2 Oct 2024 13:28:56 +0200 Subject: [PATCH 29/32] update overview --- docs/docs/index.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/index.mdx b/docs/docs/index.mdx index 576da1feee..f0cc59b104 100644 --- a/docs/docs/index.mdx +++ b/docs/docs/index.mdx @@ -8,11 +8,11 @@ import homeCards from '/src/components/Cards/card-data/home-cards'; # Cosmos Hub - Interchain Security -Welcome to the official documentation for the Cosmos Hub's Interchain Security - a platform for launching Cosmos-SDK chains. +Welcome to the official documentation for the Cosmos Hub's Interchain Security (ICS) - a platform for launching Cosmos-SDK chains. *The Cosmos Hub is the best place to launch a chain.* -With the recent launch of [Partial Set Security](/features/partial-set-security) (PSS), it's easier than ever to leverage the Cosmos Hub validators, stake, and community for your chain. PSS provides powerful new capabilities for permissionlessly launching your chain and [shaping your validator set](/features/power-shaping). +With the recent launch of the [Partial Set Security](/features/partial-set-security) and [Permissionless](/features/permissionless) features, it's easier than ever to leverage the Cosmos Hub validators, stake, and community for your chain. ICS provides powerful capabilities for permissionlessly launching your chain and [shaping your validator set](/features/power-shaping). Here you can find information about Interchain Security, consumer chain development and instructions for validator onboarding. From 6a865f21773fbf85a84ce952d1cf22b1765a397a Mon Sep 17 00:00:00 2001 From: MSalopek Date: Wed, 2 Oct 2024 13:43:22 +0200 Subject: [PATCH 30/32] docs: fix broken docs; cleanup versions (#2321) * docs: update config and supported verisons * fix broken config * fix broken version import * add back missing image --- docs/build_deploy.sh | 5 ----- docs/docusaurus.config.js | 7 ------- docs/figures/hypha-consumer-start-process.svg | 1 + docs/supported_versions.json | 3 ++- 4 files changed, 3 insertions(+), 13 deletions(-) create mode 100644 docs/figures/hypha-consumer-start-process.svg diff --git a/docs/build_deploy.sh b/docs/build_deploy.sh index a5cfb5676f..7f2567fb1c 100755 --- a/docs/build_deploy.sh +++ b/docs/build_deploy.sh @@ -5,10 +5,5 @@ echo "building docusaurus main docs" cp supported_versions.json versions.json npm ci && npm run build -# copy "legacy" docs directory into the final build directory -# the directory is in "docs/legacy" of the source branch (legacy-docs-page) -# the build environment must be in "./docs" for this to work as expected -git checkout origin/legacy-docs-page -- legacy -cp -r ./legacy ./build/ mv build ~/output echo "done building docusaurus main docs" diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 1f3b46069e..0ef23ac466 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -88,13 +88,6 @@ const config = { type: "docsVersionDropdown", position: "left", dropdownActiveClassDisabled: false, - dropdownItemsAfter: [ - { - href: "https://cosmos.github.io/interchain-security/legacy", - label: "<= v3.x", - target: "_blank", - }, - ], }, ], }, diff --git a/docs/figures/hypha-consumer-start-process.svg b/docs/figures/hypha-consumer-start-process.svg new file mode 100644 index 0000000000..1be7b61b7d --- /dev/null +++ b/docs/figures/hypha-consumer-start-process.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/supported_versions.json b/docs/supported_versions.json index 5d08202e48..b81ffadf87 100644 --- a/docs/supported_versions.json +++ b/docs/supported_versions.json @@ -1,4 +1,5 @@ [ + "v6.1.0", "v5.2.0", - "v4.4.1" + "v4.5.0" ] \ No newline at end of file From 8b5f1790be0107809f9be63c47bac5612a47db48 Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 2 Oct 2024 13:45:14 +0200 Subject: [PATCH 31/32] expand toc level --- docs/docs/build/modules/02-provider.md | 2 ++ docs/docs/build/modules/03-consumer.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/docs/build/modules/02-provider.md b/docs/docs/build/modules/02-provider.md index 8dd09b0fca..2ddcf52419 100644 --- a/docs/docs/build/modules/02-provider.md +++ b/docs/docs/build/modules/02-provider.md @@ -1,5 +1,7 @@ --- sidebar_position: 2 +toc_min_heading_level: 2 +toc_max_heading_level: 5 --- # x/ccv/provider diff --git a/docs/docs/build/modules/03-consumer.md b/docs/docs/build/modules/03-consumer.md index 431ee67815..289ffb2bcb 100644 --- a/docs/docs/build/modules/03-consumer.md +++ b/docs/docs/build/modules/03-consumer.md @@ -1,5 +1,7 @@ --- sidebar_position: 3 +toc_min_heading_level: 2 +toc_max_heading_level: 5 --- # x/ccv/consumer From 49f0fe6503c6251a9752b882ca050e247625fbc3 Mon Sep 17 00:00:00 2001 From: mpoke Date: Wed, 2 Oct 2024 13:51:38 +0200 Subject: [PATCH 32/32] fix broken link --- .../consumer-development/consumer-genesis-transformation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/consumer-development/consumer-genesis-transformation.md b/docs/docs/consumer-development/consumer-genesis-transformation.md index 3b253fb99d..d77e8ec559 100644 --- a/docs/docs/consumer-development/consumer-genesis-transformation.md +++ b/docs/docs/consumer-development/consumer-genesis-transformation.md @@ -7,12 +7,12 @@ sidebar_position: 6 Preparing a consumer chain for onboarding requires some information explaining how to run your chain. This includes a genesis file with CCV data where the CCV data is exported from the provider chain and added to the consumers genesis file (for more details check the documentation on [Onboarding](./onboarding.md) and [Changeover](./changeover-procedure.md)). In case that the provider chain is running an older version of the InterChainSecurity (ICS) module than the consumer chain - or vice versa - the exported CCV data might need to be transformed to the format supported by the ICS implementation run on the consumer chain. This is the case if the consumer chain runs version 4 of ICS or later and the provider is running version 3 or older of the ICS module. -Check the [compatibility notes](../../../RELEASES.md#backwards-compatibility) for known incompatibilities between provider and consumer versions and indications if a consumer genesis transformation is required. +Check the [compatibility notes](https://github.com/cosmos/interchain-security/blob/main/RELEASES.md#backwards-compatibility) for known incompatibilities between provider and consumer versions and indications if a consumer genesis transformation is required. To transform such CCV data follow the instructions below ## 1. Prerequisite -- used provider and consumer versions require transformation step as indicated in in the [compatibility notes](../../../RELEASES.md#backwards-compatibility) +- used provider and consumer versions require transformation step as indicated in in the [compatibility notes](https://github.com/cosmos/interchain-security/blob/main/RELEASES.md#backwards-compatibility) - interchain-security-cd application supports the versions used by the consumer and provider ## 2. Export the CCV data