diff --git a/docs/docs/adrs/adr-021-consumer-chain-clients.md b/docs/docs/adrs/adr-021-consumer-chain-clients.md new file mode 100644 index 0000000000..cffc3798fd --- /dev/null +++ b/docs/docs/adrs/adr-021-consumer-chain-clients.md @@ -0,0 +1,180 @@ +--- +sidebar_position: 22 +title: Consumer Chain Clients +--- +# ADR 021: Consumer Chain Clients + +## Changelog +- 2024-08-14: Initial draft of ADR + +## Status + +Proposed + +## Context + +> In this document, _host_ chain and _remote_ chain are used in the following context: a light client of a remote chain is in the state of a host chain. + + +### IBC Client Updates + +IBC Client Updates require two pieces of information: + +* A header (and a validator set) that originates from the consensus engine of the remote chain, i.e., + ```protobuf + message Header { + .tendermint.types.SignedHeader signed_header = 1 + .tendermint.types.ValidatorSet validator_set = 2 + ibc.core.client.v1.Height trusted_height = 3 + .tendermint.types.ValidatorSet trusted_validators = 4 + } + ``` + Note that the header also contain `Commit` information, i.e., the signatures that got the block committed. + +* The client state, that is initialized when the client is created and then maintained through client updates. + Two important fields of the client state are the `UnbondingPeriod` (i.e., duration of the staking unbonding period) and the `TrustingPeriod`, which must be smaller than the `UnbondingPeriod` (see the ***Tendermint Security Model*** in the [Tendermint Light Client paper](https://arxiv.org/pdf/2010.07031)). + The `TrustingPeriod` is _the duration, since the timestamp of the latest header the client got updated to, during which new headers are accepted for updating the client_. + The `UnbondingPeriod` originates from the application of the remote chain (i.e., a staking module param), which means the `TrustingPeriod` originates from the remote application as well. + ```golang + if HeaderExpired(trustedHeader, trustingPeriod, now) { + return ErrOldHeaderExpired{trustedHeader.Time.Add(trustingPeriod), now} + } + + // HeaderExpired return true if the given header expired. + func HeaderExpired(h *types.SignedHeader, trustingPeriod time.Duration, now time.Time) bool { + expirationTime := h.Time.Add(trustingPeriod) + return !expirationTime.After(now) + } + ``` + In other words, a new header received at timestamp `ts` is rejected if the following inequality holds for any trusted header `h`: + ```golang + // h is a header of the remote chain + // h.T is a timestamp on the remote chain + // ts is a timestamp on the host chain + h.T + TrustingPeriod <= ts + ``` + The following figure describes the algorithm used by the host chain to reject headers outside of the `TrustingPeriod`. + + ![IBC Client Updates](./figures/adr-021-trusting-period.png) + +
+ Intuition behind the trusting period. + The trusting period is there to make sure that the validators that signed for the trusted header have their collateral still locked so that in case they misbehave (i.e., light client attack), this collateral can be slashed. + Note that the validators that signed the trusted header are responsible for the untrusted header (for both Sequential Verification and Skipping Verification). For more details, see Figure 1 and 3 in the [Tendermint Light Client paper](https://arxiv.org/pdf/2010.07031): + + ![Sequential Verification](./figures/adr-021-sequential-verification.png) + + ![Skipping Verification](./figures/adr-021-skipping-verification.png) +
+ +### Updating Consumers' IBC Clients + +> In the context of ICS, the provider is one of the host chains and the consumers are the remote chains. Note that other third-party chains could be host chains as well. + +Consumer chains have their own consensus engine — validators that opt in need to run full nodes of the consumer chains, which consist of both consensus and application layer. +This means that consumers produce headers and a relayer could use those headers to update the consumer’s IBC clients on other chains (the provider included). +However, consumer chains don’t have their own staking module. + +In ICS, the provider is the “staking module” of the consumer chains — validators lock collateral on the provider and as a result can produce blocks on consumer chains. +The consumer module on the consumer chains is just a representation of the provider’s staking module, i.e., it provides an _asynchronous_ view of the voting powers and indirectly of the locked collateral. +The key word here is _asynchronous_, which means that (in theory) there is no bound on the lag between the provider’s view of stake and the consumer’s view of stake. +The reasons for this asynchrony are relaying delays and chain liveness (e.g., a consumer could be down for a long period of time without affecting the liveness of the staking module on the provider). + +The following figure describes the problem of using the same condition (based on the trusting period), i.e., +```golang +// hc is a header of the consumer chain +// hc.T is a timestamp on the consumer chain +// ts is a timestamp on the host chain +hc.T + TrustingPeriod <= ts +``` +to reject consumer headers outside of the `TrustingPeriod`. +The issue is that the time period `hc.T` and `T` (the time at which the validator set `V` was locked on the provider) depends on the consumer chain, i.e., the consumer chain can choose an arbitrary time when to send `V` to CometBFT. +As a result, even if `hc.T + TrustingPeriod > ts` (i.e., the header is received within the trusting period), if `hc.T - T` is large enough, then the stake of `V` could be already unlocked on the provider. + +![ICS Client Updates](./figures/adr-021-ics-trusting-period.png) + +Note that before the [removal of `VSCMaturedPackets`](./adr-018-remove-vscmatured.md), the consumers had a _partially synchronous_ view of the provider’s staking module. +Partially synchronous means that the lag between the provider’s view of stake and the consumer’s view of stake is bounded, because consumers that exceeded this lag were forcibly removed from the protocol. +The issue was that whatever attack is possible with an asynchronous view of the staking module, it is eventually possible with the partially synchronous view as well. +For more details on this, please check out [ADR 018](./adr-018-remove-vscmatured.md). + +This ADR proposes a solution to this synchrony issue -- it uses [IBC conditional clients](https://github.com/cosmos/ibc-go/issues/5112) to create a _synchronous_ view of the provider’s staking module. + +## Decision + +The idea is to extend the IBC light clients for ICS consumer chains to accept a new header received at timestamp `ts` only if, given any trusted header `h`, `h.ProviderTime + TrustingPeriod > ts`, where `h.ProviderTime` is the timestamp on the provider when `h.Valset` locked its stake. + +The implementation of this feature consists of three parts: + +- Store `h.ProviderTime` (the timestamps when the consumer validator sets locked their stake) in the provider state. + Note that this state can be pruned once the provider unbonding period elapses. +- Extend the IBC light client logic on the host chains to reject headers received at timestamp `ts` if, given any trusted header `h`, + `h.ProviderTime + TrustingPeriod <= ts`. + Note that this logic must existing both on the provider chain and on third party chains (including other consumer chains). +- For cases when the host chain is different than the provider chain, enable relayers to work with [IBC conditional clients](https://github.com/cosmos/ibc-go/issues/5112). + +The remainder of this section is addressing the first part and the second part for the case when the host chain is the provider chain. +The second part for the case when the host chain is different than the provider chain and the third part are outside the scope of this ADR. + +### Store Provider Timestamps + +Currently, the provider module stores the validator set for every consumer chain. +This is done by calling `SetConsumerValSet()` at the end of every epoch when queueing new `VSCPackets`. +This is the timestamp when the validator set locked its stake (i.e., `h.ProviderTime`). +For consumer chain clients, the provider needs to store these timestamps. + +#### State + +`ConsumerValidatorTimestampKey` - Stores the latest timestamp when the validator set `V` of a consumer chain with `consumerID` locked its stake on the provider chain. +```golang +ConsumerValidatorTimestampBytePrefix | len(consumerID) | consumerID | valsetHash -> V.lockTs +``` +where `valsetHash` is the hash of `V`. Note that this hash is the same as the one in the headers produced by the consumer chain validated by `V`. +Also, note that `V.lockTs` is the same as `h.ProviderTime` above. + +The guarantee provided by the provider chain is that the stake of `V` will be locked until `V.lockTs + UnbondingPeriod`. +This is sufficient information for consumer chain clients to decide whether new headers are outside the trusting period. +This guarantee has two consequences. +First, it is sufficient to store the latest timestamp: If a consumer chain has the same validator set `V` over multiple epochs, the only relevant information is the timestamp until when `V`'s stake will be locked on the provider and this can be derived from `V.lockTs`. +Second, this state can be pruned once the unbonding period elapses, i.e., once the provider block time exceeds `V.lockTs + UnbondingPeriod`. + +#### Query + +To query the timestamps when consumer validator sets are locked on the provider, the following query is introduced: +```bash +interchain-security-pd query provider valsetLockTs $consumerID $valsetHash +``` + +### ICS Conditional Clients on the Provider + +If the host chain is different than the provider chain, then it needs to use [IBC conditional clients](https://github.com/cosmos/ibc-go/issues/5112) to connect to consumer chains. +These conditional clients would need to query the provider chain before they can accept a new header from the consumer chains. +In practice, a relayer would send all the information needed (i.e., the new header and the timestamp when the provider locked the stake corresponding to the validator set that signed the trusted header) and the conditional client will verify this information using the existing light client of the provider chain. +Note that this is also the case for consumer chains acting as host chain and connecting to other consumer chains. + +This section focuses though on the case when the host chain is the provider chain. +As the additional information needed is already on the host chain, there is no need for a conditional client. +Instead, the provider module needs to act as a "middleware" for all IBC ClientUpdate messages coming from consumer chains and reject headers that were signed by validators outside of the trusting period. + +## Consequences + +### Positive + +* Improve the security of IBC communication with consumer chains. + +### Negative + +* The liveness of consumer chains IBC channels depends on the liveness of the provider. Note though that as long as the provider client on the third-party chain is not expiring, the IBC channels of the consumer chains will remain live. +* For IBC to work, third-party chains need to have conditional clients of the consumer chains. This includes also other consumer chains. +* Additional state is needed on the provider chain to store previous consumer validator sets. This state can be pruned once the unbonding period elapses. + +### Neutral + +* N/A + +## References + +* [ADR 018: Remove VSCMatured Packets](./adr-018-remove-vscmatured.md) +* [IBC conditional clients](https://github.com/cosmos/ibc-go/issues/5112) +* [Querier Approach for Conditional Clients](https://github.com/cosmos/ibc-go/issues/5310) +* [Original conditional client idea in the IBC specs](https://github.com/cosmos/ibc/pull/939) diff --git a/docs/docs/adrs/figures/adr-021-ics-trusting-period.excalidraw b/docs/docs/adrs/figures/adr-021-ics-trusting-period.excalidraw new file mode 100644 index 0000000000..95faf0bd84 --- /dev/null +++ b/docs/docs/adrs/figures/adr-021-ics-trusting-period.excalidraw @@ -0,0 +1,1903 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 1214, + "versionNonce": 844832259, + "index": "Zp", + "isDeleted": false, + "id": "zjd1nSwdKZROD-V0lCeCn", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 1239.5, + "y": 447.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 294.99999999999994, + "height": 200.00000000000003, + "seed": 84628316, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "R3f1PEqKckpu3yIGeZnW_", + "type": "arrow" + } + ], + "updated": 1723641813399, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 1063, + "versionNonce": 2522947, + "index": "Zq", + "isDeleted": false, + "id": "lhFdmHjv8pG0DskAkqy0q", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 891, + "y": 451.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 221.00000000000014, + "height": 194, + "seed": 1346618332, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "EYjaoCsw2cC8pThN_06tq", + "type": "arrow" + } + ], + "updated": 1723641684322, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 934, + "versionNonce": 1895926349, + "index": "Zr", + "isDeleted": false, + "id": "tSLc7n78B4ADtN4qgXw7i", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 1012, + "y": 70.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 86, + "height": 235, + "seed": 894044132, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "R3f1PEqKckpu3yIGeZnW_", + "type": "arrow" + } + ], + "updated": 1723641820368, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 767, + "versionNonce": 1265833948, + "index": "Zs", + "isDeleted": false, + "id": "BQJPD1ZMWCSLqQmk4C5lf", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 686, + "y": 71.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 152, + "height": 235, + "seed": 1611869028, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "EYjaoCsw2cC8pThN_06tq", + "type": "arrow" + } + ], + "updated": 1722946223465, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 698, + "versionNonce": 431304547, + "index": "Zv", + "isDeleted": false, + "id": "7vDmPnvZsxdIs8vy_qtC5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 327, + "y": 71.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 152, + "height": 235, + "seed": 2020760420, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "Imf5CQL3oI4Y82AZqJmxh", + "type": "arrow" + } + ], + "updated": 1723641299813, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 725, + "versionNonce": 734909276, + "index": "Zw", + "isDeleted": false, + "id": "Rvy2LBFAbTc59t2ahcFcU", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 506.5, + "y": 71.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 152, + "height": 235, + "seed": 700482660, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945176761, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 848, + "versionNonce": 1513615907, + "index": "Zx", + "isDeleted": false, + "id": "1IIv7mLxKzJZOYp7wEm25", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 358.2200012207031, + "y": 81.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 89.55999755859375, + "height": 25, + "seed": 1317914076, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641071570, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "height: H'", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "height: H'", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 482, + "versionNonce": 1602763245, + "index": "Zy", + "isDeleted": false, + "id": "1v3jsCfoxqD3M5Rg6cQ7q", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 189, + "y": 151, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 960, + "height": 65, + "seed": 634912740, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641831644, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 463, + "versionNonce": 1753098755, + "index": "Zz", + "isDeleted": false, + "id": "FEorD1PzF2WSDWnxm2qgm", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 191, + "y": 226, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 955.0000000000001, + "height": 57, + "seed": 1479573348, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641834780, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 662, + "versionNonce": 508294317, + "index": "a1", + "isDeleted": false, + "id": "WsxdSq3_8RCW6kHrJkSGZ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 73, + "y": 57, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 226.1142857142857, + "height": 68.00000000000004, + "seed": 2064474468, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641219638, + "link": null, + "locked": false, + "fontSize": 27.200000000000017, + "fontFamily": 5, + "text": "Consumer Chain \n(Remote Chain)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Consumer Chain (Remote Chain)", + "autoResize": false, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 192, + "versionNonce": 1770933468, + "index": "a3", + "isDeleted": false, + "id": "WuNNraN-5iWJivNG5HoOF", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 198.9600009918213, + "y": 158.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 120.86000061035156, + "height": 25, + "seed": 2044783332, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722944668831, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Cosmos SDK", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Cosmos SDK", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 225, + "versionNonce": 2087012196, + "index": "a4", + "isDeleted": false, + "id": "6Rd6_toxRVNC29ff9CAjt", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 195.56999969482422, + "y": 232.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.22000122070312, + "height": 25, + "seed": 887421796, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945059521, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "CometBFT", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "CometBFT", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 273, + "versionNonce": 817439460, + "index": "a6", + "isDeleted": false, + "id": "89TyLZhfbfPrUnEeQbUJf", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 516.6500015258789, + "y": 241.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 131.6999969482422, + "height": 25, + "seed": 1335965148, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945458921, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "NextValset: V", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "NextValset: V", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 229, + "versionNonce": 1818417636, + "index": "a7", + "isDeleted": false, + "id": "uX9_Dne6TIMbHHbsV5Get", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 719.1800003051758, + "y": 240.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 85.63999938964844, + "height": 25, + "seed": 294619996, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945258733, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Valset: V", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Valset: V", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 802, + "versionNonce": 1758668195, + "index": "aA", + "isDeleted": false, + "id": "rdKoC6sbqki13kkpEuwVc", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 724.6399993896484, + "y": 113, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 74.72000122070312, + "height": 25, + "seed": 352504548, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641616719, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "time: T'", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "time: T'", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 915, + "versionNonce": 2131058947, + "index": "aB", + "isDeleted": false, + "id": "NEIKgDQiiPZDMRmvAd-_s", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 528.25, + "y": 83.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 108.5, + "height": 25, + "seed": 739951452, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641075498, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "height: H'+1", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "height: H'+1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 947, + "versionNonce": 1583528931, + "index": "aC", + "isDeleted": false, + "id": "fe1eCzhIAi1u361xOiUKu", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 704.7200012207031, + "y": 81.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 114.55999755859375, + "height": 25, + "seed": 1441679460, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641079670, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "height: H'+2", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "height: H'+2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 384, + "versionNonce": 384608228, + "index": "aK", + "isDeleted": false, + "id": "iiRl-bsvUNAw-fE9UYV-R", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 869.9300003051758, + "y": 339.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 117.7599868774414, + "height": 25, + "seed": 185962844, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946347947, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "IBC Relayer", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "IBC Relayer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 551, + "versionNonce": 775659235, + "index": "aN", + "isDeleted": false, + "id": "EYjaoCsw2cC8pThN_06tq", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 842, + "y": 320, + "strokeColor": "#343a40", + "backgroundColor": "#ced4da", + "width": 43.712412115180314, + "height": 125.75597711813452, + "seed": 1268290780, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1723641684322, + "link": null, + "locked": false, + "startBinding": { + "elementId": "BQJPD1ZMWCSLqQmk4C5lf", + "focus": -0.3084957695683588, + "gap": 13.5, + "fixedPoint": null + }, + "endBinding": { + "elementId": "lhFdmHjv8pG0DskAkqy0q", + "focus": -0.5552335000292152, + "gap": 5.744022881865476, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 43.712412115180314, + 125.75597711813452 + ] + ], + "elbowed": false + }, + { + "type": "line", + "version": 224, + "versionNonce": 1391292508, + "index": "aO", + "isDeleted": false, + "id": "lRqPMletSCfrsSDsC6lth", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 176, + "y": 415, + "strokeColor": "#868e96", + "backgroundColor": "#ced4da", + "width": 1449, + "height": 1, + "seed": 2062517980, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722947226190, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1449, + -1 + ] + ] + }, + { + "type": "text", + "version": 605, + "versionNonce": 262923356, + "index": "aP", + "isDeleted": false, + "id": "MBwwVZstE5WSbea_NGVfu", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 682.4428571428571, + "y": 461, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 193.11428571428576, + "height": 34.00000000000002, + "seed": 33905244, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946831478, + "link": null, + "locked": false, + "fontSize": 27.200000000000017, + "fontFamily": 5, + "text": "Host Chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Host Chain", + "autoResize": false, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 665, + "versionNonce": 771666051, + "index": "aQ", + "isDeleted": false, + "id": "oow2Y3hRA5lldUteONhj2", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 679.5, + "y": 505.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 923.9999999999999, + "height": 112, + "seed": 764729060, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "R3f1PEqKckpu3yIGeZnW_", + "type": "arrow" + } + ], + "updated": 1723641682289, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 299, + "versionNonce": 724385116, + "index": "aT", + "isDeleted": false, + "id": "gza44EeaZ4FtDd_ROUqX1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 691.5699996948242, + "y": 518.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 120.86000061035156, + "height": 25, + "seed": 2076841692, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946781570, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Cosmos SDK", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Cosmos SDK", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 395, + "versionNonce": 1606083907, + "index": "aU", + "isDeleted": false, + "id": "IXZH1zn8MYSiG-Rhkx9yM", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 898.1500015258789, + "y": 545.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 204.77999877929688, + "height": 50, + "seed": 1690721764, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641680170, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "... validate and set\nTrustedHeader to hc", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "... validate and set\nTrustedHeader to hc", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 455, + "versionNonce": 1138892163, + "index": "aV", + "isDeleted": false, + "id": "wtKkJtL8gwLbivpFWKHfV", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 881.5400009155273, + "y": 377.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 94.22000122070312, + "height": 25, + "seed": 1142958684, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641559692, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Header hc", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Header hc", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 839, + "versionNonce": 824331341, + "index": "aW", + "isDeleted": false, + "id": "R3f1PEqKckpu3yIGeZnW_", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1100.017899262064, + "y": 313.1165149380032, + "strokeColor": "#343a40", + "backgroundColor": "#ced4da", + "width": 126.86182337804189, + "height": 124.56120392446303, + "seed": 1895094372, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1723642103190, + "link": null, + "locked": false, + "startBinding": { + "elementId": "tSLc7n78B4ADtN4qgXw7i", + "focus": 0.5066047214539084, + "gap": 7.616514938003206, + "fixedPoint": null + }, + "endBinding": { + "elementId": "zjd1nSwdKZROD-V0lCeCn", + "focus": -0.19358406412052093, + "gap": 12.62027735989409, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 126.86182337804189, + 124.56120392446303 + ] + ], + "elbowed": false + }, + { + "type": "text", + "version": 563, + "versionNonce": 1120006243, + "index": "aX", + "isDeleted": false, + "id": "abIVOj6EzJTJSzOZkueab", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1173.1200065612793, + "y": 316.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 117.7599868774414, + "height": 25, + "seed": 850201444, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723642106805, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "IBC Relayer", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "IBC Relayer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 635, + "versionNonce": 713812995, + "index": "aY", + "isDeleted": false, + "id": "6eEfwaRYR-_-BqbMQ0oy6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1184.7300071716309, + "y": 354.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 98.58000183105469, + "height": 25, + "seed": 1329463012, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723642106805, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Header hc'", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Header hc'", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 626, + "versionNonce": 1716800483, + "index": "aa", + "isDeleted": false, + "id": "mg0Fr8y4Ih9mQZCUlcJrj", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1250.650001525879, + "y": 536, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 275.0400085449219, + "height": 50, + "seed": 794313060, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641724961, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "reject hc' if \nhc.T + TrustingPeriod <= ts", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "reject hc' if \nhc.T + TrustingPeriod <= ts", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 912, + "versionNonce": 446644444, + "index": "ab", + "isDeleted": false, + "id": "0tG6ceFmtvY3xdhY2HpgS", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1338.4300003051758, + "y": 463.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 75.13999938964844, + "height": 25, + "seed": 919401828, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946760823, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "time: ts", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "time: ts", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1399, + "versionNonce": 1325580845, + "index": "ac", + "isDeleted": false, + "id": "vINUAmEilF2CzToR5YaUN", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1181.349983215332, + "y": 181, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 438.7599182128906, + "height": 100, + "seed": 1090606564, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641841352, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Note\n - hc.T is a timestamp on the consumer chain\n - ts is a timestamp on the host chain\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Note\n - hc.T is a timestamp on the consumer chain\n - ts is a timestamp on the host chain\n", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 907, + "versionNonce": 1415462093, + "index": "af", + "isDeleted": false, + "id": "ImHk5w1g64D-0Jq9DZu6l", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 199.22015762329102, + "y": -320.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 152, + "height": 235, + "seed": 550248365, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641313181, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1057, + "versionNonce": 1551309613, + "index": "ah", + "isDeleted": false, + "id": "nkM9HhaFZbU5SMXLe3D3H", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 232.62015914916992, + "y": -310.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 85.19999694824219, + "height": 25, + "seed": 257939565, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641313181, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "height: H", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "height: H", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 730, + "versionNonce": 2124754317, + "index": "ai", + "isDeleted": false, + "id": "Rn4TGAGPwrISByDKe3aKF", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 61.220157623291016, + "y": -241, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 397, + "height": 65, + "seed": 1745109709, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641313181, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 697, + "versionNonce": 706868205, + "index": "aj", + "isDeleted": false, + "id": "qgRWOQqI1pPI6GAlGBYrO", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 63.220157623291016, + "y": -166, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 394, + "height": 57, + "seed": 1500274989, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641313181, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 734, + "versionNonce": 720825933, + "index": "ak", + "isDeleted": false, + "id": "wbKbkUCh5_RFXMnyiUOsu", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 66.22015762329102, + "y": -342, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 118.11428571428576, + "height": 68.00000000000004, + "seed": 2030154637, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641313181, + "link": null, + "locked": false, + "fontSize": 27.200000000000017, + "fontFamily": 5, + "text": "Provider\nChain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Provider Chain", + "autoResize": false, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 401, + "versionNonce": 268278957, + "index": "al", + "isDeleted": false, + "id": "ogQ8iJkjyYyb8jGbVWwhs", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 246.1801586151123, + "y": -223, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 58.07999801635742, + "height": 25, + "seed": 1929230829, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "TI4FNl4LdqHy7J8r770lc", + "type": "arrow" + }, + { + "id": "Imf5CQL3oI4Y82AZqJmxh", + "type": "arrow" + } + ], + "updated": 1723641313181, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "lock V", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "lock V", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 402, + "versionNonce": 1961549773, + "index": "am", + "isDeleted": false, + "id": "qk7zmU2lROIwFTspitQhG", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 71.1801586151123, + "y": -233.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 120.86000061035156, + "height": 25, + "seed": 812250189, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641313182, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Cosmos SDK", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Cosmos SDK", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 435, + "versionNonce": 695688749, + "index": "an", + "isDeleted": false, + "id": "7XQ-Citd6KvaariHLeP10", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 67.79015731811523, + "y": -159.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.22000122070312, + "height": 25, + "seed": 1025499821, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641313182, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "CometBFT", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "CometBFT", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 772, + "versionNonce": 2123927469, + "index": "at", + "isDeleted": false, + "id": "XnmPMST8jOAxGQt9Zh1-6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 427.1501579284668, + "y": -323.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 337.3000183105469, + "height": 25, + "seed": 744701165, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "TI4FNl4LdqHy7J8r770lc", + "type": "arrow" + } + ], + "updated": 1723641337162, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "V locked for T + UnbondingPeriod ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "V locked for T + UnbondingPeriod ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1064, + "versionNonce": 808285933, + "index": "au", + "isDeleted": false, + "id": "kHyg--WhxQxNMO_FtuzHF", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 240.04015731811523, + "y": -279.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 70.36000061035156, + "height": 25, + "seed": 1210521421, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641313182, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "time: T", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "time: T", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1171, + "versionNonce": 899944973, + "index": "aw", + "isDeleted": false, + "id": "TI4FNl4LdqHy7J8r770lc", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 316.1801586151123, + "y": -230, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 103.67916310883675, + "height": 66.77674796917432, + "seed": 484009997, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1723641337163, + "link": null, + "locked": false, + "startBinding": { + "elementId": "ogQ8iJkjyYyb8jGbVWwhs", + "focus": 0.05921001753428156, + "gap": 11.920001983642578, + "fixedPoint": null + }, + "endBinding": { + "elementId": "XnmPMST8jOAxGQt9Zh1-6", + "focus": 0.8654497835352846, + "gap": 7.2908362045177455, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 62.03999900817871, + -32 + ], + [ + 103.67916310883675, + -66.77674796917432 + ] + ], + "elbowed": false + }, + { + "type": "text", + "version": 548, + "versionNonce": 1750056493, + "index": "az", + "isDeleted": false, + "id": "s-m3dn7xj07MpYdmRZc_y", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 343.1501579284668, + "y": -38.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 117.7599868774414, + "height": 25, + "seed": 1450043181, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641376902, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "IBC Relayer", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "IBC Relayer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 655, + "versionNonce": 1565273571, + "index": "b02", + "isDeleted": false, + "id": "vOCgSSM9pF3l7LYQPeXMr", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 344.76015853881836, + "y": -2.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 181.0599822998047, + "height": 25, + "seed": 1179728461, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723642152310, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "VSCPacket with V ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VSCPacket with V ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 919, + "versionNonce": 1643883821, + "index": "b05", + "isDeleted": false, + "id": "Imf5CQL3oI4Y82AZqJmxh", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 303.2315173821871, + "y": -188.9605109567333, + "strokeColor": "#343a40", + "backgroundColor": "#ced4da", + "width": 44.39647117688014, + "height": 362.92102191346646, + "seed": 664756109, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1723641320476, + "link": null, + "locked": false, + "startBinding": { + "elementId": "ogQ8iJkjyYyb8jGbVWwhs", + "focus": -0.8301318654521286, + "gap": 9.039489043266713, + "fixedPoint": null + }, + "endBinding": { + "elementId": "7vDmPnvZsxdIs8vy_qtC5", + "focus": -0.5923416483791021, + "gap": 1, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 44.39647117688014, + 362.92102191346646 + ] + ], + "elbowed": false + }, + { + "type": "text", + "version": 713, + "versionNonce": 1068951341, + "index": "b06", + "isDeleted": false, + "id": "QmW7vc6UR0xvENHgg_X3p", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 354.1200065612793, + "y": 157.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 106.7599945068359, + "height": 50, + "seed": 1692532483, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641429615, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "send V to \nCometBFT", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "send V to CometBFT", + "autoResize": false, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 436, + "versionNonce": 1766571149, + "index": "b07", + "isDeleted": false, + "id": "SOQrhGTUZxRO-FAwWmlPL", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 39.5, + "y": -52.5, + "strokeColor": "#868e96", + "backgroundColor": "#ced4da", + "width": 1353, + "height": 0, + "seed": 1935342253, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723641662821, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1353, + 0 + ] + ] + }, + { + "type": "text", + "version": 1706, + "versionNonce": 520628077, + "index": "b08", + "isDeleted": false, + "id": "UDVIrzTrzLEJOGHbXwP6F", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1226.6200408935547, + "y": 683, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 400.8599853515625, + "height": 100, + "seed": 1102050637, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723642087456, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Problem: The time between V's stake \nbeing locked and the consumer applying V\ndepends on the consumer.\n", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Problem: The time between V's stake being locked and the consumer applying V depends on the consumer.\n", + "autoResize": false, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 852, + "versionNonce": 1306643885, + "index": "b09", + "isDeleted": false, + "id": "RWXGKf4adytm_5YGyM6_5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 857.3499908447266, + "y": 31.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 99.73999786376953, + "height": 25, + "seed": 873397517, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1723642033379, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "hc.T = T' ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "hc.T = T' ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1222, + "versionNonce": 1643116397, + "index": "b0A", + "isDeleted": false, + "id": "xOYGRpTGZVsZsus2rjTGM", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 805.1604184455816, + "y": 125.38837398458719, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 103.67916310883675, + "height": 66.77674796917432, + "seed": 1359986851, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1723642029443, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 62.03999900817871, + -32 + ], + [ + 103.67916310883675, + -66.77674796917432 + ] + ], + "elbowed": false + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/docs/docs/adrs/figures/adr-021-ics-trusting-period.png b/docs/docs/adrs/figures/adr-021-ics-trusting-period.png new file mode 100644 index 0000000000..c68f4902b7 Binary files /dev/null and b/docs/docs/adrs/figures/adr-021-ics-trusting-period.png differ diff --git a/docs/docs/adrs/figures/adr-021-sequential-verification.png b/docs/docs/adrs/figures/adr-021-sequential-verification.png new file mode 100644 index 0000000000..a3fff3ed5f Binary files /dev/null and b/docs/docs/adrs/figures/adr-021-sequential-verification.png differ diff --git a/docs/docs/adrs/figures/adr-021-skipping-verification.png b/docs/docs/adrs/figures/adr-021-skipping-verification.png new file mode 100644 index 0000000000..c3fd7abfa1 Binary files /dev/null and b/docs/docs/adrs/figures/adr-021-skipping-verification.png differ diff --git a/docs/docs/adrs/figures/adr-021-trusting-period.excalidraw b/docs/docs/adrs/figures/adr-021-trusting-period.excalidraw new file mode 100644 index 0000000000..05957fd373 --- /dev/null +++ b/docs/docs/adrs/figures/adr-021-trusting-period.excalidraw @@ -0,0 +1,1568 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 1193, + "versionNonce": 2086583772, + "index": "Zp", + "isDeleted": false, + "id": "zjd1nSwdKZROD-V0lCeCn", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 1239.5, + "y": 447.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 278.0000000000001, + "height": 200.00000000000003, + "seed": 84628316, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "R3f1PEqKckpu3yIGeZnW_", + "type": "arrow" + } + ], + "updated": 1722947244143, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 1057, + "versionNonce": 1036177756, + "index": "Zq", + "isDeleted": false, + "id": "lhFdmHjv8pG0DskAkqy0q", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 891, + "y": 451.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 209.00000000000009, + "height": 194, + "seed": 1346618332, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "EYjaoCsw2cC8pThN_06tq", + "type": "arrow" + } + ], + "updated": 1722946741119, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 843, + "versionNonce": 752677212, + "index": "Zr", + "isDeleted": false, + "id": "tSLc7n78B4ADtN4qgXw7i", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 1085, + "y": 76.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 86, + "height": 235, + "seed": 894044132, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "R3f1PEqKckpu3yIGeZnW_", + "type": "arrow" + } + ], + "updated": 1722947239812, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 767, + "versionNonce": 1265833948, + "index": "Zs", + "isDeleted": false, + "id": "BQJPD1ZMWCSLqQmk4C5lf", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 686, + "y": 71.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 152, + "height": 235, + "seed": 1611869028, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "EYjaoCsw2cC8pThN_06tq", + "type": "arrow" + } + ], + "updated": 1722946223465, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 697, + "versionNonce": 265308388, + "index": "Zv", + "isDeleted": false, + "id": "7vDmPnvZsxdIs8vy_qtC5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 327, + "y": 71.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 152, + "height": 235, + "seed": 2020760420, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945157920, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 725, + "versionNonce": 734909276, + "index": "Zw", + "isDeleted": false, + "id": "Rvy2LBFAbTc59t2ahcFcU", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 506.5, + "y": 71.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 152, + "height": 235, + "seed": 700482660, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945176761, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 847, + "versionNonce": 1043978460, + "index": "Zx", + "isDeleted": false, + "id": "1IIv7mLxKzJZOYp7wEm25", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 360.4000015258789, + "y": 81.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 85.19999694824219, + "height": 25, + "seed": 1317914076, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945453567, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "height: H", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "height: H", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 473, + "versionNonce": 1310243684, + "index": "Zy", + "isDeleted": false, + "id": "1v3jsCfoxqD3M5Rg6cQ7q", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 189, + "y": 151, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 1027, + "height": 65, + "seed": 634912740, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946969827, + "link": null, + "locked": false + }, + { + "id": "FEorD1PzF2WSDWnxm2qgm", + "type": "rectangle", + "x": 191, + "y": 226, + "width": 1023, + "height": 57, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 40, + "groupIds": [], + "frameId": null, + "index": "Zz", + "roundness": null, + "seed": 1479573348, + "version": 439, + "versionNonce": 1527287772, + "isDeleted": false, + "boundElements": null, + "updated": 1722946972346, + "link": null, + "locked": false + }, + { + "id": "WsxdSq3_8RCW6kHrJkSGZ", + "type": "text", + "x": 188, + "y": 10, + "width": 193.11428571428576, + "height": 34.00000000000002, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a1", + "roundness": null, + "seed": 2064474468, + "version": 472, + "versionNonce": 60594140, + "isDeleted": false, + "boundElements": null, + "updated": 1722946845357, + "link": null, + "locked": false, + "text": "Remote Chain", + "fontSize": 27.200000000000017, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Remote Chain", + "autoResize": false, + "lineHeight": 1.25 + }, + { + "id": "Y28gS5N0uswlLKLFr1_yU", + "type": "text", + "x": 373.9600009918213, + "y": 169, + "width": 58.07999801635742, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a2", + "roundness": null, + "seed": 321766116, + "version": 190, + "versionNonce": 807919460, + "isDeleted": false, + "boundElements": [ + { + "id": "6wChRr6h7tU2O_4WKkewD", + "type": "arrow" + } + ], + "updated": 1722945521852, + "link": null, + "locked": false, + "text": "lock V", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "lock V", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 192, + "versionNonce": 1770933468, + "index": "a3", + "isDeleted": false, + "id": "WuNNraN-5iWJivNG5HoOF", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 198.9600009918213, + "y": 158.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 120.86000061035156, + "height": 25, + "seed": 2044783332, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722944668831, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Cosmos SDK", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Cosmos SDK", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 225, + "versionNonce": 2087012196, + "index": "a4", + "isDeleted": false, + "id": "6Rd6_toxRVNC29ff9CAjt", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 195.56999969482422, + "y": 232.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 105.22000122070312, + "height": 25, + "seed": 887421796, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945059521, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "CometBFT", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "CometBFT", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 273, + "versionNonce": 817439460, + "index": "a6", + "isDeleted": false, + "id": "89TyLZhfbfPrUnEeQbUJf", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 516.6500015258789, + "y": 241.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 131.6999969482422, + "height": 25, + "seed": 1335965148, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945458921, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "NextValset: V", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "NextValset: V", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 229, + "versionNonce": 1818417636, + "index": "a7", + "isDeleted": false, + "id": "uX9_Dne6TIMbHHbsV5Get", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 719.1800003051758, + "y": 240.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 85.63999938964844, + "height": 25, + "seed": 294619996, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945258733, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Valset: V", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Valset: V", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 800, + "versionNonce": 1835857244, + "index": "aA", + "isDeleted": false, + "id": "rdKoC6sbqki13kkpEuwVc", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 720.7399978637695, + "y": 113, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 82.52000427246094, + "height": 25, + "seed": 352504548, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "6CnSofwPZ8rmssphjBXXa", + "type": "arrow" + } + ], + "updated": 1722945673732, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "time: T3", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "time: T3", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 914, + "versionNonce": 755625308, + "index": "aB", + "isDeleted": false, + "id": "NEIKgDQiiPZDMRmvAd-_s", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 530.4300003051758, + "y": 83.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 104.13999938964844, + "height": 25, + "seed": 739951452, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945458921, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "height: H+1", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "height: H+1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 946, + "versionNonce": 1146149732, + "index": "aC", + "isDeleted": false, + "id": "fe1eCzhIAi1u361xOiUKu", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 706.9000015258789, + "y": 81.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 110.19999694824219, + "height": 25, + "seed": 1441679460, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945431719, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "height: H+2", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "height: H+2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 421, + "versionNonce": 2144631772, + "index": "aE", + "isDeleted": false, + "id": "SwGpNvDwuxyLrDgEW46vB", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 198.93000030517578, + "y": 360.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 345.8399963378906, + "height": 25, + "seed": 24759652, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "6wChRr6h7tU2O_4WKkewD", + "type": "arrow" + } + ], + "updated": 1722945555464, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "V locked for T1 + UnbondingPeriod ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "V locked for T1 + UnbondingPeriod ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 853, + "versionNonce": 760336228, + "index": "aF", + "isDeleted": false, + "id": "iTk3AQu6mW_v52GpyYwFG", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 363.54999923706055, + "y": 112.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 78.9000015258789, + "height": 25, + "seed": 1911052892, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945442605, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "time: T1", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "time: T1", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 828, + "versionNonce": 1926964836, + "index": "aG", + "isDeleted": false, + "id": "W6AA-NwcfpeZA1pf5vG-E", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 540.3199996948242, + "y": 116.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 84.36000061035156, + "height": 25, + "seed": 1817915868, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722945458921, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "time: T2", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "time: T2", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "6wChRr6h7tU2O_4WKkewD", + "type": "arrow", + "x": 368.9600009918213, + "y": 192, + "width": 84.89558465873324, + "height": 163.5, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aH", + "roundness": { + "type": 2 + }, + "seed": 988747612, + "version": 209, + "versionNonce": 1582576860, + "isDeleted": false, + "boundElements": null, + "updated": 1722945555481, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -62.96000099182129, + 106 + ], + [ + -84.89558465873324, + 163.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "Y28gS5N0uswlLKLFr1_yU", + "focus": 0.7624778681689691, + "gap": 5, + "fixedPoint": null + }, + "endBinding": { + "elementId": "SwGpNvDwuxyLrDgEW46vB", + "focus": -0.5316133256848155, + "gap": 5, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "type": "text", + "version": 645, + "versionNonce": 1942861540, + "index": "aI", + "isDeleted": false, + "id": "i0PqZEgE5omROj2AGVsjp", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 843.0800018310547, + "y": -14.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 245.30003356933594, + "height": 50, + "seed": 2038321508, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "6CnSofwPZ8rmssphjBXXa", + "type": "arrow" + }, + { + "id": "VUKts_6iyhb0FseXHlcCL", + "type": "arrow" + } + ], + "updated": 1722946988403, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "T3-T1 ~ seconds\nUnbondingPeriod ~ weeks", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "T3-T1 ~ seconds\nUnbondingPeriod ~ weeks", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 545, + "versionNonce": 226787420, + "index": "aJ", + "isDeleted": false, + "id": "6CnSofwPZ8rmssphjBXXa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 814.4477923293666, + "y": 130.25, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 60.317718337040674, + "height": 85.5, + "seed": 1645175780, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1722945985410, + "link": null, + "locked": false, + "startBinding": { + "elementId": "rdKoC6sbqki13kkpEuwVc", + "focus": 1.0412953697043832, + "gap": 11.187790193136152, + "fixedPoint": null + }, + "endBinding": { + "elementId": "i0PqZEgE5omROj2AGVsjp", + "focus": 0.620594159246954, + "gap": 9.25, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 47.03999900817871, + -41 + ], + [ + 60.317718337040674, + -85.5 + ] + ], + "elbowed": false + }, + { + "type": "text", + "version": 384, + "versionNonce": 384608228, + "index": "aK", + "isDeleted": false, + "id": "iiRl-bsvUNAw-fE9UYV-R", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 869.9300003051758, + "y": 339.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 117.7599868774414, + "height": 25, + "seed": 185962844, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946347947, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "IBC Relayer", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "IBC Relayer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 998, + "versionNonce": 1064316892, + "index": "aL", + "isDeleted": false, + "id": "cpqTl6RqENHUZqJKnTXqR", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1183.349983215332, + "y": -7, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 208.20970153808594, + "height": 50, + "seed": 335477852, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722947033313, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "the diff is negligible \nh.T ≈ T1 ≈ T2 ≈ T3 ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "the diff is negligible \nh.T ≈ T1 ≈ T2 ≈ T3 ", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1182, + "versionNonce": 931235300, + "index": "aM", + "isDeleted": false, + "id": "VUKts_6iyhb0FseXHlcCL", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1094.3411408314796, + "y": 5.25, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 71.08053995574073, + "height": 13.5, + "seed": 755063260, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1722947041215, + "link": null, + "locked": false, + "startBinding": { + "elementId": "i0PqZEgE5omROj2AGVsjp", + "focus": 0.09988181146465147, + "gap": 5.961105431088981, + "fixedPoint": null + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 30.03999900817871, + -2 + ], + [ + 71.08053995574073, + 11.5 + ] + ], + "elbowed": false + }, + { + "id": "EYjaoCsw2cC8pThN_06tq", + "type": "arrow", + "x": 842, + "y": 320, + "width": 43.255977118134524, + "height": 127.92102191346646, + "angle": 0, + "strokeColor": "#343a40", + "backgroundColor": "#ced4da", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aN", + "roundness": { + "type": 2 + }, + "seed": 1268290780, + "version": 544, + "versionNonce": 500307036, + "isDeleted": false, + "boundElements": null, + "updated": 1722946773645, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 43.255977118134524, + 127.92102191346646 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "BQJPD1ZMWCSLqQmk4C5lf", + "focus": -0.3084957695683588, + "gap": 13.5, + "fixedPoint": null + }, + "endBinding": { + "elementId": "lhFdmHjv8pG0DskAkqy0q", + "focus": -0.5552335000292152, + "gap": 5.744022881865476, + "fixedPoint": null + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "lRqPMletSCfrsSDsC6lth", + "type": "line", + "x": 176, + "y": 415, + "width": 1449, + "height": 1, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "#ced4da", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aO", + "roundness": null, + "seed": 2062517980, + "version": 224, + "versionNonce": 1391292508, + "isDeleted": false, + "boundElements": null, + "updated": 1722947226190, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 1449, + -1 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "text", + "version": 605, + "versionNonce": 262923356, + "index": "aP", + "isDeleted": false, + "id": "MBwwVZstE5WSbea_NGVfu", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 682.4428571428571, + "y": 461, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 193.11428571428576, + "height": 34.00000000000002, + "seed": 33905244, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946831478, + "link": null, + "locked": false, + "fontSize": 27.200000000000017, + "fontFamily": 5, + "text": "Host Chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Host Chain", + "autoResize": false, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 664, + "versionNonce": 682343388, + "index": "aQ", + "isDeleted": false, + "id": "oow2Y3hRA5lldUteONhj2", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 40, + "angle": 0, + "x": 679.5, + "y": 506.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 923.9999999999999, + "height": 112, + "seed": 764729060, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "R3f1PEqKckpu3yIGeZnW_", + "type": "arrow" + } + ], + "updated": 1722946790678, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 299, + "versionNonce": 724385116, + "index": "aT", + "isDeleted": false, + "id": "gza44EeaZ4FtDd_ROUqX1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 691.5699996948242, + "y": 518.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 120.86000061035156, + "height": 25, + "seed": 2076841692, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946781570, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Cosmos SDK", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Cosmos SDK", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 393, + "versionNonce": 1303292260, + "index": "aU", + "isDeleted": false, + "id": "IXZH1zn8MYSiG-Rhkx9yM", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 898.1500015258789, + "y": 546.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 194.6999969482422, + "height": 50, + "seed": 1690721764, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946603050, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "... validate and set\nTrustedHeader to h", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "... validate and set\nTrustedHeader to h", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 454, + "versionNonce": 180484700, + "index": "aV", + "isDeleted": false, + "id": "wtKkJtL8gwLbivpFWKHfV", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 881.5400009155273, + "y": 377.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 84.13999938964844, + "height": 25, + "seed": 1142958684, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946378921, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Header h", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Header h", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 629, + "versionNonce": 1253439196, + "index": "aW", + "isDeleted": false, + "id": "R3f1PEqKckpu3yIGeZnW_", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 1168.6208175467186, + "y": 316.517899262064, + "strokeColor": "#343a40", + "backgroundColor": "#ced4da", + "width": 58.88724702150057, + "height": 127.04955890844974, + "seed": 1895094372, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1722947244161, + "link": null, + "locked": false, + "startBinding": { + "elementId": "tSLc7n78B4ADtN4qgXw7i", + "focus": 0.16344707151300517, + "gap": 5.01789926206402, + "fixedPoint": null + }, + "endBinding": { + "elementId": "zjd1nSwdKZROD-V0lCeCn", + "focus": -0.5547314958411631, + "gap": 12.620277359894072, + "fixedPoint": null + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 58.88724702150057, + 127.04955890844974 + ] + ], + "elbowed": false + }, + { + "type": "text", + "version": 429, + "versionNonce": 736336868, + "index": "aX", + "isDeleted": false, + "id": "abIVOj6EzJTJSzOZkueab", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1198.1200065612793, + "y": 331.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 117.7599868774414, + "height": 25, + "seed": 850201444, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946960068, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "IBC Relayer", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "IBC Relayer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 500, + "versionNonce": 1951301476, + "index": "aY", + "isDeleted": false, + "id": "6eEfwaRYR-_-BqbMQ0oy6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1209.7300071716309, + "y": 369.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 88.5, + "height": 25, + "seed": 1329463012, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946960068, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Header h'", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Header h'", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 623, + "versionNonce": 251153252, + "index": "aa", + "isDeleted": false, + "id": "mg0Fr8y4Ih9mQZCUlcJrj", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1250.650001525879, + "y": 536, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "width": 264.9599914550781, + "height": 50, + "seed": 794313060, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722947619891, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "reject h' if \nh.T + TrustingPeriod <= ts", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "reject h' if \nh.T + TrustingPeriod <= ts", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 912, + "versionNonce": 446644444, + "index": "ab", + "isDeleted": false, + "id": "0tG6ceFmtvY3xdhY2HpgS", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1338.4300003051758, + "y": 463.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ced4da", + "width": 75.13999938964844, + "height": 25, + "seed": 919401828, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722946760823, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "time: ts", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "time: ts", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1230, + "versionNonce": 33393756, + "index": "ac", + "isDeleted": false, + "id": "vINUAmEilF2CzToR5YaUN", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1258.349983215332, + "y": 158, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 407.6599426269531, + "height": 125, + "seed": 1090606564, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1722947325232, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 5, + "text": "Note\n - h.T is a timestamp on the remote chain\n - ts is a timestamp on the host chain\nThe clock drift is negligible compared \nto TrustingPeriod ", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Note\n - h.T is a timestamp on the remote chain\n - ts is a timestamp on the host chain\nThe clock drift is negligible compared \nto TrustingPeriod ", + "autoResize": true, + "lineHeight": 1.25 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/docs/docs/adrs/figures/adr-021-trusting-period.png b/docs/docs/adrs/figures/adr-021-trusting-period.png new file mode 100644 index 0000000000..8f8a8d7faa Binary files /dev/null and b/docs/docs/adrs/figures/adr-021-trusting-period.png differ diff --git a/docs/docs/adrs/intro.md b/docs/docs/adrs/intro.md index c1a494f99e..d0fc7f3240 100644 --- a/docs/docs/adrs/intro.md +++ b/docs/docs/adrs/intro.md @@ -43,12 +43,13 @@ To suggest an ADR, please make use of the [ADR template](https://github.com/cosm - [ADR 015: Partial Set Security](./adr-015-partial-set-security.md) - [ADR 017: ICS with Inactive Provider Validators](./adr-017-allowing-inactive-validators.md) - [ADR 018: Remove VSCMatured Packets](./adr-018-remove-vscmatured.md) -- [ADR 18: Permissionless Interchain Security](./adr-019-permissionless-ics.md) +- [ADR 019: Permissionless Interchain Security](./adr-019-permissionless-ics.md) ### Proposed - [ADR 011: Improving testing and increasing confidence](./adr-011-improving-test-confidence.md) - [ADR 016: Security aggregation](./adr-016-securityaggregation.md) +- [ADR 021: Consumer Chain Clients](./adr-021-consumer-chain-clients.md) ### Rejected