From dbaf0241c7336da25abe21785435cfa3d5d3f115 Mon Sep 17 00:00:00 2001 From: Marius Poke Date: Wed, 24 Jul 2024 11:34:43 +0200 Subject: [PATCH 01/55] refactor: change byte prefixing scheme for provider (#2061) * replace iota with constant map * rename keys in the constant map with byte prefixes * use constants for key names * remove non-determinism from tests * make mustGetKeyPrefix local * fix docstrings * remove changes from ADRs --- x/ccv/consumer/keeper/keeper.go | 8 +- x/ccv/provider/keeper/distribution.go | 2 +- x/ccv/provider/keeper/distribution_test.go | 3 +- x/ccv/provider/keeper/grpc_query_test.go | 3 +- x/ccv/provider/keeper/hooks.go | 3 +- x/ccv/provider/keeper/keeper.go | 63 +- x/ccv/provider/keeper/key_assignment.go | 25 +- .../keeper/partial_set_security_test.go | 1 + x/ccv/provider/keeper/proposal.go | 16 +- x/ccv/provider/keeper/relay_test.go | 6 +- x/ccv/provider/keeper/throttle_legacy.go | 4 +- x/ccv/provider/keeper/validator_set_update.go | 9 +- x/ccv/provider/types/keys.go | 731 ++++++++++++------ x/ccv/provider/types/keys_test.go | 183 +++-- 14 files changed, 679 insertions(+), 378 deletions(-) diff --git a/x/ccv/consumer/keeper/keeper.go b/x/ccv/consumer/keeper/keeper.go index 644cfc33a7..b93d29aa45 100644 --- a/x/ccv/consumer/keeper/keeper.go +++ b/x/ccv/consumer/keeper/keeper.go @@ -387,7 +387,7 @@ func (k Keeper) GetElapsedPacketMaturityTimes(ctx sdk.Context) (maturingVSCPacke // GetAllPacketMaturityTimes returns a slice of all PacketMaturityTimes, sorted by maturity times. // // Note that PacketMaturityTimes are stored under keys with the following format: -// PacketMaturityTimeBytePrefix | maturityTime.UnixNano() | vscID +// PacketMaturityTimeKeyPrefix | maturityTime.UnixNano() | vscID // Thus, the returned array is in ascending order of maturityTimes. // If two entries have the same maturityTime, then they are ordered by vscID. func (k Keeper) GetAllPacketMaturityTimes(ctx sdk.Context) (maturingVSCPackets []types.MaturingVSCPacket) { @@ -489,7 +489,7 @@ func (k Keeper) DeleteHeightValsetUpdateID(ctx sdk.Context, height uint64) { // GetAllHeightToValsetUpdateIDs returns a list of all the block heights to valset update IDs in the store // // Note that the block height to vscID mapping is stored under keys with the following format: -// HeightValsetUpdateIDBytePrefix | height +// HeightValsetUpdateIDKeyPrefix | height // Thus, the returned array is in ascending order of heights. func (k Keeper) GetAllHeightToValsetUpdateIDs(ctx sdk.Context) (heightToValsetUpdateIDs []types.HeightToValsetUpdateID) { store := ctx.KVStore(k.storeKey) @@ -531,7 +531,7 @@ func (k Keeper) DeleteOutstandingDowntime(ctx sdk.Context, address sdk.ConsAddre // GetAllOutstandingDowntimes gets an array of the validator addresses of outstanding downtime flags // // Note that the outstanding downtime flags are stored under keys with the following format: -// OutstandingDowntimeBytePrefix | consAddress +// OutstandingDowntimeKeyPrefix | consAddress // Thus, the returned array is in ascending order of consAddresses. func (k Keeper) GetAllOutstandingDowntimes(ctx sdk.Context) (downtimes []types.OutstandingDowntime) { store := ctx.KVStore(k.storeKey) @@ -580,7 +580,7 @@ func (k Keeper) DeleteCCValidator(ctx sdk.Context, addr []byte) { // GetAllCCValidator returns all cross-chain validators // // Note that the cross-chain validators are stored under keys with the following format: -// CrossChainValidatorBytePrefix | address +// CrossChainValidatorKeyPrefix | address // Thus, the returned array is in ascending order of addresses. func (k Keeper) GetAllCCValidator(ctx sdk.Context) (validators []types.CrossChainValidator) { store := ctx.KVStore(k.storeKey) diff --git a/x/ccv/provider/keeper/distribution.go b/x/ccv/provider/keeper/distribution.go index ca16831ee8..d35caebb02 100644 --- a/x/ccv/provider/keeper/distribution.go +++ b/x/ccv/provider/keeper/distribution.go @@ -56,7 +56,7 @@ func (k Keeper) DeleteConsumerRewardDenom( func (k Keeper) GetAllConsumerRewardDenoms(ctx sdk.Context) (consumerRewardDenoms []string) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.ConsumerRewardDenomsBytePrefix}) + iterator := storetypes.KVStorePrefixIterator(store, types.ConsumerRewardDenomsKeyPrefix()) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { key := iterator.Key()[1:] diff --git a/x/ccv/provider/keeper/distribution_test.go b/x/ccv/provider/keeper/distribution_test.go index ba79458e00..785a864cf7 100644 --- a/x/ccv/provider/keeper/distribution_test.go +++ b/x/ccv/provider/keeper/distribution_test.go @@ -16,7 +16,6 @@ import ( tmtypes "github.com/cometbft/cometbft/types" testkeeper "github.com/cosmos/interchain-security/v5/testutil/keeper" - "github.com/cosmos/interchain-security/v5/x/ccv/provider/types" providertypes "github.com/cosmos/interchain-security/v5/x/ccv/provider/types" ) @@ -54,7 +53,7 @@ func TestComputeConsumerTotalVotingPower(t *testing.T) { keeper.SetConsumerValidator( ctx, chainID, - types.ConsumerValidator{ + providertypes.ConsumerValidator{ ProviderConsAddr: val.Address, Power: val.VotingPower, }, diff --git a/x/ccv/provider/keeper/grpc_query_test.go b/x/ccv/provider/keeper/grpc_query_test.go index 3d9f9ee86d..ebc4557227 100644 --- a/x/ccv/provider/keeper/grpc_query_test.go +++ b/x/ccv/provider/keeper/grpc_query_test.go @@ -11,7 +11,6 @@ import ( "github.com/golang/mock/gomock" sdk "github.com/cosmos/cosmos-sdk/types" - sdktypes "github.com/cosmos/cosmos-sdk/types" cryptotestutil "github.com/cosmos/interchain-security/v5/testutil/crypto" testkeeper "github.com/cosmos/interchain-security/v5/testutil/keeper" "github.com/cosmos/interchain-security/v5/x/ccv/provider/types" @@ -22,7 +21,7 @@ import ( func TestQueryAllPairsValConAddrByConsumerChainID(t *testing.T) { chainID := consumer - providerConsAddress, err := sdktypes.ConsAddressFromBech32("cosmosvalcons1wpex7anfv3jhystyv3eq20r35a") + providerConsAddress, err := sdk.ConsAddressFromBech32("cosmosvalcons1wpex7anfv3jhystyv3eq20r35a") require.NoError(t, err) providerAddr := types.NewProviderConsAddress(providerConsAddress) diff --git a/x/ccv/provider/keeper/hooks.go b/x/ccv/provider/keeper/hooks.go index 81226a2bdf..e0b4a066c6 100644 --- a/x/ccv/provider/keeper/hooks.go +++ b/x/ccv/provider/keeper/hooks.go @@ -10,7 +10,6 @@ import ( v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/cosmos/interchain-security/v5/x/ccv/provider/types" providertypes "github.com/cosmos/interchain-security/v5/x/ccv/provider/types" ccvtypes "github.com/cosmos/interchain-security/v5/x/ccv/types" ) @@ -95,7 +94,7 @@ func (h Hooks) AfterUnbondingInitiated(goCtx context.Context, id uint64) error { // get all consumers where the validator is in the validator set for _, chainID := range h.k.GetAllRegisteredConsumerChainIDs(ctx) { - if h.k.IsConsumerValidator(ctx, chainID, types.NewProviderConsAddress(consAddr)) { + if h.k.IsConsumerValidator(ctx, chainID, providertypes.NewProviderConsAddress(consAddr)) { consumerChainIDS = append(consumerChainIDS, chainID) } } diff --git a/x/ccv/provider/keeper/keeper.go b/x/ccv/provider/keeper/keeper.go index 22f5f33626..e8cb9f8bbf 100644 --- a/x/ccv/provider/keeper/keeper.go +++ b/x/ccv/provider/keeper/keeper.go @@ -235,12 +235,12 @@ func (k Keeper) DeleteProposedConsumerChainInStore(ctx sdk.Context, proposalID u // GetAllProposedConsumerChainIDs returns the proposed chainID of all gov consumerAddition proposals that are still in the voting period. func (k Keeper) GetAllProposedConsumerChainIDs(ctx sdk.Context) []types.ProposedChain { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.ProposedConsumerChainByteKey}) + iterator := storetypes.KVStorePrefixIterator(store, types.ProposedConsumerChainKeyPrefix()) defer iterator.Close() proposedChains := []types.ProposedChain{} for ; iterator.Valid(); iterator.Next() { - proposalID, err := types.ParseProposedConsumerChainKey(types.ProposedConsumerChainByteKey, iterator.Key()) + proposalID, err := types.ParseProposedConsumerChainKey(iterator.Key()) if err != nil { panic(fmt.Errorf("proposed chains cannot be parsed: %w", err)) } @@ -270,13 +270,13 @@ func (k Keeper) GetAllPendingConsumerChainIDs(ctx sdk.Context) []string { // created IBC clients. Consumer chains with created clients are also referred to as registered. // // Note that the registered consumer chains are stored under keys with the following format: -// ChainToClientBytePrefix | chainID +// ChainToClientKeyPrefix | chainID // Thus, the returned array is in ascending order of chainIDs. func (k Keeper) GetAllRegisteredConsumerChainIDs(ctx sdk.Context) []string { chainIDs := []string{} store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.ChainToClientBytePrefix}) + iterator := storetypes.KVStorePrefixIterator(store, types.ChainToClientKeyPrefix()) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -315,11 +315,11 @@ func (k Keeper) DeleteChannelToChain(ctx sdk.Context, channelID string) { // // Note that mapping from CCV channel IDs to consumer chainIDs // is stored under keys with the following format: -// ChannelToChainBytePrefix | channelID +// ChannelToChainKeyPrefix | channelID // Thus, the returned array is in ascending order of channelIDs. func (k Keeper) GetAllChannelToChains(ctx sdk.Context) (channels []types.ChannelToChain) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.ChannelToChainBytePrefix}) + iterator := storetypes.KVStorePrefixIterator(store, types.ChannelToChainKeyPrefix()) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -486,11 +486,11 @@ func (k Keeper) DeleteUnbondingOp(ctx sdk.Context, id uint64) { // is waiting on. // // Note that UnbondingOps are stored under keys with the following format: -// UnbondingOpBytePrefix | ID +// UnbondingOpKeyPrefix | ID // Thus, the iteration is in ascending order of IDs. func (k Keeper) GetAllUnbondingOps(ctx sdk.Context) (ops []types.UnbondingOp) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.UnbondingOpBytePrefix}) + iterator := storetypes.KVStorePrefixIterator(store, types.UnbondingOpKeyPrefix()) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -577,11 +577,12 @@ func (k Keeper) SetUnbondingOpIndex(ctx sdk.Context, chainID string, vscID uint6 // VSCMaturedPackets from a consumer with chainID. // // Note that the unbonding indexes for a given chainID are stored under keys with the following format: -// UnbondingOpIndexBytePrefix | len(chainID) | chainID | vscID +// UnbondingOpIndexKeyPrefix | len(chainID) | chainID | vscID // Thus, the returned array is in ascending order of vscIDs. func (k Keeper) GetAllUnbondingOpIndexes(ctx sdk.Context, chainID string) (indexes []types.VscUnbondingOps) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.UnbondingOpIndexBytePrefix, chainID)) + bytePrefix := types.UnbondingOpIndexKeyPrefix() + iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(bytePrefix, chainID)) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -776,11 +777,11 @@ func (k Keeper) GetValsetUpdateBlockHeight(ctx sdk.Context, valsetUpdateId uint6 // GetAllValsetUpdateBlockHeights gets all the block heights for all valset updates // // Note that the mapping from vscIDs to block heights is stored under keys with the following format: -// ValsetUpdateBlockHeightBytePrefix | vscID +// ValsetUpdateBlockHeightKeyPrefix | vscID // Thus, the returned array is in ascending order of vscIDs. func (k Keeper) GetAllValsetUpdateBlockHeights(ctx sdk.Context) (valsetUpdateBlockHeights []types.ValsetUpdateIdToHeight) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.ValsetUpdateBlockHeightBytePrefix}) + iterator := storetypes.KVStorePrefixIterator(store, types.ValsetUpdateBlockHeightKeyPrefix()) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -982,11 +983,11 @@ func (k Keeper) DeleteInitTimeoutTimestamp(ctx sdk.Context, chainID string) { // GetAllInitTimeoutTimestamps gets all init timeout timestamps in the store. // // Note that the init timeout timestamps are stored under keys with the following format: -// InitTimeoutTimestampBytePrefix | chainID +// InitTimeoutTimestampKeyPrefix | chainID // Thus, the returned array is in ascending order of chainIDs (NOT in timestamp order). func (k Keeper) GetAllInitTimeoutTimestamps(ctx sdk.Context) (initTimeoutTimestamps []types.InitTimeoutTimestamp) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.InitTimeoutTimestampBytePrefix}) + iterator := storetypes.KVStorePrefixIterator(store, types.InitTimeoutTimestampKeyPrefix()) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -1046,11 +1047,11 @@ func (k Keeper) DeleteVscSendTimestamp(ctx sdk.Context, chainID string, vscID ui // GetAllVscSendTimestamps gets an array of all the vsc send timestamps of the given chainID. // // Note that the vsc send timestamps of a given chainID are stored under keys with the following format: -// VscSendTimestampBytePrefix | len(chainID) | chainID | vscID +// VscSendTimestampKeyPrefix | len(chainID) | chainID | vscID // Thus, the iteration is in ascending order of vscIDs, and as a result in send timestamp order. func (k Keeper) GetAllVscSendTimestamps(ctx sdk.Context, chainID string) (vscSendTimestamps []types.VscSendTimestamp) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.VscSendTimestampBytePrefix, chainID)) + iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.VscSendingTimestampKeyPrefix(), chainID)) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -1079,7 +1080,7 @@ func (k Keeper) GetAllVscSendTimestamps(ctx sdk.Context, chainID string) (vscSen // DeleteVscSendTimestampsForConsumer deletes all VSC send timestamps for a given consumer chain func (k Keeper) DeleteVscSendTimestampsForConsumer(ctx sdk.Context, consumerChainID string) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.VscSendTimestampBytePrefix, consumerChainID)) + iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.VscSendingTimestampKeyPrefix(), consumerChainID)) defer iterator.Close() @@ -1097,7 +1098,7 @@ func (k Keeper) DeleteVscSendTimestampsForConsumer(ctx sdk.Context, consumerChai // GetFirstVscSendTimestamp gets the vsc send timestamp with the lowest vscID for the given chainID. func (k Keeper) GetFirstVscSendTimestamp(ctx sdk.Context, chainID string) (vscSendTimestamp types.VscSendTimestamp, found bool) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.VscSendTimestampBytePrefix, chainID)) + iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.VscSendingTimestampKeyPrefix(), chainID)) defer iterator.Close() if iterator.Valid() { @@ -1243,7 +1244,7 @@ func (k Keeper) GetAllOptedIn( chainID string, ) (providerConsAddresses []types.ProviderConsAddress) { store := ctx.KVStore(k.storeKey) - key := types.ChainIdWithLenKey(types.OptedInBytePrefix, chainID) + key := types.ChainIdWithLenKey(types.OptedInKeyPrefix(), chainID) iterator := storetypes.KVStorePrefixIterator(store, key) defer iterator.Close() @@ -1260,7 +1261,7 @@ func (k Keeper) DeleteAllOptedIn( chainID string, ) { store := ctx.KVStore(k.storeKey) - key := types.ChainIdWithLenKey(types.OptedInBytePrefix, chainID) + key := types.ChainIdWithLenKey(types.OptedInKeyPrefix(), chainID) iterator := storetypes.KVStorePrefixIterator(store, key) var keysToDel [][]byte @@ -1323,7 +1324,7 @@ func (k Keeper) GetAllCommissionRateValidators( chainID string, ) (addresses []types.ProviderConsAddress) { store := ctx.KVStore(k.storeKey) - key := types.ChainIdWithLenKey(types.ConsumerCommissionRatePrefix, chainID) + key := types.ChainIdWithLenKey(types.ConsumerCommissionRateKeyPrefix(), chainID) iterator := storetypes.KVStorePrefixIterator(store, key) defer iterator.Close() @@ -1425,7 +1426,7 @@ func (k Keeper) SetAllowlist( providerAddr types.ProviderConsAddress, ) { store := ctx.KVStore(k.storeKey) - store.Set(types.AllowlistCapKey(chainID, providerAddr), []byte{}) + store.Set(types.AllowlistKey(chainID, providerAddr), []byte{}) } // GetAllowList returns all allowlisted validators @@ -1434,7 +1435,7 @@ func (k Keeper) GetAllowList( chainID string, ) (providerConsAddresses []types.ProviderConsAddress) { store := ctx.KVStore(k.storeKey) - key := types.ChainIdWithLenKey(types.AllowlistPrefix, chainID) + key := types.ChainIdWithLenKey(types.AllowlistKeyPrefix(), chainID) iterator := storetypes.KVStorePrefixIterator(store, key) defer iterator.Close() @@ -1452,14 +1453,14 @@ func (k Keeper) IsAllowlisted( providerAddr types.ProviderConsAddress, ) bool { store := ctx.KVStore(k.storeKey) - bz := store.Get(types.AllowlistCapKey(chainID, providerAddr)) + bz := store.Get(types.AllowlistKey(chainID, providerAddr)) return bz != nil } // DeleteAllowlist deletes all allowlisted validators func (k Keeper) DeleteAllowlist(ctx sdk.Context, chainID string) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.AllowlistPrefix, chainID)) + iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.AllowlistKeyPrefix(), chainID)) defer iterator.Close() keysToDel := [][]byte{} @@ -1475,7 +1476,7 @@ func (k Keeper) DeleteAllowlist(ctx sdk.Context, chainID string) { // IsAllowlistEmpty returns `true` if no validator is allowlisted on chain `chainID` func (k Keeper) IsAllowlistEmpty(ctx sdk.Context, chainID string) bool { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.AllowlistPrefix, chainID)) + iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.AllowlistKeyPrefix(), chainID)) defer iterator.Close() return !iterator.Valid() @@ -1488,7 +1489,7 @@ func (k Keeper) SetDenylist( providerAddr types.ProviderConsAddress, ) { store := ctx.KVStore(k.storeKey) - store.Set(types.DenylistCapKey(chainID, providerAddr), []byte{}) + store.Set(types.DenylistKey(chainID, providerAddr), []byte{}) } // GetDenyList returns all denylisted validators @@ -1497,7 +1498,7 @@ func (k Keeper) GetDenyList( chainID string, ) (providerConsAddresses []types.ProviderConsAddress) { store := ctx.KVStore(k.storeKey) - key := types.ChainIdWithLenKey(types.DenylistPrefix, chainID) + key := types.ChainIdWithLenKey(types.DenylistKeyPrefix(), chainID) iterator := storetypes.KVStorePrefixIterator(store, key) defer iterator.Close() @@ -1515,14 +1516,14 @@ func (k Keeper) IsDenylisted( providerAddr types.ProviderConsAddress, ) bool { store := ctx.KVStore(k.storeKey) - bz := store.Get(types.DenylistCapKey(chainID, providerAddr)) + bz := store.Get(types.DenylistKey(chainID, providerAddr)) return bz != nil } // DeleteDenylist deletes all denylisted validators func (k Keeper) DeleteDenylist(ctx sdk.Context, chainID string) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.DenylistPrefix, chainID)) + iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.DenylistKeyPrefix(), chainID)) defer iterator.Close() keysToDel := [][]byte{} @@ -1538,7 +1539,7 @@ func (k Keeper) DeleteDenylist(ctx sdk.Context, chainID string) { // IsDenylistEmpty returns `true` if no validator is denylisted on chain `chainID` func (k Keeper) IsDenylistEmpty(ctx sdk.Context, chainID string) bool { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.DenylistPrefix, chainID)) + iterator := storetypes.KVStorePrefixIterator(store, types.ChainIdWithLenKey(types.DenylistKeyPrefix(), chainID)) defer iterator.Close() return !iterator.Valid() diff --git a/x/ccv/provider/keeper/key_assignment.go b/x/ccv/provider/keeper/key_assignment.go index 93bad8eb97..dd0868b9a2 100644 --- a/x/ccv/provider/keeper/key_assignment.go +++ b/x/ccv/provider/keeper/key_assignment.go @@ -104,25 +104,26 @@ func (k Keeper) SetValidatorConsumerPubKey( // If chainID is nil, it returns all the validators public keys assigned for all consumer chains // // Note that the validators public keys assigned for a consumer chain are stored under keys -// with the following format: UnbondingOpIndexBytePrefix | len(chainID) | chainID | providerAddress +// with the following format: UnbondingOpIndexKeyPrefix | len(chainID) | chainID | providerAddress // Thus, the returned array is // - in ascending order of providerAddresses, if chainID is not nil; // - in undetermined order, if chainID is nil. func (k Keeper) GetAllValidatorConsumerPubKeys(ctx sdk.Context, chainID *string) (validatorConsumerPubKeys []types.ValidatorConsumerPubKey) { store := ctx.KVStore(k.storeKey) var prefix []byte + consumerValidatorsKeyPrefix := types.ConsumerValidatorsKeyPrefix() if chainID == nil { // iterate over the validators public keys assigned for all consumer chains - prefix = []byte{types.ConsumerValidatorsBytePrefix} + prefix = []byte{consumerValidatorsKeyPrefix} } else { // iterate over the validators public keys assigned for chainID - prefix = types.ChainIdWithLenKey(types.ConsumerValidatorsBytePrefix, *chainID) + prefix = types.ChainIdWithLenKey(consumerValidatorsKeyPrefix, *chainID) } iterator := storetypes.KVStorePrefixIterator(store, prefix) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { // TODO: store chainID and provider cons address in value bytes, marshaled as protobuf type - chainID, providerAddrTmp, err := types.ParseChainIdAndConsAddrKey(types.ConsumerValidatorsBytePrefix, iterator.Key()) + chainID, providerAddrTmp, err := types.ParseChainIdAndConsAddrKey(consumerValidatorsKeyPrefix, iterator.Key()) if err != nil { // An error here would indicate something is very wrong, // the store key is assumed to be correctly serialized in SetValidatorConsumerPubKey. @@ -188,25 +189,26 @@ func (k Keeper) SetValidatorByConsumerAddr( // If chainID is nil, it returns all the mappings from consensus addresses on all consumer chains. // // Note that the mappings for a consumer chain are stored under keys with the following format: -// ValidatorsByConsumerAddrBytePrefix | len(chainID) | chainID | consumerAddress +// ValidatorsByConsumerAddrKeyPrefix | len(chainID) | chainID | consumerAddress // Thus, the returned array is // - in ascending order of consumerAddresses, if chainID is not nil; // - in undetermined order, if chainID is nil. func (k Keeper) GetAllValidatorsByConsumerAddr(ctx sdk.Context, chainID *string) (validatorConsumerAddrs []types.ValidatorByConsumerAddr) { store := ctx.KVStore(k.storeKey) var prefix []byte + validatorsByConsumerAddrKeyPrefix := types.ValidatorsByConsumerAddrKeyPrefix() if chainID == nil { // iterate over the mappings from consensus addresses on all consumer chains - prefix = []byte{types.ValidatorsByConsumerAddrBytePrefix} + prefix = []byte{validatorsByConsumerAddrKeyPrefix} } else { // iterate over the mappings from consensus addresses on chainID - prefix = types.ChainIdWithLenKey(types.ValidatorsByConsumerAddrBytePrefix, *chainID) + prefix = types.ChainIdWithLenKey(validatorsByConsumerAddrKeyPrefix, *chainID) } iterator := storetypes.KVStorePrefixIterator(store, prefix) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { // TODO: store chainID and consumer cons address in value bytes, marshaled as protobuf type - chainID, consumerAddrTmp, err := types.ParseChainIdAndConsAddrKey(types.ValidatorsByConsumerAddrBytePrefix, iterator.Key()) + chainID, consumerAddrTmp, err := types.ParseChainIdAndConsAddrKey(validatorsByConsumerAddrKeyPrefix, iterator.Key()) if err != nil { // An error here would indicate something is very wrong, // store keys are assumed to be correctly serialized in SetValidatorByConsumerAddr. @@ -286,15 +288,16 @@ func (k Keeper) GetConsumerAddrsToPrune( // GetAllConsumerAddrsToPrune gets all consumer addresses that can be pruned for a given chainID. // // Note that the list of all consumer addresses is stored under keys with the following format: -// ConsumerAddrsToPruneBytePrefix | len(chainID) | chainID | vscID +// ConsumerAddrsToPruneKeyPrefix | len(chainID) | chainID | vscID // Thus, the returned array is in ascending order of vscIDs. func (k Keeper) GetAllConsumerAddrsToPrune(ctx sdk.Context, chainID string) (consumerAddrsToPrune []types.ConsumerAddrsToPrune) { store := ctx.KVStore(k.storeKey) - iteratorPrefix := types.ChainIdWithLenKey(types.ConsumerAddrsToPruneBytePrefix, chainID) + consumerAddrsToPruneKeyPrefix := types.ConsumerAddrsToPruneKeyPrefix() + iteratorPrefix := types.ChainIdWithLenKey(consumerAddrsToPruneKeyPrefix, chainID) iterator := storetypes.KVStorePrefixIterator(store, iteratorPrefix) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { - _, vscID, err := types.ParseChainIdAndUintIdKey(types.ConsumerAddrsToPruneBytePrefix, iterator.Key()) + _, vscID, err := types.ParseChainIdAndUintIdKey(consumerAddrsToPruneKeyPrefix, iterator.Key()) if err != nil { // An error here would indicate something is very wrong, // store keys are assumed to be correctly serialized in AppendConsumerAddrsToPrune. diff --git a/x/ccv/provider/keeper/partial_set_security_test.go b/x/ccv/provider/keeper/partial_set_security_test.go index 2dfbfd3b82..3b9a70077e 100644 --- a/x/ccv/provider/keeper/partial_set_security_test.go +++ b/x/ccv/provider/keeper/partial_set_security_test.go @@ -86,6 +86,7 @@ func TestHandleOptInWithConsumerKey(t *testing.T) { // assert that the `consumerAddr` to `providerAddr` association was set as well consumerAddr, _ := ccvtypes.TMCryptoPublicKeyToConsAddr(actualConsumerPubKey) actualProviderConsAddr, found := providerKeeper.GetValidatorByConsumerAddr(ctx, "chainID", types.NewConsumerConsAddress(consumerAddr)) + require.True(t, found) require.Equal(t, providerAddr, actualProviderConsAddr) } diff --git a/x/ccv/provider/keeper/proposal.go b/x/ccv/provider/keeper/proposal.go index 52007a38e8..b02b3d0d4d 100644 --- a/x/ccv/provider/keeper/proposal.go +++ b/x/ccv/provider/keeper/proposal.go @@ -342,7 +342,7 @@ func (k Keeper) MakeConsumerGenesis( // SetPendingConsumerAdditionProp stores a pending consumer addition proposal. // // Note that the pending consumer addition proposals are stored under keys with -// the following format: PendingCAPBytePrefix | spawnTime | chainID +// the following format: PendingCAPKeyPrefix | spawnTime | chainID // Thus, if multiple consumer addition proposal for the same chain will pass at // the same time, then only the last one will be stored. func (k Keeper) SetPendingConsumerAdditionProp(ctx sdk.Context, prop *types.ConsumerAdditionProposal) { @@ -454,7 +454,7 @@ func (k Keeper) BeginBlockInit(ctx sdk.Context) { // Note: this method is split out from BeginBlockInit to be easily unit tested. func (k Keeper) GetConsumerAdditionPropsToExecute(ctx sdk.Context) (propsToExecute []types.ConsumerAdditionProposal) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.PendingCAPBytePrefix}) + iterator := storetypes.KVStorePrefixIterator(store, types.PendingCAPKeyPrefix()) defer iterator.Close() @@ -480,12 +480,12 @@ func (k Keeper) GetConsumerAdditionPropsToExecute(ctx sdk.Context) (propsToExecu // GetAllPendingConsumerAdditionProps gets all pending consumer addition proposals. // // Note that the pending consumer addition proposals are stored under keys with the following format: -// PendingCAPBytePrefix | spawnTime.UnixNano() | chainID +// PendingCAPKeyPrefix | spawnTime.UnixNano() | chainID // Thus, the returned array is in spawnTime order. If two proposals have the same spawnTime, // then they are ordered by chainID. func (k Keeper) GetAllPendingConsumerAdditionProps(ctx sdk.Context) (props []types.ConsumerAdditionProposal) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.PendingCAPBytePrefix}) + iterator := storetypes.KVStorePrefixIterator(store, types.PendingCAPKeyPrefix()) defer iterator.Close() @@ -516,7 +516,7 @@ func (k Keeper) DeletePendingConsumerAdditionProps(ctx sdk.Context, proposals .. // SetPendingConsumerRemovalProp stores a pending consumer removal proposal. // // Note that the pending removal addition proposals are stored under keys with -// the following format: PendingCRPBytePrefix | stopTime | chainID +// the following format: PendingCRPKeyPrefix | stopTime | chainID // Thus, if multiple removal addition proposal for the same chain will pass at // the same time, then only the last one will be stored. func (k Keeper) SetPendingConsumerRemovalProp(ctx sdk.Context, prop *types.ConsumerRemovalProposal) { @@ -594,7 +594,7 @@ func (k Keeper) GetConsumerRemovalPropsToExecute(ctx sdk.Context) []types.Consum propsToExecute := []types.ConsumerRemovalProposal{} store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.PendingCRPBytePrefix}) + iterator := storetypes.KVStorePrefixIterator(store, types.PendingCRPKeyPrefix()) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -621,11 +621,11 @@ func (k Keeper) GetConsumerRemovalPropsToExecute(ctx sdk.Context) []types.Consum // GetAllPendingConsumerRemovalProps iterates through the pending consumer removal proposals. // // Note that the pending consumer removal proposals are stored under keys with the following format: -// PendingCRPBytePrefix | stopTime.UnixNano() | chainID +// PendingCRPKeyPrefix | stopTime.UnixNano() | chainID // Thus, the returned array is in stopTime order. func (k Keeper) GetAllPendingConsumerRemovalProps(ctx sdk.Context) (props []types.ConsumerRemovalProposal) { store := ctx.KVStore(k.storeKey) - iterator := storetypes.KVStorePrefixIterator(store, []byte{types.PendingCRPBytePrefix}) + iterator := storetypes.KVStorePrefixIterator(store, types.PendingCRPKeyPrefix()) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { diff --git a/x/ccv/provider/keeper/relay_test.go b/x/ccv/provider/keeper/relay_test.go index b6487e8ec1..bd4211d2bf 100644 --- a/x/ccv/provider/keeper/relay_test.go +++ b/x/ccv/provider/keeper/relay_test.go @@ -19,11 +19,9 @@ import ( abci "github.com/cometbft/cometbft/abci/types" - "github.com/cosmos/interchain-security/v5/testutil/crypto" cryptotestutil "github.com/cosmos/interchain-security/v5/testutil/crypto" testkeeper "github.com/cosmos/interchain-security/v5/testutil/keeper" "github.com/cosmos/interchain-security/v5/x/ccv/provider/keeper" - "github.com/cosmos/interchain-security/v5/x/ccv/provider/types" providertypes "github.com/cosmos/interchain-security/v5/x/ccv/provider/types" ccv "github.com/cosmos/interchain-security/v5/x/ccv/types" ) @@ -111,7 +109,7 @@ func TestQueueVSCPacketsDoesNotResetConsumerValidatorsHeights(t *testing.T) { // opt in validator A and set as a consumer validator providerKeeper.SetOptedIn(ctx, "chainID", providertypes.NewProviderConsAddress(valAConsAddr)) - consumerValidatorA := types.ConsumerValidator{ + consumerValidatorA := providertypes.ConsumerValidator{ ProviderConsAddr: valAConsAddr, Power: 1, ConsumerPublicKey: &valAPubKey, @@ -813,7 +811,7 @@ func TestEndBlockVSU(t *testing.T) { var lastValidators []stakingtypes.Validator var powers []int64 for i := 0; i < 4; i++ { - validator := crypto.NewCryptoIdentityFromIntSeed(i).SDKStakingValidator() + validator := cryptotestutil.NewCryptoIdentityFromIntSeed(i).SDKStakingValidator() lastValidators = append(lastValidators, validator) valAdrr, err := sdk.ValAddressFromBech32(validator.GetOperator()) require.NoError(t, err) diff --git a/x/ccv/provider/keeper/throttle_legacy.go b/x/ccv/provider/keeper/throttle_legacy.go index 53c6f39c72..604f3a08c4 100644 --- a/x/ccv/provider/keeper/throttle_legacy.go +++ b/x/ccv/provider/keeper/throttle_legacy.go @@ -26,7 +26,7 @@ func (k Keeper) LegacyGetAllThrottledPacketData(ctx sdktypes.Context, consumerCh vscMaturedData = []ccvtypes.VSCMaturedPacketData{} store := ctx.KVStore(k.storeKey) - iteratorPrefix := providertypes.ChainIdWithLenKey(providertypes.ThrottledPacketDataBytePrefix, consumerChainID) + iteratorPrefix := providertypes.ChainIdWithLenKey(providertypes.ThrottledPacketDataKeyPrefix(), consumerChainID) iterator := storetypes.KVStorePrefixIterator(store, iteratorPrefix) defer iterator.Close() @@ -60,7 +60,7 @@ func (k Keeper) LegacyGetAllThrottledPacketData(ctx sdktypes.Context, consumerCh // LegacyDeleteThrottledPacketDataForConsumer removes all throttled packet data that was queued on the provider for a given consumer chain. func (k Keeper) LegacyDeleteThrottledPacketDataForConsumer(ctx sdktypes.Context, consumerChainID string) { store := ctx.KVStore(k.storeKey) - iteratorPrefix := providertypes.ChainIdWithLenKey(providertypes.ThrottledPacketDataBytePrefix, consumerChainID) + iteratorPrefix := providertypes.ChainIdWithLenKey(providertypes.ThrottledPacketDataKeyPrefix(), consumerChainID) iterator := storetypes.KVStorePrefixIterator(store, iteratorPrefix) defer iterator.Close() diff --git a/x/ccv/provider/keeper/validator_set_update.go b/x/ccv/provider/keeper/validator_set_update.go index d7f764171e..feec2fb4a9 100644 --- a/x/ccv/provider/keeper/validator_set_update.go +++ b/x/ccv/provider/keeper/validator_set_update.go @@ -53,7 +53,8 @@ func (k Keeper) DeleteConsumerValSet( chainID string, ) { store := ctx.KVStore(k.storeKey) - key := types.ChainIdWithLenKey(types.ConsumerValidatorBytePrefix, chainID) + // get the key byte prefix for ConsumerValidator + key := types.ChainIdWithLenKey(types.ConsumerValidatorKeyPrefix(), chainID) iterator := storetypes.KVStorePrefixIterator(store, key) var keysToDel [][]byte @@ -96,7 +97,7 @@ func (k Keeper) GetConsumerValSet( chainID string, ) (validators []types.ConsumerValidator) { store := ctx.KVStore(k.storeKey) - key := types.ChainIdWithLenKey(types.ConsumerValidatorBytePrefix, chainID) + key := types.ChainIdWithLenKey(types.ConsumerValidatorKeyPrefix(), chainID) iterator := storetypes.KVStorePrefixIterator(store, key) defer iterator.Close() @@ -160,6 +161,10 @@ func (k Keeper) CreateConsumerValidator(ctx sdk.Context, chainID string, validat return types.ConsumerValidator{}, err } power, err := k.stakingKeeper.GetLastValidatorPower(ctx, valAddr) + if err != nil { + return types.ConsumerValidator{}, fmt.Errorf("could not retrieve validator's (%+v) power: %w", + validator, err) + } consAddr, err := validator.GetConsAddr() if err != nil { return types.ConsumerValidator{}, fmt.Errorf("could not retrieve validator's (%+v) consensus address: %w", diff --git a/x/ccv/provider/types/keys.go b/x/ccv/provider/types/keys.go index 47231c219f..a7d7134943 100644 --- a/x/ccv/provider/types/keys.go +++ b/x/ccv/provider/types/keys.go @@ -4,6 +4,7 @@ import ( "bytes" "encoding/binary" "fmt" + "sort" "time" sdk "github.com/cosmos/cosmos-sdk/types" @@ -31,233 +32,379 @@ const ( // This address receives rewards from consumer chains ConsumerRewardsPool = "consumer_rewards_pool" -) -// Iota generated keys/byte prefixes (as a byte), supports 256 possible values -const ( + // Names for the store keys. + // Used for storing the byte prefixes in the constant map. + // See getKeyPrefixes(). - // PortKey defines the key to store the port ID in store - PortByteKey byte = iota + ParametersKeyName = "ParametersKey" - // MaturedUnbondingOpsByteKey is the byte key that stores the list of all unbonding operations ids - // that have matured from a consumer chain perspective, - // i.e., no longer waiting on the unbonding period to elapse on any consumer chain - MaturedUnbondingOpsByteKey + PortKeyName = "PortKey" - // ValidatorSetUpdateIdByteKey is the byte key that stores the current validator set update id - ValidatorSetUpdateIdByteKey + MaturedUnbondingOpsKeyName = "MaturedUnbondingOpsKey" - // SlashMeterByteKey is the byte key for storing the slash meter - SlashMeterByteKey + ValidatorSetUpdateIdKeyName = "ValidatorSetUpdateIdKey" - // SlashMeterReplenishTimeCandidateByteKey is the byte key for storing the slash meter replenish time candidate - SlashMeterReplenishTimeCandidateByteKey + SlashMeterKeyName = "SlashMeterKey" - // ChainToChannelBytePrefix is the byte prefix for storing mapping - // from chainID to the channel ID that is used to send over validator set changes. - ChainToChannelBytePrefix + SlashMeterReplenishTimeCandidateKeyName = "SlashMeterReplenishTimeCandidateKey" - // ChannelToChainBytePrefix is the byte prefix for storing mapping - // from the CCV channel ID to the consumer chain ID. - ChannelToChainBytePrefix + ChainToChannelKeyName = "ChainToChannelKey" - // ChainToClientBytePrefix is the byte prefix for storing the client ID for a given consumer chainID. - ChainToClientBytePrefix + ChannelToChainKeyName = "ChannelToChainKey" - // InitTimeoutTimestampBytePrefix is the byte prefix for storing - // the init timeout timestamp for a given consumer chainID. - InitTimeoutTimestampBytePrefix + ChainToClientKeyName = "ChainToClientKey" - // PendingCAPBytePrefix is the byte prefix for storing pending consumer addition proposals before the spawn time occurs. - // The key includes the BigEndian timestamp to allow for efficient chronological iteration - PendingCAPBytePrefix + InitTimeoutTimestampKeyName = "InitTimeoutTimestampKey" - // PendingCRPBytePrefix is the byte prefix for storing pending consumer removal proposals before the stop time occurs. - // The key includes the BigEndian timestamp to allow for efficient chronological iteration - PendingCRPBytePrefix + PendingCAPKeyName = "PendingCAPKey" - // UnbondingOpBytePrefix is the byte prefix that stores a record of all the ids of consumer chains that - // need to unbond before a given unbonding operation can unbond on this chain. - UnbondingOpBytePrefix + PendingCRPKeyName = "PendingCRPKey" - // UnbondingOpIndexBytePrefix is byte prefix of the index for looking up which unbonding - // operations are waiting for a given consumer chain to unbond - UnbondingOpIndexBytePrefix + UnbondingOpKeyName = "UnbondingOpKey" - // ValsetUpdateBlockHeightBytePrefix is the byte prefix that will store the mapping from vscIDs to block heights - ValsetUpdateBlockHeightBytePrefix + UnbondingOpIndexKeyName = "UnbondingOpIndexKey" - // ConsumerGenesisBytePrefix stores consumer genesis state material (consensus state and client state) indexed by consumer chain id - ConsumerGenesisBytePrefix + ValsetUpdateBlockHeightKeyName = "ValsetUpdateBlockHeightKey" - // SlashAcksBytePrefix is the byte prefix that will store consensus address of consumer chain validators successfully slashed on the provider chain - SlashAcksBytePrefix + ConsumerGenesisKeyName = "ConsumerGenesisKey" - // InitChainHeightBytePrefix is the byte prefix that will store the mapping from a chain id to the corresponding block height on the provider - // this consumer chain was initialized - InitChainHeightBytePrefix + SlashAcksKeyName = "SlashAcksKey" - // PendingVSCsBytePrefix is the byte prefix that will store pending ValidatorSetChangePacket data - PendingVSCsBytePrefix + InitChainHeightKeyName = "InitChainHeightKey" - // VscSendTimestampBytePrefix is the byte prefix for storing - // the list of VSC sending timestamps for a given consumer chainID. - VscSendTimestampBytePrefix + PendingVSCsKeyName = "PendingVSCsKey" - // ThrottledPacketDataSizeBytePrefix is the byte prefix for storing the size of chain-specific throttled packet data queues - ThrottledPacketDataSizeBytePrefix + VscSendTimestampKeyName = "VscSendTimestampKey" - // ThrottledPacketDataBytePrefix is the byte prefix storing throttled packet data - ThrottledPacketDataBytePrefix + ThrottledPacketDataSizeKeyName = "ThrottledPacketDataSizeKey" - // GlobalSlashEntryBytePrefix is the byte prefix storing global slash queue entries - GlobalSlashEntryBytePrefix + ThrottledPacketDataKeyName = "ThrottledPacketDataKey" - // ConsumerValidatorsBytePrefix is the byte prefix that will store the validator assigned keys for every consumer chain - ConsumerValidatorsBytePrefix + GlobalSlashEntryKeyName = "GlobalSlashEntryKey" - // ValidatorsByConsumerAddrBytePrefix is the byte prefix that will store the mapping from validator addresses - // on consumer chains to validator addresses on the provider chain - ValidatorsByConsumerAddrBytePrefix + ConsumerValidatorsKeyName = "ConsumerValidatorsKey" - // KeyAssignmentReplacementsBytePrefix was the byte prefix used to store the key assignments that needed to be replaced in the current block - // NOTE: This prefix is deprecated, but left in place to avoid consumer state migrations - // [DEPRECATED] - KeyAssignmentReplacementsBytePrefix + ValidatorsByConsumerAddrKeyName = "ValidatorsByConsumerAddrKey" - // ConsumerAddrsToPruneBytePrefix is the byte prefix that will store the mapping from VSC ids - // to consumer validators addresses needed for pruning - ConsumerAddrsToPruneBytePrefix + KeyAssignmentReplacementsKeyName = "DeprecatedKeyAssignmentReplacementsKey" - // SlashLogBytePrefix is the byte prefix that will store the mapping from provider address to boolean - // denoting whether the provider address has committed any double signign infractions - SlashLogBytePrefix + ConsumerAddrsToPruneKeyName = "ConsumerAddrsToPruneKey" - // ConsumerRewardDenomsBytePrefix is the byte prefix that will store a list of consumer reward denoms - ConsumerRewardDenomsBytePrefix + SlashLogKeyName = "SlashLogKey" - // VSCMaturedHandledThisBlockBytePrefix is the byte prefix storing the number of vsc matured packets - // handled in the current block - VSCMaturedHandledThisBlockBytePrefix + ConsumerRewardDenomsKeyName = "ConsumerRewardDenomsKey" - // EquivocationEvidenceMinHeightBytePrefix is the byte prefix storing the mapping from consumer chain IDs - // to the minimum height of a valid consumer equivocation evidence - EquivocationEvidenceMinHeightBytePrefix + VSCMaturedHandledThisBlockKeyName = "VSCMaturedHandledThisBlockKey" - // ProposedConsumerChainByteKey is the byte prefix storing the consumer chainId in consumerAddition gov proposal submitted before voting finishes - ProposedConsumerChainByteKey + EquivocationEvidenceMinHeightKeyName = "EquivocationEvidenceMinHeightKey" - // ConsumerValidatorBytePrefix is the byte prefix used when storing for each consumer chain all the consumer - // validators in this epoch that are validating the consumer chain - ConsumerValidatorBytePrefix + ProposedConsumerChainKeyName = "ProposedConsumerChainKey" - // OptedInBytePrefix is the byte prefix for storing whether a validator is opted in to validate on a consumer chain - OptedInBytePrefix + ConsumerValidatorKeyName = "ConsumerValidatorKey" - // TopNBytePrefix is the byte prefix storing the mapping from a consumer chain to the N value of this chain, - // that corresponds to the N% of the top validators that have to validate this consumer chain - TopNBytePrefix + OptedInKeyName = "OptedInKey" - // ValidatorsPowerCapPrefix is the byte prefix storing the mapping from a consumer chain to the power-cap value of this chain, - // that corresponds to p% such that no validator can have more than p% of the voting power on the consumer chain. - // Operates on a best-effort basis. - ValidatorsPowerCapPrefix + TopNKeyName = "TopNKey" - // ValidatorSetCapPrefix is the byte prefix storing the mapping from a consumer chain to the validator-set cap value - // of this chain. - ValidatorSetCapPrefix + ValidatorsPowerCapKeyName = "ValidatorsPowerCapKey" - // AllowlistPrefix is the byte prefix storing the mapping from a consumer chain to the set of validators that are - // allowlisted. - AllowlistPrefix + ValidatorSetCapKeyName = "ValidatorSetCapKey" - // DenylistPrefix is the byte prefix storing the mapping from a consumer chain to the set of validators that are - // denylisted. - DenylistPrefix + AllowlistKeyName = "AllowlistKey" - // ConsumerRewardsAllocationBytePrefix is the byte prefix for storing for each consumer the ICS rewards - // allocated to the consumer rewards pool - ConsumerRewardsAllocationBytePrefix + DenylistKeyName = "DenylistKey" - // ConsumerCommissionRatePrefix is the byte prefix for storing the commission rate - // per validator per consumer chain - ConsumerCommissionRatePrefix + ConsumerRewardsAllocationKeyName = "ConsumerRewardsAllocationKey" - // MinimumPowerInTopNBytePrefix is the byte prefix for storing the - // minimum power required to be in the top N per consumer chain. - MinimumPowerInTopNBytePrefix + ConsumerCommissionRateKeyName = "ConsumerCommissionRateKey" - // NOTE: DO NOT ADD NEW BYTE PREFIXES HERE WITHOUT ADDING THEM TO getAllKeyPrefixes() IN keys_test.go + MinimumPowerInTopNKeyName = "MinimumPowerInTopNKey" ) +// getKeyPrefixes returns a constant map of all the byte prefixes for existing keys +func getKeyPrefixes() map[string]byte { + return map[string]byte{ + // ParametersKey is the is the key for storing provider's parameters. + // note that this was set to the max uint8 type value 0xFF in order to protect + // from using the ICS v5.0.0 provider module by mistake + ParametersKeyName: byte(0xFF), + + // PortKey defines the key to store the port ID in store + PortKeyName: 0, + + // MaturedUnbondingOpsKey is the key that stores the list of all unbonding operations ids + // that have matured from a consumer chain perspective, + // i.e., no longer waiting on the unbonding period to elapse on any consumer chain + MaturedUnbondingOpsKeyName: 1, + + // ValidatorSetUpdateIdKey is the key that stores the current validator set update id + ValidatorSetUpdateIdKeyName: 2, + + // SlashMeterKey is the key for storing the slash meter + SlashMeterKeyName: 3, + + // SlashMeterReplenishTimeCandidateKey is the key for storing the slash meter replenish time candidate + SlashMeterReplenishTimeCandidateKeyName: 4, + + // ChainToChannelKey is the key for storing mapping + // from chainID to the channel ID that is used to send over validator set changes. + ChainToChannelKeyName: 5, + + // ChannelToChainKey is the key for storing mapping + // from the CCV channel ID to the consumer chain ID. + ChannelToChainKeyName: 6, + + // ChainToClientKey is the key for storing the client ID for a given consumer chainID. + ChainToClientKeyName: 7, + + // InitTimeoutTimestampKey is the key for storing + // the init timeout timestamp for a given consumer chainID. + InitTimeoutTimestampKeyName: 8, + + // PendingCAPKey is the key for storing pending consumer addition proposals before the spawn time occurs. + // The key includes the BigEndian timestamp to allow for efficient chronological iteration + PendingCAPKeyName: 9, + + // PendingCRPKey is the key for storing pending consumer removal proposals before the stop time occurs. + // The key includes the BigEndian timestamp to allow for efficient chronological iteration + PendingCRPKeyName: 10, + + // UnbondingOpKey is the key that stores a record of all the ids of consumer chains that + // need to unbond before a given unbonding operation can unbond on this chain. + UnbondingOpKeyName: 11, + + // UnbondingOpIndexKey is key of the index for looking up which unbonding + // operations are waiting for a given consumer chain to unbond + UnbondingOpIndexKeyName: 12, + + // ValsetUpdateBlockHeightKey is the key for storing the mapping from vscIDs to block heights + ValsetUpdateBlockHeightKeyName: 13, + + // ConsumerGenesisKey stores consumer genesis state material (consensus state and client state) indexed by consumer chain id + ConsumerGenesisKeyName: 14, + + // SlashAcksKey is the key for storing consensus address of consumer chain validators successfully slashed on the provider chain + SlashAcksKeyName: 15, + + // InitChainHeightKey is the key for storing the mapping from a chain id to the corresponding block height on the provider + // this consumer chain was initialized + InitChainHeightKeyName: 16, + + // PendingVSCsKey is the key for storing pending ValidatorSetChangePacket data + PendingVSCsKeyName: 17, + + // VscSendTimestampKey is the key for storing + // the list of VSC sending timestamps for a given consumer chainID. + VscSendTimestampKeyName: 18, + + // ThrottledPacketDataSizeKey is the key for storing the size of chain-specific throttled packet data queues + ThrottledPacketDataSizeKeyName: 19, + + // ThrottledPacketDataKey is the key for storing throttled packet data + ThrottledPacketDataKeyName: 20, + + // GlobalSlashEntryKey is the key for storing global slash queue entries + GlobalSlashEntryKeyName: 21, + + // ConsumerValidatorsKey is the key for storing the validator assigned keys for every consumer chain + ConsumerValidatorsKeyName: 22, + + // ValidatorsByConsumerAddrKey is the key for storing the mapping from validator addresses + // on consumer chains to validator addresses on the provider chain + ValidatorsByConsumerAddrKeyName: 23, + + // DeprecatedKeyAssignmentReplacementsKey was the key used to store the key assignments that needed to be replaced in the current block + // NOTE: This prefix is deprecated, but left in place to avoid consumer state migrations + // [DEPRECATED] + KeyAssignmentReplacementsKeyName: 24, + + // ConsumerAddrsToPruneKey is the key for storing the mapping from VSC ids + // to consumer validators addresses needed for pruning + ConsumerAddrsToPruneKeyName: 25, + + // SlashLogKey is the key for storing the mapping from provider address to boolean + // denoting whether the provider address has committed any double signign infractions + SlashLogKeyName: 26, + + // ConsumerRewardDenomsKey is the key for storing a list of consumer reward denoms + ConsumerRewardDenomsKeyName: 27, + + // VSCMaturedHandledThisBlockKey is the key for storing the number of vsc matured packets + // handled in the current block + VSCMaturedHandledThisBlockKeyName: 28, + + // EquivocationEvidenceMinHeightKey is the key for storing the mapping from consumer chain IDs + // to the minimum height of a valid consumer equivocation evidence + EquivocationEvidenceMinHeightKeyName: 29, + + // ProposedConsumerChainKey is the key for storing the consumer chainId in consumerAddition gov proposal submitted before voting finishes + ProposedConsumerChainKeyName: 30, + + // ConsumerValidatorKey is the key for storing for each consumer chain all the consumer + // validators in this epoch that are validating the consumer chain + ConsumerValidatorKeyName: 31, + + // OptedInKey is the key for storing whether a validator is opted in to validate on a consumer chain + OptedInKeyName: 32, + + // TopNKey is the key for storing the mapping from a consumer chain to the N value of this chain, + // that corresponds to the N% of the top validators that have to validate this consumer chain + TopNKeyName: 33, + + // ValidatorsPowerCapKey is the key for storing the mapping from a consumer chain to the power-cap value of this chain, + // that corresponds to p% such that no validator can have more than p% of the voting power on the consumer chain. + // Operates on a best-effort basis. + ValidatorsPowerCapKeyName: 34, + + // ValidatorSetCapKey is the key for storing the mapping from a consumer chain to the validator-set cap value + // of this chain. + ValidatorSetCapKeyName: 35, + + // AllowlistKey is the key for storing the mapping from a consumer chain to the set of validators that are + // allowlisted. + AllowlistKeyName: 36, + + // DenylistKey is the key for storing the mapping from a consumer chain to the set of validators that are + // denylisted. + DenylistKeyName: 37, + + // ConsumerRewardsAllocationKey is the key for storing for each consumer the ICS rewards + // allocated to the consumer rewards pool + ConsumerRewardsAllocationKeyName: 38, + + // ConsumerCommissionRateKey is the key for storing the commission rate + // per validator per consumer chain + ConsumerCommissionRateKeyName: 39, + + // MinimumPowerInTopNKey is the key for storing the + // minimum power required to be in the top N per consumer chain. + MinimumPowerInTopNKeyName: 40, + + // NOTE: DO NOT ADD NEW BYTE PREFIXES HERE WITHOUT ADDING THEM TO TestPreserveBytePrefix() IN keys_test.go + } +} + +// mustGetKeyPrefix returns the key prefix for a given key. +// It panics if there is not byte prefix for the index. +func mustGetKeyPrefix(key string) byte { + keyPrefixes := getKeyPrefixes() + if prefix, found := keyPrefixes[key]; !found { + panic(fmt.Sprintf("could not find key prefix for index %s", key)) + } else { + return prefix + } +} + +// GetAllKeyPrefixes returns all the key prefixes. +// Only used for testing +func GetAllKeyPrefixes() []byte { + prefixMap := getKeyPrefixes() + keys := make([]string, 0, len(prefixMap)) + for k := range prefixMap { + keys = append(keys, k) + } + sort.Strings(keys) + prefixList := make([]byte, 0, len(prefixMap)) + for _, k := range keys { + prefixList = append(prefixList, prefixMap[k]) + } + return prefixList +} + +// GetAllKeys returns the names of all the keys. +// Only used for testing +func GetAllKeyNames() []string { + prefixMap := getKeyPrefixes() + keys := make([]string, 0, len(prefixMap)) + for k := range prefixMap { + keys = append(keys, k) + } + sort.Strings(keys) + return keys +} + // // Fully defined key func section // -const ( - // ParametersKey is the is the single byte key for storing provider's parameters. - // note that this was set to the max uint8 type value 0xFF in order to protect - // from using the ICS v5.0.0 provider module by mistake - ParametersByteKey = byte(0xFF) -) - // ParametersKey returns the key for the parameters of the provider module in the store func ParametersKey() []byte { - return []byte{ParametersByteKey} + return []byte{mustGetKeyPrefix(ParametersKeyName)} } // PortKey returns the key to the port ID in the store func PortKey() []byte { - return []byte{PortByteKey} + return []byte{mustGetKeyPrefix(PortKeyName)} } // MaturedUnbondingOpsKey returns the key for storing the list of matured unbonding operations. func MaturedUnbondingOpsKey() []byte { - return []byte{MaturedUnbondingOpsByteKey} + return []byte{mustGetKeyPrefix(MaturedUnbondingOpsKeyName)} } // ValidatorSetUpdateIdKey is the key that stores the current validator set update id func ValidatorSetUpdateIdKey() []byte { - return []byte{ValidatorSetUpdateIdByteKey} + return []byte{mustGetKeyPrefix(ValidatorSetUpdateIdKeyName)} } // SlashMeterKey returns the key storing the slash meter func SlashMeterKey() []byte { - return []byte{SlashMeterByteKey} + return []byte{mustGetKeyPrefix(SlashMeterKeyName)} } // SlashMeterReplenishTimeCandidateKey returns the key storing the slash meter replenish time candidate func SlashMeterReplenishTimeCandidateKey() []byte { - return []byte{SlashMeterReplenishTimeCandidateByteKey} + return []byte{mustGetKeyPrefix(SlashMeterReplenishTimeCandidateKeyName)} } // ChainToChannelKey returns the key under which the CCV channel ID will be stored for the given consumer chain. func ChainToChannelKey(chainID string) []byte { - return append([]byte{ChainToChannelBytePrefix}, []byte(chainID)...) + return append([]byte{mustGetKeyPrefix(ChainToChannelKeyName)}, []byte(chainID)...) +} + +// ChannelToChainKeyPrefix returns the key prefix for storing the consumer chain IDs. +func ChannelToChainKeyPrefix() []byte { + return []byte{mustGetKeyPrefix(ChannelToChainKeyName)} } // ChannelToChainKey returns the key under which the consumer chain ID will be stored for the given channelID. func ChannelToChainKey(channelID string) []byte { - return append([]byte{ChannelToChainBytePrefix}, []byte(channelID)...) + return append(ChannelToChainKeyPrefix(), []byte(channelID)...) +} + +// ChainToClientKeyPrefix returns the key prefix for storing the clientID for the given chainID. +func ChainToClientKeyPrefix() []byte { + return []byte{mustGetKeyPrefix(ChainToClientKeyName)} } // ChainToClientKey returns the key under which the clientID for the given chainID is stored. func ChainToClientKey(chainID string) []byte { - return append([]byte{ChainToClientBytePrefix}, []byte(chainID)...) + return append(ChainToClientKeyPrefix(), []byte(chainID)...) +} + +// InitTimeoutTimestampKeyPrefix returns the key prefix for storing the init timeout timestamps +func InitTimeoutTimestampKeyPrefix() []byte { + return []byte{mustGetKeyPrefix(InitTimeoutTimestampKeyName)} } // InitTimeoutTimestampKey returns the key under which the init timeout timestamp for the given chainID is stored. func InitTimeoutTimestampKey(chainID string) []byte { - return append([]byte{InitTimeoutTimestampBytePrefix}, []byte(chainID)...) + return append(InitTimeoutTimestampKeyPrefix(), []byte(chainID)...) +} + +// PendingCAPKeyPrefix returns the key prefix for storing a pending consumer addition proposal +func PendingCAPKeyPrefix() []byte { + return []byte{mustGetKeyPrefix(PendingCAPKeyName)} } // PendingCAPKey returns the key under which a pending consumer addition proposal is stored. -// The key has the following format: PendingCAPBytePrefix | timestamp.UnixNano() | chainID +// The key has the following format: PendingCAPKeyPrefix | timestamp.UnixNano() | chainID func PendingCAPKey(timestamp time.Time, chainID string) []byte { ts := uint64(timestamp.UTC().UnixNano()) return ccvtypes.AppendMany( // Append the prefix - []byte{PendingCAPBytePrefix}, + PendingCAPKeyPrefix(), // Append the time sdk.Uint64ToBigEndian(ts), // Append the chainId @@ -265,13 +412,18 @@ func PendingCAPKey(timestamp time.Time, chainID string) []byte { ) } +// PendingCRPKeyPrefix returns the key prefix for storing pending consumer removal proposals. +func PendingCRPKeyPrefix() []byte { + return []byte{mustGetKeyPrefix(PendingCRPKeyName)} +} + // PendingCRPKey returns the key under which pending consumer removal proposals are stored. -// The key has the following format: PendingCRPBytePrefix | timestamp.UnixNano() | chainID +// The key has the following format: PendingCRPKeyPrefix | timestamp.UnixNano() | chainID func PendingCRPKey(timestamp time.Time, chainID string) []byte { ts := uint64(timestamp.UTC().UnixNano()) return ccvtypes.AppendMany( // Append the prefix - []byte{PendingCRPBytePrefix}, + PendingCRPKeyPrefix(), // Append the time sdk.Uint64ToBigEndian(ts), // Append the chainId @@ -279,76 +431,100 @@ func PendingCRPKey(timestamp time.Time, chainID string) []byte { ) } +// UnbondingOpKeyPrefix returns the key prefix that stores a record of all the ids of consumer chains that +// need to unbond before a given unbonding operation can unbond on this chain. +func UnbondingOpKeyPrefix() []byte { + return []byte{mustGetKeyPrefix(UnbondingOpKeyName)} +} + // UnbondingOpKey returns the key that stores a record of all the ids of consumer chains that // need to unbond before a given unbonding operation can unbond on this chain. func UnbondingOpKey(id uint64) []byte { bz := make([]byte, 8) binary.BigEndian.PutUint64(bz, id) - return append([]byte{UnbondingOpBytePrefix}, bz...) + return append(UnbondingOpKeyPrefix(), bz...) +} + +// UnbondingOpIndexKeyPrefix returns the key prefix for storing an unbonding op index +func UnbondingOpIndexKeyPrefix() byte { + return mustGetKeyPrefix(UnbondingOpIndexKeyName) } -// UnbondingOpIndexKey returns an unbonding op index key -// Note: chainId is hashed to a fixed length sequence of bytes here to prevent -// injection attack between chainIDs. +// UnbondingOpIndexKey returns the key for storing an unbonding op index func UnbondingOpIndexKey(chainID string, vscID uint64) []byte { - return ChainIdAndUintIdKey(UnbondingOpIndexBytePrefix, chainID, vscID) + return ChainIdAndUintIdKey(UnbondingOpIndexKeyPrefix(), chainID, vscID) } // ParseUnbondingOpIndexKey parses an unbonding op index key for VSC ID // Removes the prefix + chainID from index key and returns only the key part. func ParseUnbondingOpIndexKey(key []byte) (string, uint64, error) { - return ParseChainIdAndUintIdKey(UnbondingOpIndexBytePrefix, key) + return ParseChainIdAndUintIdKey(UnbondingOpIndexKeyPrefix(), key) +} + +// ValsetUpdateBlockHeightKeyPrefix returns the key prefix that storing the mapping from valset update ID to block height +func ValsetUpdateBlockHeightKeyPrefix() []byte { + return []byte{mustGetKeyPrefix(ValsetUpdateBlockHeightKeyName)} } // ValsetUpdateBlockHeightKey returns the key that storing the mapping from valset update ID to block height func ValsetUpdateBlockHeightKey(valsetUpdateId uint64) []byte { vuidBytes := make([]byte, 8) binary.BigEndian.PutUint64(vuidBytes, valsetUpdateId) - return append([]byte{ValsetUpdateBlockHeightBytePrefix}, vuidBytes...) + return append(ValsetUpdateBlockHeightKeyPrefix(), vuidBytes...) } // ConsumerGenesisKey returns the key corresponding to consumer genesis state material // (consensus state and client state) indexed by consumer chain id func ConsumerGenesisKey(chainID string) []byte { - return append([]byte{ConsumerGenesisBytePrefix}, []byte(chainID)...) + return append([]byte{mustGetKeyPrefix(ConsumerGenesisKeyName)}, []byte(chainID)...) } // SlashAcksKey returns the key under which slashing acks are stored for a given chain ID func SlashAcksKey(chainID string) []byte { - return append([]byte{SlashAcksBytePrefix}, []byte(chainID)...) + return append([]byte{mustGetKeyPrefix(SlashAcksKeyName)}, []byte(chainID)...) } // InitChainHeightKey returns the key under which the block height for a given chain ID is stored func InitChainHeightKey(chainID string) []byte { - return append([]byte{InitChainHeightBytePrefix}, []byte(chainID)...) + return append([]byte{mustGetKeyPrefix(InitChainHeightKeyName)}, []byte(chainID)...) } // PendingVSCsKey returns the key under which // pending ValidatorSetChangePacket data is stored for a given chain ID func PendingVSCsKey(chainID string) []byte { - return append([]byte{PendingVSCsBytePrefix}, []byte(chainID)...) + return append([]byte{mustGetKeyPrefix(PendingVSCsKeyName)}, []byte(chainID)...) +} + +// VscSendingTimestampKeyPrefix returns the key for storing the sending timestamp of VSCPackets +func VscSendingTimestampKeyPrefix() byte { + return mustGetKeyPrefix(VscSendTimestampKeyName) } // VscSendingTimestampKey returns the key under which the // sending timestamp of the VSCPacket with vsc ID is stored func VscSendingTimestampKey(chainID string, vscID uint64) []byte { - return ChainIdAndUintIdKey(VscSendTimestampBytePrefix, chainID, vscID) + return ChainIdAndUintIdKey(VscSendingTimestampKeyPrefix(), chainID, vscID) } // ParseVscTimeoutTimestampKey returns chain ID and vsc ID // for a VscSendingTimestampKey or an error if unparsable func ParseVscSendingTimestampKey(bz []byte) (string, uint64, error) { - return ParseChainIdAndUintIdKey(VscSendTimestampBytePrefix, bz) + return ParseChainIdAndUintIdKey(VscSendingTimestampKeyPrefix(), bz) } // ThrottledPacketDataSizeKey returns the key storing the size of the throttled packet data queue for a given chain ID func ThrottledPacketDataSizeKey(consumerChainID string) []byte { - return append([]byte{ThrottledPacketDataSizeBytePrefix}, []byte(consumerChainID)...) + return append([]byte{mustGetKeyPrefix(ThrottledPacketDataSizeKeyName)}, []byte(consumerChainID)...) } -// ThrottledPacketDataKey returns the key storing the throttled packet data queue for a given chain ID and ibc seq num +// ThrottledPacketDataKeyPrefix returns the key prefix for storing the throttled packet data queue +func ThrottledPacketDataKeyPrefix() byte { + return mustGetKeyPrefix(ThrottledPacketDataKeyName) +} + +// ThrottledPacketDataKey returns the key for storing the throttled packet data queue for a given chain ID and ibc seq num func ThrottledPacketDataKey(consumerChainID string, ibcSeqNum uint64) []byte { - return ChainIdAndUintIdKey(ThrottledPacketDataBytePrefix, consumerChainID, ibcSeqNum) + return ChainIdAndUintIdKey(ThrottledPacketDataKeyPrefix(), consumerChainID, ibcSeqNum) } // MustParseThrottledPacketDataKey parses a throttled packet data key or panics upon failure @@ -362,7 +538,12 @@ func MustParseThrottledPacketDataKey(key []byte) (string, uint64) { // ParseThrottledPacketDataKey parses a throttled packet data key func ParseThrottledPacketDataKey(key []byte) (chainId string, ibcSeqNum uint64, err error) { - return ParseChainIdAndUintIdKey(ThrottledPacketDataBytePrefix, key) + return ParseChainIdAndUintIdKey(ThrottledPacketDataKeyPrefix(), key) +} + +// GlobalSlashEntryKeyPrefix returns the key for storing a global slash queue entry. +func GlobalSlashEntryKeyPrefix() []byte { + return []byte{mustGetKeyPrefix(GlobalSlashEntryKeyName)} } // GlobalSlashEntryKey returns the key for storing a global slash queue entry. @@ -370,7 +551,7 @@ func GlobalSlashEntryKey(entry GlobalSlashEntry) []byte { recvTime := uint64(entry.RecvTime.UTC().UnixNano()) return ccvtypes.AppendMany( // Append byte prefix - []byte{GlobalSlashEntryBytePrefix}, + GlobalSlashEntryKeyPrefix(), // Append time bz sdk.Uint64ToBigEndian(recvTime), // Append ibc seq num @@ -386,7 +567,7 @@ func MustParseGlobalSlashEntryKey(bz []byte) ( recvTime time.Time, consumerChainID string, ibcSeqNum uint64, ) { // Prefix is in first byte - expectedPrefix := []byte{GlobalSlashEntryBytePrefix} + expectedPrefix := GlobalSlashEntryKeyPrefix() if prefix := bz[:1]; !bytes.Equal(prefix, expectedPrefix) { panic(fmt.Sprintf("invalid prefix; expected: %X, got: %X", expectedPrefix, prefix)) } @@ -404,38 +585,178 @@ func MustParseGlobalSlashEntryKey(bz []byte) ( return recvTime, chainID, ibcSeqNum } +// ConsumerValidatorsKey returns the key for storing the validator assigned keys for every consumer chain +func ConsumerValidatorsKeyPrefix() byte { + return mustGetKeyPrefix(ConsumerValidatorsKeyName) +} + // ConsumerValidatorsKey returns the key under which the // validator assigned keys for every consumer chain are stored func ConsumerValidatorsKey(chainID string, addr ProviderConsAddress) []byte { - return ChainIdAndConsAddrKey(ConsumerValidatorsBytePrefix, chainID, addr.ToSdkConsAddr()) + return ChainIdAndConsAddrKey(ConsumerValidatorsKeyPrefix(), chainID, addr.ToSdkConsAddr()) } -// ValidatorsByConsumerAddrKey returns the key under which the mapping from validator addresses -// on consumer chains to validator addresses on the provider chain is stored +// ValidatorsByConsumerAddrKeyPrefix returns the key prefix for storing the mapping from validator addresses +// on consumer chains to validator addresses on the provider chain +func ValidatorsByConsumerAddrKeyPrefix() byte { + return mustGetKeyPrefix(ValidatorsByConsumerAddrKeyName) +} + +// ValidatorsByConsumerAddrKey returns the key for storing the mapping from validator addresses +// on consumer chains to validator addresses on the provider chain func ValidatorsByConsumerAddrKey(chainID string, addr ConsumerConsAddress) []byte { - return ChainIdAndConsAddrKey(ValidatorsByConsumerAddrBytePrefix, chainID, addr.ToSdkConsAddr()) + return ChainIdAndConsAddrKey(ValidatorsByConsumerAddrKeyPrefix(), chainID, addr.ToSdkConsAddr()) +} + +// ConsumerAddrsToPruneKeyPrefix returns the key prefix for storing the +// mapping from VSC ids to consumer validators addresses +func ConsumerAddrsToPruneKeyPrefix() byte { + return mustGetKeyPrefix(ConsumerAddrsToPruneKeyName) } -// ConsumerAddrsToPruneKey returns the key under which the -// mapping from VSC ids to consumer validators addresses is stored +// ConsumerAddrsToPruneKey returns the key for storing the +// mapping from VSC ids to consumer validators addresses func ConsumerAddrsToPruneKey(chainID string, vscID uint64) []byte { - return ChainIdAndUintIdKey(ConsumerAddrsToPruneBytePrefix, chainID, vscID) + return ChainIdAndUintIdKey(ConsumerAddrsToPruneKeyPrefix(), chainID, vscID) } // SlashLogKey returns the key to a validator's slash log func SlashLogKey(providerAddr ProviderConsAddress) []byte { - return append([]byte{SlashLogBytePrefix}, providerAddr.ToSdkConsAddr().Bytes()...) + return append([]byte{mustGetKeyPrefix(SlashLogKeyName)}, providerAddr.ToSdkConsAddr().Bytes()...) +} + +func VSCMaturedHandledThisBlockKey() []byte { + return []byte{mustGetKeyPrefix(VSCMaturedHandledThisBlockKeyName)} +} + +// ConsumerRewardDenomsKeyPrefix returns the key prefix for storing consumer reward denoms +func ConsumerRewardDenomsKeyPrefix() []byte { + return []byte{mustGetKeyPrefix(ConsumerRewardDenomsKeyName)} } -// ConsumerRewardDenomsKey returns the key under which consumer reward denoms are stored +// ConsumerRewardDenomsKey returns the key for storing consumer reward denoms func ConsumerRewardDenomsKey(denom string) []byte { - return append([]byte{ConsumerRewardDenomsBytePrefix}, []byte(denom)...) + return append(ConsumerRewardDenomsKeyPrefix(), []byte(denom)...) } // EquivocationEvidenceMinHeightKey returns the key storing the minimum height // of a valid consumer equivocation evidence for a given consumer chain ID func EquivocationEvidenceMinHeightKey(consumerChainID string) []byte { - return append([]byte{EquivocationEvidenceMinHeightBytePrefix}, []byte(consumerChainID)...) + return append([]byte{mustGetKeyPrefix(EquivocationEvidenceMinHeightKeyName)}, []byte(consumerChainID)...) +} + +// ProposedConsumerChainKeyPrefix returns the key prefix for storing proposed consumer chainId +// in consumerAddition gov proposal before voting finishes +func ProposedConsumerChainKeyPrefix() []byte { + return []byte{mustGetKeyPrefix(ProposedConsumerChainKeyName)} +} + +// ProposedConsumerChainKey returns the key of proposed consumer chainId in consumerAddition gov proposal before voting finishes, the stored key format is prefix|proposalID, value is chainID +func ProposedConsumerChainKey(proposalID uint64) []byte { + return ccvtypes.AppendMany( + ProposedConsumerChainKeyPrefix(), + sdk.Uint64ToBigEndian(proposalID), + ) +} + +// ParseProposedConsumerChainKey get the proposalID in the key +func ParseProposedConsumerChainKey(bz []byte) (uint64, error) { + expectedPrefix := ProposedConsumerChainKeyPrefix() + prefixL := len(expectedPrefix) + if prefix := bz[:prefixL]; !bytes.Equal(prefix, expectedPrefix) { + return 0, fmt.Errorf("invalid prefix; expected: %X, got: %X", expectedPrefix, prefix) + } + proposalID := sdk.BigEndianToUint64(bz[prefixL:]) + + return proposalID, nil +} + +// ConsumerValidatorKeyPrefix returns the key prefix for storing consumer validators +func ConsumerValidatorKeyPrefix() byte { + return mustGetKeyPrefix(ConsumerValidatorKeyName) +} + +// ConsumerValidatorKey returns the key for storing consumer validators +// for the given consumer chain `chainID` and validator with `providerAddr` +func ConsumerValidatorKey(chainID string, providerAddr []byte) []byte { + prefix := ChainIdWithLenKey(ConsumerValidatorKeyPrefix(), chainID) + return append(prefix, providerAddr...) +} + +// TopNKey returns the key used to store the Top N value per consumer chain. +// This value corresponds to the N% of the top validators that have to validate the consumer chain. +func TopNKey(chainID string) []byte { + return ChainIdWithLenKey(mustGetKeyPrefix(TopNKeyName), chainID) +} + +// ValidatorSetPowerKey returns the key of consumer chain `chainID` +func ValidatorsPowerCapKey(chainID string) []byte { + return ChainIdWithLenKey(mustGetKeyPrefix(ValidatorsPowerCapKeyName), chainID) +} + +// ValidatorSetCapKey returns the key of consumer chain `chainID` +func ValidatorSetCapKey(chainID string) []byte { + return ChainIdWithLenKey(mustGetKeyPrefix(ValidatorSetCapKeyName), chainID) +} + +// AllowlistKeyPrefix returns the key prefix for storing consumer chains allowlists +func AllowlistKeyPrefix() byte { + return mustGetKeyPrefix(AllowlistKeyName) +} + +// AllowlistKey returns the key for storing consumer chains allowlists +func AllowlistKey(chainID string, providerAddr ProviderConsAddress) []byte { + return append( + ChainIdWithLenKey(AllowlistKeyPrefix(), chainID), + providerAddr.ToSdkConsAddr().Bytes()..., + ) +} + +// DenylistKeyPrefix returns the key prefix for storing consumer chains denylists +func DenylistKeyPrefix() byte { + return mustGetKeyPrefix(DenylistKeyName) +} + +// DenylistKey returns the key for storing consumer chains denylists +func DenylistKey(chainID string, providerAddr ProviderConsAddress) []byte { + return append( + ChainIdWithLenKey(DenylistKeyPrefix(), chainID), + providerAddr.ToSdkConsAddr().Bytes()..., + ) +} + +// OptedInKeyPrefix returns the key prefix for storing whether a validator is opted in on a consumer chain. +func OptedInKeyPrefix() byte { + return mustGetKeyPrefix(OptedInKeyName) +} + +// OptedInKey returns the key used to store whether a validator is opted in on a consumer chain. +func OptedInKey(chainID string, providerAddr ProviderConsAddress) []byte { + prefix := ChainIdWithLenKey(OptedInKeyPrefix(), chainID) + return append(prefix, providerAddr.ToSdkConsAddr().Bytes()...) +} + +// ConsumerRewardsAllocationKey returns the key used to store the ICS rewards per consumer chain +func ConsumerRewardsAllocationKey(chainID string) []byte { + return append([]byte{mustGetKeyPrefix(ConsumerRewardsAllocationKeyName)}, []byte(chainID)...) +} + +// ConsumerCommissionRateKeyPrefix returns the key prefix for storing the commission rate per validator per consumer chain. +func ConsumerCommissionRateKeyPrefix() byte { + return mustGetKeyPrefix(ConsumerCommissionRateKeyName) +} + +// ConsumerCommissionRateKey returns the key used to store the commission rate per validator per consumer chain. +func ConsumerCommissionRateKey(chainID string, providerAddr ProviderConsAddress) []byte { + return ChainIdAndConsAddrKey( + ConsumerCommissionRateKeyPrefix(), + chainID, + providerAddr.ToSdkConsAddr(), + ) +} + +func MinimumPowerInTopNKey(chainID string) []byte { + return ChainIdWithLenKey(mustGetKeyPrefix(MinimumPowerInTopNKeyName), chainID) } // NOTE: DO NOT ADD FULLY DEFINED KEY FUNCTIONS WITHOUT ADDING THEM TO getAllFullyDefinedKeys() IN keys_test.go @@ -541,86 +862,6 @@ func ParseChainIdAndConsAddrKey(prefix byte, bz []byte) (string, sdk.ConsAddress return chainID, addr, nil } -func VSCMaturedHandledThisBlockKey() []byte { - return []byte{VSCMaturedHandledThisBlockBytePrefix} -} - -// ProposedConsumerChainKey returns the key of proposed consumer chainId in consumerAddition gov proposal before voting finishes, the stored key format is prefix|proposalID, value is chainID -func ProposedConsumerChainKey(proposalID uint64) []byte { - return ccvtypes.AppendMany( - []byte{ProposedConsumerChainByteKey}, - sdk.Uint64ToBigEndian(proposalID), - ) -} - -// ParseProposedConsumerChainKey get the proposalID in the key -func ParseProposedConsumerChainKey(prefix byte, bz []byte) (uint64, error) { - expectedPrefix := []byte{prefix} - prefixL := len(expectedPrefix) - if prefix := bz[:prefixL]; !bytes.Equal(prefix, expectedPrefix) { - return 0, fmt.Errorf("invalid prefix; expected: %X, got: %X", expectedPrefix, prefix) - } - proposalID := sdk.BigEndianToUint64(bz[prefixL:]) - - return proposalID, nil -} - -// ConsumerValidatorKey returns the key of consumer chain `chainID` and validator with `providerAddr` -func ConsumerValidatorKey(chainID string, providerAddr []byte) []byte { - prefix := ChainIdWithLenKey(ConsumerValidatorBytePrefix, chainID) - return append(prefix, providerAddr...) -} - -// TopNKey returns the key used to store the Top N value per consumer chain. -// This value corresponds to the N% of the top validators that have to validate the consumer chain. -func TopNKey(chainID string) []byte { - return ChainIdWithLenKey(TopNBytePrefix, chainID) -} - -// ValidatorSetPowerKey returns the key of consumer chain `chainID` -func ValidatorsPowerCapKey(chainID string) []byte { - return ChainIdWithLenKey(ValidatorsPowerCapPrefix, chainID) -} - -// ValidatorSetCapKey returns the key of consumer chain `chainID` -func ValidatorSetCapKey(chainID string) []byte { - return ChainIdWithLenKey(ValidatorSetCapPrefix, chainID) -} - -// AllowlistCapKey returns the key to a validator's slash log -func AllowlistCapKey(chainID string, providerAddr ProviderConsAddress) []byte { - return append(ChainIdWithLenKey(AllowlistPrefix, chainID), providerAddr.ToSdkConsAddr().Bytes()...) -} - -// DenylistCapKey returns the key to a validator's slash log -func DenylistCapKey(chainID string, providerAddr ProviderConsAddress) []byte { - return append(ChainIdWithLenKey(DenylistPrefix, chainID), providerAddr.ToSdkConsAddr().Bytes()...) -} - -// OptedInKey returns the key used to store whether a validator is opted in on a consumer chain. -func OptedInKey(chainID string, providerAddr ProviderConsAddress) []byte { - prefix := ChainIdWithLenKey(OptedInBytePrefix, chainID) - return append(prefix, providerAddr.ToSdkConsAddr().Bytes()...) -} - -// ConsumerRewardsAllocationKey returns the key used to store the ICS rewards per consumer chain -func ConsumerRewardsAllocationKey(chainID string) []byte { - return append([]byte{ConsumerRewardsAllocationBytePrefix}, []byte(chainID)...) -} - -// ConsumerCommissionRateKey returns the key used to store the commission rate per validator per consumer chain. -func ConsumerCommissionRateKey(chainID string, providerAddr ProviderConsAddress) []byte { - return ChainIdAndConsAddrKey( - ConsumerCommissionRatePrefix, - chainID, - providerAddr.ToSdkConsAddr(), - ) -} - -func MinimumPowerInTopNKey(chainID string) []byte { - return ChainIdWithLenKey(MinimumPowerInTopNBytePrefix, chainID) -} - // // End of generic helpers section // diff --git a/x/ccv/provider/types/keys_test.go b/x/ccv/provider/types/keys_test.go index 3f6df5cb0a..fd37ad654f 100644 --- a/x/ccv/provider/types/keys_test.go +++ b/x/ccv/provider/types/keys_test.go @@ -1,6 +1,7 @@ package types_test import ( + "strings" "testing" "time" @@ -14,7 +15,7 @@ import ( // Tests that all singular keys, or prefixes to fully resolves keys are non duplicate byte values. func TestNoDuplicates(t *testing.T) { - prefixes := getAllKeyPrefixes() + prefixes := providertypes.GetAllKeyPrefixes() seen := []byte{} for _, prefix := range prefixes { @@ -23,51 +24,111 @@ func TestNoDuplicates(t *testing.T) { } } -// Returns all key prefixes to fully resolved keys, any of which should be a single, unique byte. -func getAllKeyPrefixes() []byte { - return []byte{ - providertypes.PortByteKey, - providertypes.MaturedUnbondingOpsByteKey, - providertypes.ValidatorSetUpdateIdByteKey, - providertypes.SlashMeterByteKey, - providertypes.SlashMeterReplenishTimeCandidateByteKey, - providertypes.ChainToChannelBytePrefix, - providertypes.ChannelToChainBytePrefix, - providertypes.ChainToClientBytePrefix, - providertypes.InitTimeoutTimestampBytePrefix, - providertypes.PendingCAPBytePrefix, - providertypes.PendingCRPBytePrefix, - providertypes.UnbondingOpBytePrefix, - providertypes.UnbondingOpIndexBytePrefix, - providertypes.ValsetUpdateBlockHeightBytePrefix, - providertypes.ConsumerGenesisBytePrefix, - providertypes.SlashAcksBytePrefix, - providertypes.InitChainHeightBytePrefix, - providertypes.PendingVSCsBytePrefix, - providertypes.VscSendTimestampBytePrefix, - providertypes.ThrottledPacketDataSizeBytePrefix, - providertypes.ThrottledPacketDataBytePrefix, - providertypes.GlobalSlashEntryBytePrefix, - providertypes.ConsumerValidatorsBytePrefix, - providertypes.ValidatorsByConsumerAddrBytePrefix, - providertypes.KeyAssignmentReplacementsBytePrefix, - providertypes.ConsumerAddrsToPruneBytePrefix, - providertypes.SlashLogBytePrefix, - providertypes.VSCMaturedHandledThisBlockBytePrefix, - providertypes.EquivocationEvidenceMinHeightBytePrefix, - providertypes.ProposedConsumerChainByteKey, - providertypes.ConsumerValidatorBytePrefix, - providertypes.OptedInBytePrefix, - providertypes.TopNBytePrefix, - providertypes.ConsumerRewardsAllocationBytePrefix, - providertypes.ConsumerCommissionRatePrefix, - providertypes.MinimumPowerInTopNBytePrefix, - providertypes.ParametersByteKey, - } +// Test that the value of all byte prefixes is preserved +func TestPreserveBytePrefix(t *testing.T) { + i := 0 + require.Equal(t, uint8(0xFF), providertypes.ParametersKey()[0]) + i++ + require.Equal(t, uint8(0), providertypes.PortKey()[0]) + i++ + require.Equal(t, uint8(1), providertypes.MaturedUnbondingOpsKey()[0]) + i++ + require.Equal(t, uint8(2), providertypes.ValidatorSetUpdateIdKey()[0]) + i++ + require.Equal(t, uint8(3), providertypes.SlashMeterKey()[0]) + i++ + require.Equal(t, uint8(4), providertypes.SlashMeterReplenishTimeCandidateKey()[0]) + i++ + require.Equal(t, uint8(5), providertypes.ChainToChannelKey("chainID")[0]) + i++ + require.Equal(t, uint8(6), providertypes.ChannelToChainKeyPrefix()[0]) + i++ + require.Equal(t, uint8(7), providertypes.ChainToClientKeyPrefix()[0]) + i++ + require.Equal(t, uint8(8), providertypes.InitTimeoutTimestampKeyPrefix()[0]) + i++ + require.Equal(t, uint8(9), providertypes.PendingCAPKeyPrefix()[0]) + i++ + require.Equal(t, uint8(10), providertypes.PendingCRPKeyPrefix()[0]) + i++ + require.Equal(t, uint8(11), providertypes.UnbondingOpKeyPrefix()[0]) + i++ + require.Equal(t, uint8(12), providertypes.UnbondingOpIndexKeyPrefix()) + i++ + require.Equal(t, uint8(13), providertypes.ValsetUpdateBlockHeightKeyPrefix()[0]) + i++ + require.Equal(t, uint8(14), providertypes.ConsumerGenesisKey("chainID")[0]) + i++ + require.Equal(t, uint8(15), providertypes.SlashAcksKey("chainID")[0]) + i++ + require.Equal(t, uint8(16), providertypes.InitChainHeightKey("chainID")[0]) + i++ + require.Equal(t, uint8(17), providertypes.PendingVSCsKey("chainID")[0]) + i++ + require.Equal(t, uint8(18), providertypes.VscSendingTimestampKeyPrefix()) + i++ + require.Equal(t, uint8(19), providertypes.ThrottledPacketDataSizeKey("chainID")[0]) + i++ + require.Equal(t, uint8(20), providertypes.ThrottledPacketDataKeyPrefix()) + i++ + require.Equal(t, uint8(21), providertypes.GlobalSlashEntryKeyPrefix()[0]) + i++ + require.Equal(t, uint8(22), providertypes.ConsumerValidatorsKeyPrefix()) + i++ + require.Equal(t, uint8(23), providertypes.ValidatorsByConsumerAddrKeyPrefix()) + i++ + // reserve 24 as deprecated + i++ + require.Equal(t, uint8(25), providertypes.ConsumerAddrsToPruneKeyPrefix()) + i++ + require.Equal(t, uint8(26), providertypes.SlashLogKey(providertypes.NewProviderConsAddress([]byte{0x05}))[0]) + i++ + require.Equal(t, uint8(27), providertypes.ConsumerRewardDenomsKeyPrefix()[0]) + i++ + require.Equal(t, uint8(28), providertypes.VSCMaturedHandledThisBlockKey()[0]) + i++ + require.Equal(t, uint8(29), providertypes.EquivocationEvidenceMinHeightKey("chainID")[0]) + i++ + require.Equal(t, uint8(30), providertypes.ProposedConsumerChainKeyPrefix()[0]) + i++ + require.Equal(t, uint8(31), providertypes.ConsumerValidatorKeyPrefix()) + i++ + require.Equal(t, uint8(32), providertypes.OptedInKeyPrefix()) + i++ + require.Equal(t, uint8(33), providertypes.TopNKey("chainID")[0]) + i++ + require.Equal(t, uint8(34), providertypes.ValidatorsPowerCapKey("chainID")[0]) + i++ + require.Equal(t, uint8(35), providertypes.ValidatorSetCapKey("chainID")[0]) + i++ + require.Equal(t, uint8(36), providertypes.AllowlistKeyPrefix()) + i++ + require.Equal(t, uint8(37), providertypes.DenylistKeyPrefix()) + i++ + require.Equal(t, uint8(38), providertypes.ConsumerRewardsAllocationKey("chainID")[0]) + i++ + require.Equal(t, uint8(39), providertypes.ConsumerCommissionRateKeyPrefix()) + i++ + require.Equal(t, uint8(40), providertypes.MinimumPowerInTopNKey("chainID")[0]) + i++ + prefixes := providertypes.GetAllKeyPrefixes() + require.Equal(t, len(prefixes), i) } func TestNoPrefixOverlap(t *testing.T) { keys := getAllFullyDefinedKeys() + + // Make sure that we check all the fully defined keys. + // All non-deprecated keys should have such a function. + keyNames := providertypes.GetAllKeyNames() + nonDeprecatedKey := []string{} + for _, name := range keyNames { + if !strings.Contains(name, "Deprecated") { + nonDeprecatedKey = append(nonDeprecatedKey, name) + } + } + require.Equal(t, len(nonDeprecatedKey), len(keys)) + seenPrefixes := []byte{} for _, key := range keys { require.NotContains(t, seenPrefixes, key[0], "Duplicate key prefix: %v", key[0]) @@ -79,6 +140,7 @@ func TestNoPrefixOverlap(t *testing.T) { // Note we only care about checking prefixes here, so parameters into the key functions are arbitrary. func getAllFullyDefinedKeys() [][]byte { return [][]byte{ + providertypes.ParametersKey(), providertypes.PortKey(), providertypes.MaturedUnbondingOpsKey(), providertypes.ValidatorSetUpdateIdKey(), @@ -106,7 +168,19 @@ func getAllFullyDefinedKeys() [][]byte { providertypes.ConsumerAddrsToPruneKey("chainID", 88), providertypes.SlashLogKey(providertypes.NewProviderConsAddress([]byte{0x05})), providertypes.VSCMaturedHandledThisBlockKey(), + providertypes.ConsumerRewardDenomsKey("uatom"), providertypes.EquivocationEvidenceMinHeightKey("chainID"), + providertypes.ProposedConsumerChainKey(1), + providertypes.ConsumerValidatorKey("chainID", providertypes.NewProviderConsAddress([]byte{0x05}).Address.Bytes()), + providertypes.TopNKey("chainID"), + providertypes.ValidatorsPowerCapKey("chainID"), + providertypes.ValidatorSetCapKey("chainID"), + providertypes.AllowlistKey("chainID", providertypes.NewProviderConsAddress([]byte{0x05})), + providertypes.DenylistKey("chainID", providertypes.NewProviderConsAddress([]byte{0x05})), + providertypes.OptedInKey("chainID", providertypes.NewProviderConsAddress([]byte{0x05})), + providertypes.ConsumerRewardsAllocationKey("chainID"), + providertypes.ConsumerCommissionRateKey("chainID", providertypes.NewProviderConsAddress([]byte{0x05})), + providertypes.MinimumPowerInTopNKey("chainID"), } } @@ -262,17 +336,6 @@ func TestKeysWithPrefixAndId(t *testing.T) { providertypes.PendingVSCsKey, } - expectedBytePrefixes := []byte{ - providertypes.ChainToChannelBytePrefix, - providertypes.ChannelToChainBytePrefix, - providertypes.ChainToClientBytePrefix, - providertypes.InitTimeoutTimestampBytePrefix, - providertypes.ConsumerGenesisBytePrefix, - providertypes.SlashAcksBytePrefix, - providertypes.InitChainHeightBytePrefix, - providertypes.PendingVSCsBytePrefix, - } - tests := []struct { stringID string }{ @@ -282,9 +345,8 @@ func TestKeysWithPrefixAndId(t *testing.T) { } for _, test := range tests { - for funcIdx, function := range funcs { + for _, function := range funcs { key := function(test.stringID) - require.Equal(t, expectedBytePrefixes[funcIdx], key[0]) require.Equal(t, []byte(test.stringID), key[1:]) } } @@ -296,11 +358,6 @@ func TestKeysWithUint64Payload(t *testing.T) { providertypes.ValsetUpdateBlockHeightKey, } - expectedBytePrefixes := []byte{ - providertypes.UnbondingOpBytePrefix, - providertypes.ValsetUpdateBlockHeightBytePrefix, - } - tests := []struct { integer uint64 }{ @@ -311,9 +368,8 @@ func TestKeysWithUint64Payload(t *testing.T) { } for _, test := range tests { - for funcIdx, function := range funcs { + for _, function := range funcs { key := function(test.integer) - require.Equal(t, expectedBytePrefixes[funcIdx], key[0]) require.Equal(t, sdk.Uint64ToBigEndian(test.integer), key[1:]) } } @@ -331,8 +387,7 @@ func TestParseProposedConsumerChainKey(t *testing.T) { for _, test := range tests { key := providertypes.ProposedConsumerChainKey(test.proposalID) - pID, err := providertypes.ParseProposedConsumerChainKey( - providertypes.ProposedConsumerChainByteKey, key) + pID, err := providertypes.ParseProposedConsumerChainKey(key) require.NoError(t, err) require.Equal(t, pID, test.proposalID) } From f8662ac77cff24c2bbb905e3f47de692a15a5991 Mon Sep 17 00:00:00 2001 From: MSalopek Date: Wed, 24 Jul 2024 12:15:59 +0200 Subject: [PATCH 02/55] docs: update versions; update process docs (#2080) * docs: rm version.json; read version from supported_versions; bump process * update documentation README * Update docs/README.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update docs/README.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update docs/README.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update docs/README.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .gitignore | 1 + RELEASE_PROCESS.md | 56 +----------------------------------- docs/README.md | 24 ++++++++++++++++ docs/build_deploy.sh | 1 + docs/docusaurus.config.js | 15 ---------- docs/supported_versions.json | 4 +++ docs/sync_versions.sh | 2 +- docs/versions.json | 4 --- 8 files changed, 32 insertions(+), 75 deletions(-) create mode 100644 docs/supported_versions.json delete mode 100644 docs/versions.json diff --git a/.gitignore b/.gitignore index 96e3251977..e77a988583 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,6 @@ build/ .idea # docusaurus versioned docs created during build +docs/versions.json docs/versioned_docs docs/versioned_sidebars diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md index 1c26c8c5ff..9d07ac1eaa 100644 --- a/RELEASE_PROCESS.md +++ b/RELEASE_PROCESS.md @@ -109,18 +109,9 @@ Once the **final release** is cut, the new changelog section must be added to ma ## Updating published docs -### Before tagging a new release - -On your release branch, clear the `docs/versions.json` file so it looks like this: -```json -[] -``` - -If this file is populated on a release branch it will cause the tag to have extra files that the docs deploy process does not expect. This could cause the deploy process to fail in some situations. - ### After tagging a new release -Go to `main` branch and update the `docs/versions.json` to include all the versions you want to publish on the docs page: +Go to `main` branch and update the `docs/supported_versions.json` to include all the versions you want to publish on the docs page: ```json [ "v4.3.0", @@ -130,51 +121,6 @@ Go to `main` branch and update the `docs/versions.json` to include all the versi This will cause the docs to be built with `main`, `v4.3.0` and `v5.0.0`. -In `docs/docusaurus.config.js` change the `preset` section to display the versions you chose in `docs/versions.json`. - -For example, here we remove v4.2.0 and replace it with v4.3.0. - -```diff - presets: [ - [ - "classic", - /** @type {import('@docusaurus/preset-classic').Options} */ - ({ - docs: { - sidebarPath: require.resolve("./sidebars.js"), - routeBasePath: "/", - versions: { - current: { - path: "/", - label: "main", - banner: "unreleased", - }, - // v4.2.0-docs was a special tags for docs - // this is not usually necessary -- "v4.2.0-docs": { -- path: "/v4.2.0/", -- label: "v4.2.0", -- banner: "none", -- }, -+ "v4.3.0": { -+ banner: "none", -+ }, - "v5.0.0": { - banner: "unreleased", - }, - }, - remarkPlugins: [remarkMath], - rehypePlugins: [rehypeKatex], - }, - - theme: { - customCss: require.resolve("./src/css/custom.css"), - }, - }), - ], - ], -``` - The documentation is updated automatically whenever `main` is changed. To learn how to work with docs locally check the docs [README.md on main branch](https://github.com/cosmos/interchain-security/blob/main/docs/README.md) diff --git a/docs/README.md b/docs/README.md index 4c4146ca4b..956468bb4f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -24,6 +24,7 @@ $ npm run build This command generates static content into the `build` directory and can be served using any static contents hosting service. +This is not intended for local development but it is used during the deploy sequence. # Adding versions @@ -53,9 +54,12 @@ The script above will create `versioned_docs` and `versioned_sidebars` directori To view the docs run: ```shell +cp supported_versions.json versions.json # needed to show the version dropdown npm run start ``` +Remove `versions.json` after use to prevent interference with local documentation. + Remember to check back out to your working branch. Running `./sync_versions.sh` will leave you in a detached head state. (simply run `git checkout ) @@ -71,3 +75,23 @@ The script switches branches while building the versioned docs - **please note t The `./docs/legacy` directory on `legacy-docs-page` was created manually, by modifying `docusaurus.config.js` and `versions.json` on `https://github.com/cosmos/interchain-security/releases/v3.3.1-lsm` and generating the static pages manually using `npm run build`. The `./docs/legacy` directory gets included into the rest of the documentation using a simple `cp` command during the deploy process using the [build_deploy.sh](./build_deploy.sh) script. It is **not** included during local builds. + + +# Scripts and make commands + +`build_deploy.sh` script builds the documentation output directory for serving static HTML files. It should be executed on the remote server. + +`build_local.sh` will build the documentation locally by running `npm run build`. You can check the built web page by running `npm run serve` after the build command completes. + +`sync_versions.sh` will fetch and build all docs versions specified in `supported_versions.json`. It is intended to be executed on the remote server. + +`versions.json` must remain empty or be removed from your worktree. Avoid pushing it to GitHub. +* this file specifies which versions will be displayed in the supported versions drop down on the docs page +* instead of using it, the supported versions should live in `supported_versions.json` +* this file should only be populated during deployment and never on your local machine + +# Building on remote + +Building on remote host is handled by [deploy-docs.yml workflow](.github/workflows/deploy-docs.yml). + +It executes `./sync_versions.sh` and `./build_deploy.sh` scripts and allows the output of the build proces to be served by github pages. diff --git a/docs/build_deploy.sh b/docs/build_deploy.sh index ba262e43b2..a5cfb5676f 100755 --- a/docs/build_deploy.sh +++ b/docs/build_deploy.sh @@ -2,6 +2,7 @@ # build versioned docs prepared by sync_versions.sh 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 diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 17ff9aeb7b..7dcd1e5133 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -39,21 +39,6 @@ const config = { docs: { sidebarPath: require.resolve("./sidebars.js"), routeBasePath: "/", - versions: { - current: { - path: "/", - label: "main", - banner: "unreleased", - }, - "v4.2.0-docs": { - path: "/v4.2.0/", - label: "v4.2.0", - banner: "none", - }, - "v5.0.0": { - banner: "unreleased", - }, - }, remarkPlugins: [remarkMath], rehypePlugins: [rehypeKatex], exclude: ["**/templates/*"], diff --git a/docs/supported_versions.json b/docs/supported_versions.json new file mode 100644 index 0000000000..2609dbc8a1 --- /dev/null +++ b/docs/supported_versions.json @@ -0,0 +1,4 @@ +[ + "v5.1.0", + "v4.4.1" +] \ No newline at end of file diff --git a/docs/sync_versions.sh b/docs/sync_versions.sh index 977a69700c..f8fcb0cd23 100755 --- a/docs/sync_versions.sh +++ b/docs/sync_versions.sh @@ -7,7 +7,7 @@ if git diff-index --quiet HEAD --; then # initial branch COMMIT=$(git rev-parse HEAD) - for version in $(jq -r .[] versions.json); do + for version in $(jq -r .[] supported_versions.json); do echo "Building docusaurus $version docs ..." git checkout $version npm cache clean --force && npm install && npm run docusaurus docs:version $version diff --git a/docs/versions.json b/docs/versions.json deleted file mode 100644 index bba35efde5..0000000000 --- a/docs/versions.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "v4.2.0-docs", - "v5.0.0" -] \ No newline at end of file From 706fb44ed0db523a56d5bed3013ed366669fdbbd Mon Sep 17 00:00:00 2001 From: bernd-m <43466467+bermuell@users.noreply.github.com> Date: Wed, 24 Jul 2024 15:21:18 +0200 Subject: [PATCH 03/55] test: fix e2e tests broken in various ways (#2078) * Fix failing compatiblity tests * Improve identification of closest ICS version for a git reference * fix e2e tests * Fix e2e query command for rewards * Update tests/e2e/config.go Co-authored-by: Simon Noetzlin --------- Co-authored-by: Simon Noetzlin --- .gitignore | 1 + tests/e2e/actions.go | 24 ++++++++++++------------ tests/e2e/config.go | 13 +++++++++++-- tests/e2e/state.go | 7 ++++--- tests/e2e/steps_compatibility.go | 3 ++- tests/e2e/testlib/utils.go | 9 +-------- tests/e2e/v4/state.go | 2 +- 7 files changed, 32 insertions(+), 27 deletions(-) diff --git a/.gitignore b/.gitignore index e77a988583..d93ff09e5a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ vendor/ build/ .vscode .idea +__debug_* # docusaurus versioned docs created during build docs/versions.json diff --git a/tests/e2e/actions.go b/tests/e2e/actions.go index b7207d72c8..6c841a48ca 100644 --- a/tests/e2e/actions.go +++ b/tests/e2e/actions.go @@ -1000,10 +1000,10 @@ func (tr Chain) addChainToGorelayer( } addChainCommand := tr.target.ExecCommand("rly", "chains", "add", "--file", chainConfigFileName, string(ChainId)) - e2e.ExecuteCommand(addChainCommand, "add chain") + e2e.ExecuteCommand(addChainCommand, "add chain", verbose) keyRestoreCommand := tr.target.ExecCommand("rly", "keys", "restore", string(ChainId), "default", tr.testConfig.validatorConfigs[action.Validator].Mnemonic) - e2e.ExecuteCommand(keyRestoreCommand, "restore keys") + e2e.ExecuteCommand(keyRestoreCommand, "restore keys", verbose) } func (tr Chain) addChainToHermes( @@ -1109,7 +1109,7 @@ func (tr Chain) addIbcConnectionGorelayer( //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. pathConfigCommand := tr.target.ExecCommand("bash", "-c", bashCommand) - e2e.ExecuteCommand(pathConfigCommand, "add path config") + e2e.ExecuteCommand(pathConfigCommand, "add path config", verbose) //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. newPathCommand := tr.target.ExecCommand("rly", @@ -1120,12 +1120,12 @@ func (tr Chain) addIbcConnectionGorelayer( "--file", pathConfigFileName, ) - e2e.ExecuteCommand(newPathCommand, "new path") + e2e.ExecuteCommand(newPathCommand, "new path", verbose) //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. newClientsCommand := tr.target.ExecCommand("rly", "transact", "clients", pathName) - e2e.ExecuteCommand(newClientsCommand, "new clients") + e2e.ExecuteCommand(newClientsCommand, "new clients", verbose) tr.waitBlocks(action.ChainA, 1, 10*time.Second) tr.waitBlocks(action.ChainB, 1, 10*time.Second) @@ -1133,7 +1133,7 @@ func (tr Chain) addIbcConnectionGorelayer( //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. newConnectionCommand := tr.target.ExecCommand("rly", "transact", "connection", pathName) - e2e.ExecuteCommand(newConnectionCommand, "new connection") + e2e.ExecuteCommand(newConnectionCommand, "new connection", verbose) tr.waitBlocks(action.ChainA, 1, 10*time.Second) tr.waitBlocks(action.ChainB, 1, 10*time.Second) @@ -1300,7 +1300,7 @@ func (tr Chain) addIbcChannelGorelayer( "--order", action.Order, "--debug", ) - e2e.ExecuteCommand(cmd, "addChannel") + e2e.ExecuteCommand(cmd, "addChannel", verbose) } func (tr Chain) addIbcChannelHermes( @@ -1373,8 +1373,7 @@ func (tr Chain) transferChannelComplete( log.Fatal("transferChannelComplete is not implemented for rly") } - chanOpenTryCmd := tr.target.ExecCommand("hermes", - "tx", "chan-open-try", + chanOpenTryCmd := tr.target.ExecCommand("hermes", "tx", "chan-open-try", "--dst-chain", string(tr.testConfig.chainConfigs[action.ChainB].ChainId), "--src-chain", string(tr.testConfig.chainConfigs[action.ChainA].ChainId), "--dst-connection", "connection-"+fmt.Sprint(action.ConnectionA), @@ -1382,7 +1381,8 @@ func (tr Chain) transferChannelComplete( "--src-port", action.PortA, "--src-channel", "channel-"+fmt.Sprint(action.ChannelA), ) - e2e.ExecuteCommand(chanOpenTryCmd, "transferChanOpenTry") + + e2e.ExecuteCommand(chanOpenTryCmd, "transferChanOpenTry", verbose) chanOpenAckCmd := tr.target.ExecCommand("hermes", "tx", "chan-open-ack", @@ -1395,7 +1395,7 @@ func (tr Chain) transferChannelComplete( "--src-channel", "channel-"+fmt.Sprint(action.ChannelB), ) - e2e.ExecuteCommand(chanOpenAckCmd, "transferChanOpenAck") + e2e.ExecuteCommand(chanOpenAckCmd, "transferChanOpenAck", verbose) chanOpenConfirmCmd := tr.target.ExecCommand("hermes", "tx", "chan-open-confirm", @@ -1407,7 +1407,7 @@ func (tr Chain) transferChannelComplete( "--dst-channel", "channel-"+fmt.Sprint(action.ChannelB), "--src-channel", "channel-"+fmt.Sprint(action.ChannelA), ) - e2e.ExecuteCommand(chanOpenConfirmCmd, "transferChanOpenConfirm") + e2e.ExecuteCommand(chanOpenConfirmCmd, "transferChanOpenConfirm", verbose) } type RelayPacketsAction struct { diff --git a/tests/e2e/config.go b/tests/e2e/config.go index 40a1cfc4c5..d622042fbc 100644 --- a/tests/e2e/config.go +++ b/tests/e2e/config.go @@ -128,15 +128,24 @@ func (tr *TestConfig) Initialize() { // Note: if no matching version is found an empty string is returned func getIcsVersion(reference string) string { icsVersion := "" - if reference == "" { + + if reference == "" || reference == VLatest { return icsVersion } + if semver.IsValid(reference) { // remove build suffix return semver.Canonical(reference) } - for _, tag := range []string{"v2.0.0", "v2.4.0", "v2.4.0-lsm", "v3.1.0", "v3.2.0", "v3.3.0", "v4.0.0", "v4.1.1", "v4.1.1-lsm"} { + // List of all tags matching vX.Y.Z or vX.Y.Z-lsm in ascending order + cmd := exec.Command("git", "tag", "-l", "--sort", "v:refname", "v*.?", "v*.?-lsm", "v*.??", "v*.??-lsm") + out, err := cmd.CombinedOutput() + if err != nil { + panic(fmt.Sprintf("Error getting sorted tag list from git: %s", err.Error())) + } + icsVersions := strings.Split(string(out), "\n") + for _, tag := range icsVersions { //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments cmd := exec.Command("git", "merge-base", "--is-ancestor", reference, tag) out, err := cmd.CombinedOutput() diff --git a/tests/e2e/state.go b/tests/e2e/state.go index b9618a3964..118f0019e1 100644 --- a/tests/e2e/state.go +++ b/tests/e2e/state.go @@ -295,7 +295,7 @@ func (tr Chain) curlJsonRPCRequest(method, params, address string) { cmd := tr.target.ExecCommand("bash", "-c", fmt.Sprintf(cmd_template, method, params, address)) verbosity := false - e2e.ExecuteCommandWithVerbosity(cmd, "curlJsonRPCRequest", verbosity) + e2e.ExecuteCommand(cmd, "curlJsonRPCRequest", verbosity) } func uintPtr(i uint) *uint { @@ -357,8 +357,8 @@ func (tr Commands) GetReward(chain ChainID, validator ValidatorID, blockHeight u binaryName := tr.chainConfigs[chain].BinaryName cmd := tr.target.ExecCommand(binaryName, - "query", "distribution", "delegation-total-rewards", - "--delegator-address", delAddresss, + "query", "distribution", "rewards", + delAddresss, `--height`, fmt.Sprint(blockHeight), `--node`, tr.GetQueryNode(chain), `-o`, `json`, @@ -367,6 +367,7 @@ func (tr Commands) GetReward(chain ChainID, validator ValidatorID, blockHeight u bz, err := cmd.CombinedOutput() if err != nil { + log.Println("running cmd: ", cmd) log.Fatal("failed getting rewards: ", err, "\n", string(bz)) } diff --git a/tests/e2e/steps_compatibility.go b/tests/e2e/steps_compatibility.go index dfcf14cd58..ab6e9dbc47 100644 --- a/tests/e2e/steps_compatibility.go +++ b/tests/e2e/steps_compatibility.go @@ -8,6 +8,7 @@ import ( gov "github.com/cosmos/cosmos-sdk/x/gov/types/v1" clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + providertypes "github.com/cosmos/interchain-security/v5/x/ccv/provider/types" ) func compstepStartProviderChain() []Step { @@ -98,7 +99,7 @@ func compstepsStartConsumerChain(consumerName string, proposalIndex, chainIndex ConsumerPubkey: getDefaultValidators()[ValidatorID("carol")].ConsumerValPubKey, ReconfigureNode: false, ExpectError: true, - ExpectedError: "a validator has assigned the consumer key already: consumer key is already in use by a validator", + ExpectedError: providertypes.ErrConsumerKeyInUse.Error(), }, State: State{ ChainID(consumerName): ChainState{ diff --git a/tests/e2e/testlib/utils.go b/tests/e2e/testlib/utils.go index 8b68c25947..08f410269f 100644 --- a/tests/e2e/testlib/utils.go +++ b/tests/e2e/testlib/utils.go @@ -7,9 +7,7 @@ import ( "os/exec" ) -var verbose *bool //TODO: remove hack - -func ExecuteCommandWithVerbosity(cmd *exec.Cmd, cmdName string, verbose bool) { +func ExecuteCommand(cmd *exec.Cmd, cmdName string, verbose bool) { if verbose { fmt.Println(cmdName+" cmd:", cmd.String()) } @@ -36,8 +34,3 @@ func ExecuteCommandWithVerbosity(cmd *exec.Cmd, cmdName string, verbose bool) { log.Fatal(err) } } - -// Executes a command with verbosity specified by CLI flag -func ExecuteCommand(cmd *exec.Cmd, cmdName string) { - ExecuteCommandWithVerbosity(cmd, cmdName, *verbose) -} diff --git a/tests/e2e/v4/state.go b/tests/e2e/v4/state.go index 70ca8afe7c..5bf9066a1e 100644 --- a/tests/e2e/v4/state.go +++ b/tests/e2e/v4/state.go @@ -538,7 +538,7 @@ func (tr Commands) curlJsonRPCRequest(method, params, address string) { cmd := tr.Target.ExecCommand("bash", "-c", fmt.Sprintf(cmd_template, method, params, address)) verbosity := false - e2e.ExecuteCommandWithVerbosity(cmd, "curlJsonRPCRequest", verbosity) + e2e.ExecuteCommand(cmd, "curlJsonRPCRequest", verbosity) } // GetClientFrozenHeight returns the frozen height for a client with the given client ID From 67b0b081a7be814c571ea80d8c196f48c8311a4a Mon Sep 17 00:00:00 2001 From: MSalopek Date: Wed, 24 Jul 2024 16:00:30 +0200 Subject: [PATCH 04/55] chore: update gosec rules and resolve errs (#2090) --- .github/workflows/gosec.yml | 2 +- x/ccv/consumer/module.go | 5 +++- x/ccv/democracy/distribution/module.go | 4 +-- x/ccv/democracy/governance/module.go | 36 ++++++++++++++++++++++---- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/.github/workflows/gosec.yml b/.github/workflows/gosec.yml index 90f1379eb1..6e23df8031 100644 --- a/.github/workflows/gosec.yml +++ b/.github/workflows/gosec.yml @@ -28,4 +28,4 @@ jobs: - name: Run Gosec Security Scanner uses: securego/gosec@master with: - args: -exclude-dir=tests ./... -exclude-generated ./... + args: -exclude-dir=tests -exclude-dir=app -exclude-generated ./... diff --git a/x/ccv/consumer/module.go b/x/ccv/consumer/module.go index a175f2e450..a162653abd 100644 --- a/x/ccv/consumer/module.go +++ b/x/ccv/consumer/module.go @@ -172,7 +172,10 @@ func (am AppModule) BeginBlock(goCtx context.Context) error { am.keeper.SetHeightValsetUpdateID(ctx, blockHeight+1, vID) am.keeper.Logger(ctx).Debug("block height was mapped to vscID", "height", blockHeight+1, "vscID", vID) - am.keeper.TrackHistoricalInfo(ctx) + err := am.keeper.TrackHistoricalInfo(ctx) + if err != nil { + am.keeper.Logger(ctx).Warn("failed to track historical info", "error", err) + } return nil } diff --git a/x/ccv/democracy/distribution/module.go b/x/ccv/democracy/distribution/module.go index 310e542b6a..95d1cef6cd 100644 --- a/x/ccv/democracy/distribution/module.go +++ b/x/ccv/democracy/distribution/module.go @@ -127,12 +127,12 @@ func (am AppModule) AllocateTokens( representativesFraction := math.LegacyOneDec().Sub(communityTax) // allocate tokens proportionally to representatives voting power - vs.IterateBondedValidatorsByPower(ctx, func(_ int64, validator stakingtypes.ValidatorI) bool { + _ = vs.IterateBondedValidatorsByPower(ctx, func(_ int64, validator stakingtypes.ValidatorI) bool { // we get this validator's percentage of the total power by dividing their tokens by the total bonded tokens powerFraction := math.LegacyNewDecFromInt(validator.GetTokens()).QuoTruncate(math.LegacyNewDecFromInt(totalBondedTokens)) // we truncate here again, which means that the reward will be slightly lower than it should be reward := feesCollected.MulDecTruncate(representativesFraction).MulDecTruncate(powerFraction) - am.keeper.AllocateTokensToValidator(ctx, validator, reward) + _ = am.keeper.AllocateTokensToValidator(ctx, validator, reward) remaining = remaining.Sub(reward) return false diff --git a/x/ccv/democracy/governance/module.go b/x/ccv/democracy/governance/module.go index c4bf930066..3ccc00c024 100644 --- a/x/ccv/democracy/governance/module.go +++ b/x/ccv/democracy/governance/module.go @@ -113,14 +113,41 @@ func deleteForbiddenProposal(ctx sdk.Context, am AppModule, proposal govv1.Propo return } + logger := am.keeper.Logger(ctx) + // delete the votes related to the proposal calling Tally // Tally's return result won't be used in decision if the tokens will be burned or refunded (they are always refunded), but // this function needs to be called to delete the votes related to the given proposal, since the deleteVote function is // private and cannot be called directly from the overridden app module - am.keeper.Tally(ctx, proposal) + _, _, _, err := am.keeper.Tally(ctx, proposal) + if err != nil { + logger.Warn( + "failed to tally disallowed proposal", + "proposal", proposal.Id, + "title", proposal.GetTitle(), + "total_deposit", proposal.TotalDeposit) + return + } - am.keeper.DeleteProposal(ctx, proposal.Id) - am.keeper.RefundAndDeleteDeposits(ctx, proposal.Id) + err = am.keeper.DeleteProposal(ctx, proposal.Id) + if err != nil { + logger.Warn( + "failed to delete disallowed proposal", + "proposal", proposal.Id, + "title", proposal.GetTitle(), + "total_deposit", proposal.TotalDeposit) + return + } + + err = am.keeper.RefundAndDeleteDeposits(ctx, proposal.Id) + if err != nil { + logger.Warn( + "failed to refund deposits for disallowed proposal", + "proposal", proposal.Id, + "title", proposal.GetTitle(), + "total_deposit", proposal.TotalDeposit) + return + } ctx.EventManager().EmitEvent( sdk.NewEvent( @@ -130,9 +157,8 @@ func deleteForbiddenProposal(ctx sdk.Context, am AppModule, proposal govv1.Propo ), ) - logger := am.keeper.Logger(ctx) logger.Info( - "proposal is not whitelisted; deleted", + "proposal is not allowed; deleted", "proposal", proposal.Id, "title", proposal.GetTitle(), "total_deposit", proposal.TotalDeposit) From 5f9af23b05894365de83d1f72465446376ee5921 Mon Sep 17 00:00:00 2001 From: Cosmos SDK <113218068+github-prbot@users.noreply.github.com> Date: Wed, 24 Jul 2024 16:38:46 +0200 Subject: [PATCH 05/55] chore: fix spelling errors (#2091) chore: spelling errors fixes Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 956468bb4f..2598b1d9ff 100644 --- a/docs/README.md +++ b/docs/README.md @@ -94,4 +94,4 @@ The `./docs/legacy` directory gets included into the rest of the documentation u Building on remote host is handled by [deploy-docs.yml workflow](.github/workflows/deploy-docs.yml). -It executes `./sync_versions.sh` and `./build_deploy.sh` scripts and allows the output of the build proces to be served by github pages. +It executes `./sync_versions.sh` and `./build_deploy.sh` scripts and allows the output of the build process to be served by github pages. From 7b419f1c8322638f85ed960f0dbe065538e938ae Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Thu, 25 Jul 2024 16:56:19 +0200 Subject: [PATCH 06/55] docs: add v5.1.0 to changelog (#2096) add v5.1.0 changelogs --- .../1995-deprecate-soft-opt-out.md | 2 + .../1998-change-ux-in-key-assignment.md | 0 .../dependencies/2013-bump-comet.md | 0 .../dependencies/2053-bump-ibc.md | 0 .../dependencies/2053-bump-sdk.md | 0 .../features/1995-deprecate-soft-opt-out.md | 2 + .../1995-deprecate-soft-opt-out.md | 2 + .../state-breaking/2013-bump-comet.md | 0 .../state-breaking/2053-bump-ibc.md | 0 .../state-breaking/2053-bump-sdk.md | 0 .../1998-change-ux-in-key-assignment.md | 0 .changelog/v5.1.0/summary.md | 1 + CHANGELOG.md | 50 +++++++++++++++++++ 13 files changed, 57 insertions(+) create mode 100644 .changelog/v5.1.0/api-breaking/1995-deprecate-soft-opt-out.md rename .changelog/{unreleased => v5.1.0}/api-breaking/provider/1998-change-ux-in-key-assignment.md (100%) rename .changelog/{unreleased => v5.1.0}/dependencies/2013-bump-comet.md (100%) rename .changelog/{unreleased => v5.1.0}/dependencies/2053-bump-ibc.md (100%) rename .changelog/{unreleased => v5.1.0}/dependencies/2053-bump-sdk.md (100%) create mode 100644 .changelog/v5.1.0/features/1995-deprecate-soft-opt-out.md create mode 100644 .changelog/v5.1.0/state-breaking/1995-deprecate-soft-opt-out.md rename .changelog/{unreleased => v5.1.0}/state-breaking/2013-bump-comet.md (100%) rename .changelog/{unreleased => v5.1.0}/state-breaking/2053-bump-ibc.md (100%) rename .changelog/{unreleased => v5.1.0}/state-breaking/2053-bump-sdk.md (100%) rename .changelog/{unreleased => v5.1.0}/state-breaking/provider/1998-change-ux-in-key-assignment.md (100%) create mode 100644 .changelog/v5.1.0/summary.md diff --git a/.changelog/v5.1.0/api-breaking/1995-deprecate-soft-opt-out.md b/.changelog/v5.1.0/api-breaking/1995-deprecate-soft-opt-out.md new file mode 100644 index 0000000000..bf47d6e7e4 --- /dev/null +++ b/.changelog/v5.1.0/api-breaking/1995-deprecate-soft-opt-out.md @@ -0,0 +1,2 @@ +- Remove soft opt-out feature. ([\#1995](https://github.com/cosmos/interchain-security/pull/1995)) +Backporting of ([\#1964](https://github.com/cosmos/interchain-security/pull/1964)). \ No newline at end of file diff --git a/.changelog/unreleased/api-breaking/provider/1998-change-ux-in-key-assignment.md b/.changelog/v5.1.0/api-breaking/provider/1998-change-ux-in-key-assignment.md similarity index 100% rename from .changelog/unreleased/api-breaking/provider/1998-change-ux-in-key-assignment.md rename to .changelog/v5.1.0/api-breaking/provider/1998-change-ux-in-key-assignment.md diff --git a/.changelog/unreleased/dependencies/2013-bump-comet.md b/.changelog/v5.1.0/dependencies/2013-bump-comet.md similarity index 100% rename from .changelog/unreleased/dependencies/2013-bump-comet.md rename to .changelog/v5.1.0/dependencies/2013-bump-comet.md diff --git a/.changelog/unreleased/dependencies/2053-bump-ibc.md b/.changelog/v5.1.0/dependencies/2053-bump-ibc.md similarity index 100% rename from .changelog/unreleased/dependencies/2053-bump-ibc.md rename to .changelog/v5.1.0/dependencies/2053-bump-ibc.md diff --git a/.changelog/unreleased/dependencies/2053-bump-sdk.md b/.changelog/v5.1.0/dependencies/2053-bump-sdk.md similarity index 100% rename from .changelog/unreleased/dependencies/2053-bump-sdk.md rename to .changelog/v5.1.0/dependencies/2053-bump-sdk.md diff --git a/.changelog/v5.1.0/features/1995-deprecate-soft-opt-out.md b/.changelog/v5.1.0/features/1995-deprecate-soft-opt-out.md new file mode 100644 index 0000000000..6b447d3ed6 --- /dev/null +++ b/.changelog/v5.1.0/features/1995-deprecate-soft-opt-out.md @@ -0,0 +1,2 @@ +- Remove soft opt-out feature. ([\#1995](https://github.com/cosmos/interchain-security/pull/1995)) + Backporting of ([\#1964](https://github.com/cosmos/interchain-security/pull/1964)). \ No newline at end of file diff --git a/.changelog/v5.1.0/state-breaking/1995-deprecate-soft-opt-out.md b/.changelog/v5.1.0/state-breaking/1995-deprecate-soft-opt-out.md new file mode 100644 index 0000000000..6b447d3ed6 --- /dev/null +++ b/.changelog/v5.1.0/state-breaking/1995-deprecate-soft-opt-out.md @@ -0,0 +1,2 @@ +- Remove soft opt-out feature. ([\#1995](https://github.com/cosmos/interchain-security/pull/1995)) + Backporting of ([\#1964](https://github.com/cosmos/interchain-security/pull/1964)). \ No newline at end of file diff --git a/.changelog/unreleased/state-breaking/2013-bump-comet.md b/.changelog/v5.1.0/state-breaking/2013-bump-comet.md similarity index 100% rename from .changelog/unreleased/state-breaking/2013-bump-comet.md rename to .changelog/v5.1.0/state-breaking/2013-bump-comet.md diff --git a/.changelog/unreleased/state-breaking/2053-bump-ibc.md b/.changelog/v5.1.0/state-breaking/2053-bump-ibc.md similarity index 100% rename from .changelog/unreleased/state-breaking/2053-bump-ibc.md rename to .changelog/v5.1.0/state-breaking/2053-bump-ibc.md diff --git a/.changelog/unreleased/state-breaking/2053-bump-sdk.md b/.changelog/v5.1.0/state-breaking/2053-bump-sdk.md similarity index 100% rename from .changelog/unreleased/state-breaking/2053-bump-sdk.md rename to .changelog/v5.1.0/state-breaking/2053-bump-sdk.md diff --git a/.changelog/unreleased/state-breaking/provider/1998-change-ux-in-key-assignment.md b/.changelog/v5.1.0/state-breaking/provider/1998-change-ux-in-key-assignment.md similarity index 100% rename from .changelog/unreleased/state-breaking/provider/1998-change-ux-in-key-assignment.md rename to .changelog/v5.1.0/state-breaking/provider/1998-change-ux-in-key-assignment.md diff --git a/.changelog/v5.1.0/summary.md b/.changelog/v5.1.0/summary.md new file mode 100644 index 0000000000..aea175d241 --- /dev/null +++ b/.changelog/v5.1.0/summary.md @@ -0,0 +1 @@ +*July 19, 2024* diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cc3e8a931..a73bbdbcbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,55 @@ # CHANGELOG +## v5.1.0 + +*July 19, 2024* + +### API BREAKING + +- General + - Remove soft opt-out feature. ([\#1995](https://github.com/cosmos/interchain-security/pull/1995)) + Backporting of ([\#1964](https://github.com/cosmos/interchain-security/pull/1964)). +- [Provider](x/ccv/provider) + - Change the UX in key assignment by returning an error if a validator tries to + reuse the same consumer key. + ([\#1998](https://github.com/cosmos/interchain-security/pull/1998)) + +### DEPENDENCIES + +- Bump [CometBFT](https://github.com/cometbft/cometbft) to + [v0.38.9](https://github.com/cometbft/cometbft/releases/tag/v0.38.9). + ([\#2013](https://github.com/cosmos/interchain-security/pull/2013)) +- Bump [ibc-go](https://github.com/cosmos/ibc-go) to + [v8.3.2](https://github.com/cosmos/ibc-go/releases/tag/v8.3.2). + ([\#2053](https://github.com/cosmos/interchain-security/pull/2053)) +- Bump [cosmos-sdk](https://github.com/cosmos/cosmos-sdk) to +[v0.50.8](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.8) +([\#2053](https://github.com/cosmos/interchain-security/pull/2053)) + +### FEATURES + +- Remove soft opt-out feature. ([\#1995](https://github.com/cosmos/interchain-security/pull/1995)) + Backporting of ([\#1964](https://github.com/cosmos/interchain-security/pull/1964)). + +### STATE BREAKING + +- General + - Remove soft opt-out feature. ([\#1995](https://github.com/cosmos/interchain-security/pull/1995)) + Backporting of ([\#1964](https://github.com/cosmos/interchain-security/pull/1964)). + - Bump [CometBFT](https://github.com/cometbft/cometbft) to + [v0.38.9](https://github.com/cometbft/cometbft/releases/tag/v0.38.9). + ([\#2013](https://github.com/cosmos/interchain-security/pull/2013)) + - Bump [ibc-go](https://github.com/cosmos/ibc-go) to + [v8.3.2](https://github.com/cosmos/ibc-go/releases/tag/v8.3.2). + ([\#2053](https://github.com/cosmos/interchain-security/pull/2053)) + - Bump [cosmos-sdk](https://github.com/cosmos/cosmos-sdk) to + [v0.50.8](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.8) + ([\#2053](https://github.com/cosmos/interchain-security/pull/2053)) +- [Provider](x/ccv/provider) + - Change the UX in key assignment by returning an error if a validator tries to + reuse the same consumer key. + ([\#1998](https://github.com/cosmos/interchain-security/pull/1998)) + ## v5.0.0 *May 9, 2024* From aedc0c8c503177d7eb0492a6db66de29a8e3f1b9 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Thu, 25 Jul 2024 18:32:24 +0200 Subject: [PATCH 07/55] fix: add missing signers in proto message (#2095) * add missing signers in msgs * add changelog entries * nit --- .../provider/2095-proto-message-fix.md | 2 + .../provider/2095-proto-message-fix.md | 2 + .../ccv/provider/v1/tx.proto | 6 + x/ccv/provider/types/tx.pb.go | 261 ++++++++++-------- 4 files changed, 163 insertions(+), 108 deletions(-) create mode 100644 .changelog/unreleased/api-breaking/provider/2095-proto-message-fix.md create mode 100644 .changelog/unreleased/state-breaking/provider/2095-proto-message-fix.md diff --git a/.changelog/unreleased/api-breaking/provider/2095-proto-message-fix.md b/.changelog/unreleased/api-breaking/provider/2095-proto-message-fix.md new file mode 100644 index 0000000000..bb41e17a3c --- /dev/null +++ b/.changelog/unreleased/api-breaking/provider/2095-proto-message-fix.md @@ -0,0 +1,2 @@ +- Fix incorrect message defitions in the proto files of the provider module + ([\#2095](https://github.com/cosmos/interchain-security/pull/2095)) \ No newline at end of file diff --git a/.changelog/unreleased/state-breaking/provider/2095-proto-message-fix.md b/.changelog/unreleased/state-breaking/provider/2095-proto-message-fix.md new file mode 100644 index 0000000000..bb41e17a3c --- /dev/null +++ b/.changelog/unreleased/state-breaking/provider/2095-proto-message-fix.md @@ -0,0 +1,2 @@ +- Fix incorrect message defitions in the proto files of the provider module + ([\#2095](https://github.com/cosmos/interchain-security/pull/2095)) \ No newline at end of file diff --git a/proto/interchain_security/ccv/provider/v1/tx.proto b/proto/interchain_security/ccv/provider/v1/tx.proto index 91d7e517a3..7a87c56397 100644 --- a/proto/interchain_security/ccv/provider/v1/tx.proto +++ b/proto/interchain_security/ccv/provider/v1/tx.proto @@ -270,6 +270,8 @@ message MsgOptOutResponse {} 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\"" ]; // The chain id of the consumer chain to set a commission rate @@ -281,6 +283,8 @@ message MsgSetConsumerCommissionRate { (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; + // signer address + string signer = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; } @@ -292,6 +296,8 @@ message MsgSetConsumerCommissionRateResponse {} // // Note: this replaces ConsumerModificationProposal which is deprecated and will be removed soon message MsgConsumerModification { + option (cosmos.msg.v1.signer) = "authority"; + // the title of the proposal string title = 1; // the description of the proposal diff --git a/x/ccv/provider/types/tx.pb.go b/x/ccv/provider/types/tx.pb.go index be71e8fa18..e2bf04424f 100644 --- a/x/ccv/provider/types/tx.pb.go +++ b/x/ccv/provider/types/tx.pb.go @@ -424,7 +424,7 @@ type MsgConsumerAddition struct { // channel is created on top of the same connection as the CCV channel. // Note that transfer_channel_id is the ID of the channel end on the consumer // chain. it is most relevant for chains performing a sovereign to consumer - // changeover in order to maintan the existing ibc transfer channel + // changeover in order to maintain the existing ibc transfer channel DistributionTransmissionChannel string `protobuf:"bytes,12,opt,name=distribution_transmission_channel,json=distributionTransmissionChannel,proto3" json:"distribution_transmission_channel,omitempty"` // 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 @@ -1027,6 +1027,8 @@ type MsgSetConsumerCommissionRate struct { // The rate to charge delegators on the consumer chain, as a fraction // TODO: migrate rate from sdk.Dec to math.LegacyDec Rate cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=rate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"rate"` + // signer address + Signer string `protobuf:"bytes,4,opt,name=signer,proto3" json:"signer,omitempty"` } func (m *MsgSetConsumerCommissionRate) Reset() { *m = MsgSetConsumerCommissionRate{} } @@ -1295,113 +1297,113 @@ func init() { } var fileDescriptor_43221a4391e9fbf4 = []byte{ - // 1687 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcf, 0x6f, 0xe4, 0x48, - 0x15, 0x8e, 0xf3, 0x6b, 0xba, 0xab, 0xf3, 0xd3, 0x93, 0x21, 0x1d, 0x6f, 0xb6, 0x3b, 0x69, 0x96, - 0xdd, 0x68, 0xd8, 0xd8, 0x9b, 0xc0, 0xee, 0x42, 0xb4, 0x08, 0x92, 0xf4, 0xc0, 0x64, 0x21, 0x93, - 0xe0, 0x09, 0x8b, 0x04, 0x12, 0x56, 0xb5, 0x5d, 0x71, 0x97, 0xc6, 0x76, 0x59, 0x55, 0xd5, 0x9d, - 0xed, 0x1b, 0xda, 0x13, 0x12, 0x02, 0x2d, 0x37, 0xc4, 0x69, 0x0f, 0x08, 0x09, 0x09, 0xa4, 0x39, - 0xec, 0x89, 0x1b, 0xe2, 0x32, 0x07, 0x0e, 0xcb, 0x8a, 0x03, 0xe2, 0x30, 0xa0, 0x99, 0xc3, 0x72, - 0xe6, 0x2f, 0x40, 0x55, 0x2e, 0xbb, 0xdd, 0x49, 0xa7, 0xa7, 0xbb, 0x03, 0x07, 0x2e, 0xad, 0x76, - 0xbd, 0xef, 0x7d, 0xf5, 0x7d, 0xcf, 0xae, 0x57, 0x65, 0x83, 0xd7, 0x71, 0xc4, 0x11, 0x75, 0x9b, - 0x10, 0x47, 0x0e, 0x43, 0x6e, 0x8b, 0x62, 0xde, 0xb1, 0x5c, 0xb7, 0x6d, 0xc5, 0x94, 0xb4, 0xb1, - 0x87, 0xa8, 0xd5, 0xde, 0xb1, 0xf8, 0xfb, 0x66, 0x4c, 0x09, 0x27, 0xfa, 0xe7, 0xfb, 0xa0, 0x4d, - 0xd7, 0x6d, 0x9b, 0x29, 0xda, 0x6c, 0xef, 0x18, 0xcb, 0x30, 0xc4, 0x11, 0xb1, 0xe4, 0x6f, 0x92, - 0x67, 0xac, 0xfb, 0x84, 0xf8, 0x01, 0xb2, 0x60, 0x8c, 0x2d, 0x18, 0x45, 0x84, 0x43, 0x8e, 0x49, - 0xc4, 0x54, 0xb4, 0xaa, 0xa2, 0xf2, 0xaa, 0xd1, 0x3a, 0xb7, 0x38, 0x0e, 0x11, 0xe3, 0x30, 0x8c, - 0x15, 0xa0, 0x72, 0x19, 0xe0, 0xb5, 0xa8, 0x64, 0x50, 0xf1, 0xb5, 0xcb, 0x71, 0x18, 0x75, 0x54, - 0x68, 0xc5, 0x27, 0x3e, 0x91, 0x7f, 0x2d, 0xf1, 0x2f, 0x4d, 0x70, 0x09, 0x0b, 0x09, 0x73, 0x92, - 0x40, 0x72, 0xa1, 0x42, 0xab, 0xc9, 0x95, 0x15, 0x32, 0x5f, 0x58, 0x0f, 0x99, 0x9f, 0xaa, 0xc4, - 0x0d, 0xd7, 0x72, 0x09, 0x45, 0x96, 0x1b, 0x60, 0x14, 0x71, 0x11, 0x4d, 0xfe, 0x29, 0xc0, 0xee, - 0x30, 0xa5, 0xcc, 0x0a, 0x95, 0xe4, 0x58, 0x82, 0x34, 0xc0, 0x7e, 0x93, 0x27, 0x54, 0xcc, 0xe2, - 0x28, 0xf2, 0x10, 0x0d, 0x71, 0x32, 0x41, 0xf7, 0x2a, 0x55, 0x91, 0x8b, 0xf3, 0x4e, 0x8c, 0x98, - 0x85, 0x04, 0x5f, 0xe4, 0xa2, 0x04, 0x50, 0xfb, 0xab, 0x06, 0x56, 0x8e, 0x99, 0xbf, 0xcf, 0x18, - 0xf6, 0xa3, 0x43, 0x12, 0xb1, 0x56, 0x88, 0xe8, 0xb7, 0x51, 0x47, 0x5f, 0x03, 0x85, 0x44, 0x1b, - 0xf6, 0xca, 0xda, 0x86, 0xb6, 0x55, 0xb4, 0x6f, 0xc9, 0xeb, 0x23, 0x4f, 0x7f, 0x1b, 0xcc, 0xa7, - 0xba, 0x1c, 0xe8, 0x79, 0xb4, 0x3c, 0x29, 0xe2, 0x07, 0xfa, 0xbf, 0x9f, 0x56, 0x17, 0x3a, 0x30, - 0x0c, 0xf6, 0x6a, 0x62, 0x14, 0x31, 0x56, 0xb3, 0xe7, 0x52, 0xe0, 0xbe, 0xe7, 0x51, 0x7d, 0x13, - 0xcc, 0xb9, 0x6a, 0x0a, 0xe7, 0x11, 0xea, 0x94, 0xa7, 0x24, 0x6f, 0xc9, 0xcd, 0x4d, 0xfb, 0x06, - 0x98, 0x15, 0x4a, 0x10, 0x2d, 0x4f, 0x4b, 0xd2, 0xf2, 0xa7, 0x1f, 0x6f, 0xaf, 0xa8, 0x8a, 0xef, - 0x27, 0xac, 0x0f, 0x39, 0xc5, 0x91, 0x6f, 0x2b, 0xdc, 0xde, 0xed, 0x9f, 0x7c, 0x54, 0x9d, 0xf8, - 0xd7, 0x47, 0xd5, 0x89, 0x0f, 0x3e, 0x7b, 0x7c, 0x57, 0x0d, 0xd6, 0x2a, 0x60, 0xbd, 0x9f, 0x2b, - 0x1b, 0xb1, 0x98, 0x44, 0x0c, 0xd5, 0xfe, 0xa8, 0x81, 0x97, 0x8f, 0x99, 0xff, 0xb0, 0xd5, 0x08, - 0x31, 0x4f, 0x01, 0xc7, 0x98, 0x35, 0x50, 0x13, 0xb6, 0x31, 0x69, 0x51, 0xfd, 0x2d, 0x50, 0x64, - 0x32, 0xca, 0x11, 0x4d, 0x0a, 0x30, 0x40, 0x4b, 0x17, 0xaa, 0x9f, 0x82, 0xb9, 0x30, 0xc7, 0x23, - 0x6b, 0x53, 0xda, 0x7d, 0xdd, 0xc4, 0x0d, 0xd7, 0xcc, 0xdf, 0x39, 0x33, 0x77, 0xaf, 0xda, 0x3b, - 0x66, 0x7e, 0x6e, 0xbb, 0x87, 0x61, 0xef, 0x73, 0x79, 0x83, 0xdd, 0x99, 0x6a, 0xaf, 0x81, 0x2f, - 0x0c, 0xb4, 0x90, 0x99, 0x7d, 0x3c, 0xd9, 0xc7, 0x6c, 0x9d, 0xb4, 0x1a, 0x01, 0x7a, 0x8f, 0x70, - 0x1c, 0xf9, 0x63, 0x9b, 0x75, 0xc0, 0xaa, 0xd7, 0x8a, 0x03, 0xec, 0x42, 0x8e, 0x9c, 0x36, 0xe1, - 0xc8, 0x49, 0x1f, 0x2f, 0xe5, 0xfb, 0xb5, 0xbc, 0x4d, 0xf9, 0x00, 0x9a, 0xf5, 0x34, 0xe1, 0x3d, - 0xc2, 0xd1, 0x3d, 0x05, 0xb7, 0xef, 0x78, 0xfd, 0x86, 0xf5, 0x1f, 0x81, 0x55, 0x1c, 0x9d, 0x53, - 0xe8, 0x8a, 0xe5, 0xeb, 0x34, 0x02, 0xe2, 0x3e, 0x72, 0x9a, 0x08, 0x7a, 0x88, 0xca, 0x87, 0xa7, - 0xb4, 0xfb, 0xea, 0x8b, 0x0a, 0x7b, 0x5f, 0xa2, 0xed, 0x3b, 0x5d, 0x9a, 0x03, 0xc1, 0x92, 0x0c, - 0x8f, 0x54, 0xdb, 0x7c, 0xc5, 0xb2, 0xda, 0xfe, 0x5a, 0x03, 0x8b, 0xc7, 0xcc, 0xff, 0x5e, 0xec, - 0x41, 0x8e, 0x4e, 0x21, 0x85, 0x21, 0x13, 0xd5, 0x84, 0x2d, 0xde, 0x24, 0x62, 0x45, 0xbf, 0xb8, - 0x9a, 0x19, 0x54, 0x3f, 0x02, 0xb3, 0xb1, 0x64, 0x50, 0xc5, 0xfb, 0xa2, 0x39, 0x44, 0xff, 0x34, - 0x93, 0x49, 0x0f, 0xa6, 0x9f, 0x3c, 0xad, 0x4e, 0xd8, 0x8a, 0x60, 0x6f, 0x41, 0xfa, 0xc9, 0xa8, - 0x6b, 0x6b, 0x60, 0xf5, 0x92, 0xca, 0xcc, 0xc1, 0xcf, 0x0a, 0xe0, 0xf6, 0x31, 0xf3, 0x53, 0x97, - 0xfb, 0x9e, 0x87, 0x45, 0x95, 0x06, 0x35, 0x80, 0x6f, 0x81, 0x05, 0x1c, 0x61, 0x8e, 0x61, 0xe0, - 0x34, 0x91, 0x28, 0xbd, 0x12, 0x6c, 0xc8, 0x9b, 0x21, 0x9a, 0x9e, 0xa9, 0x5a, 0x9d, 0xbc, 0x01, - 0x02, 0xa1, 0xf4, 0xcd, 0xab, 0xbc, 0x64, 0x50, 0x34, 0x04, 0x1f, 0x45, 0x88, 0x61, 0xe6, 0x34, - 0x21, 0x6b, 0xca, 0x7b, 0x3a, 0x67, 0x97, 0xd4, 0xd8, 0x7d, 0xc8, 0x9a, 0x7a, 0x15, 0x94, 0x1a, - 0x38, 0x82, 0xb4, 0x93, 0x20, 0xa6, 0x25, 0x02, 0x24, 0x43, 0x12, 0x70, 0x08, 0x00, 0x8b, 0xe1, - 0x45, 0xe4, 0x88, 0x6d, 0xa0, 0x3c, 0xa3, 0x84, 0x24, 0x2d, 0xde, 0x4c, 0x5b, 0xbc, 0x79, 0x96, - 0xee, 0x11, 0x07, 0x05, 0x21, 0xe4, 0xc3, 0x7f, 0x54, 0x35, 0xbb, 0x28, 0xf3, 0x44, 0x44, 0x7f, - 0x00, 0x96, 0x5a, 0x51, 0x83, 0x44, 0x1e, 0x8e, 0x7c, 0x27, 0x46, 0x14, 0x13, 0xaf, 0x3c, 0x2b, - 0xa9, 0xd6, 0xae, 0x50, 0xd5, 0xd5, 0x6e, 0x92, 0x30, 0xfd, 0x52, 0x30, 0x2d, 0x66, 0xc9, 0xa7, - 0x32, 0x57, 0xff, 0x2e, 0xd0, 0x5d, 0xb7, 0x2d, 0x25, 0x91, 0x16, 0x4f, 0x19, 0x6f, 0x0d, 0xcf, - 0xb8, 0xe4, 0xba, 0xed, 0xb3, 0x24, 0x5b, 0x51, 0xfe, 0x10, 0xac, 0x72, 0x0a, 0x23, 0x76, 0x8e, - 0xe8, 0x65, 0xde, 0xc2, 0xf0, 0xbc, 0x77, 0x52, 0x8e, 0x5e, 0xf2, 0xfb, 0x60, 0x23, 0xeb, 0xcc, - 0x14, 0x79, 0x98, 0x71, 0x8a, 0x1b, 0x2d, 0xb9, 0xe8, 0xd2, 0x65, 0x53, 0x2e, 0xca, 0x87, 0xa0, - 0x92, 0xe2, 0xec, 0x1e, 0xd8, 0x37, 0x15, 0x4a, 0x3f, 0x01, 0xaf, 0xc8, 0x65, 0xca, 0x84, 0x38, - 0xa7, 0x87, 0x49, 0x4e, 0x1d, 0x62, 0xc6, 0x04, 0x1b, 0xd8, 0xd0, 0xb6, 0xa6, 0xec, 0xcd, 0x04, - 0x7b, 0x8a, 0x68, 0x3d, 0x87, 0x3c, 0xcb, 0x01, 0xf5, 0x6d, 0xa0, 0x37, 0x31, 0xe3, 0x84, 0x62, - 0x17, 0x06, 0x0e, 0x8a, 0x38, 0xc5, 0x88, 0x95, 0x4b, 0x32, 0x7d, 0xb9, 0x1b, 0xb9, 0x97, 0x04, - 0xf4, 0x77, 0xc1, 0xe6, 0xb5, 0x93, 0x3a, 0x6e, 0x13, 0x46, 0x11, 0x0a, 0xca, 0x73, 0xd2, 0x4a, - 0xd5, 0xbb, 0x66, 0xce, 0xc3, 0x04, 0xa6, 0xdf, 0x06, 0x33, 0x9c, 0xc4, 0xce, 0x83, 0xf2, 0xfc, - 0x86, 0xb6, 0x35, 0x6f, 0x4f, 0x73, 0x12, 0x3f, 0xd0, 0xdf, 0x00, 0x2b, 0x6d, 0x18, 0x60, 0x0f, - 0x72, 0x42, 0x99, 0x13, 0x93, 0x0b, 0x44, 0x1d, 0x17, 0xc6, 0xe5, 0x05, 0x89, 0xd1, 0xbb, 0xb1, - 0x53, 0x11, 0x3a, 0x84, 0xb1, 0x7e, 0x17, 0x2c, 0x67, 0xa3, 0x0e, 0x43, 0x5c, 0xc2, 0x17, 0x25, - 0x7c, 0x31, 0x0b, 0x3c, 0x44, 0x5c, 0x60, 0xd7, 0x41, 0x11, 0x06, 0x01, 0xb9, 0x08, 0x30, 0xe3, - 0xe5, 0xa5, 0x8d, 0xa9, 0xad, 0xa2, 0xdd, 0x1d, 0xd0, 0x0d, 0x50, 0xf0, 0x50, 0xd4, 0x91, 0xc1, - 0x65, 0x19, 0xcc, 0xae, 0x7b, 0xbb, 0x8e, 0x3e, 0x74, 0xd7, 0xb9, 0xd2, 0x2a, 0x5e, 0x06, 0x2f, - 0xf5, 0x69, 0x07, 0x59, 0xbb, 0xf8, 0x83, 0x06, 0xf4, 0x5c, 0xdc, 0x46, 0x21, 0x69, 0xc3, 0x60, - 0x50, 0xb7, 0xd8, 0x07, 0x45, 0x26, 0xca, 0x28, 0xd7, 0xe7, 0xe4, 0x08, 0xeb, 0xb3, 0x20, 0xd2, - 0xe4, 0xf2, 0xec, 0xf1, 0x36, 0x35, 0xbe, 0xb7, 0x75, 0x60, 0x5c, 0xd5, 0x9e, 0x59, 0xfb, 0xbd, - 0x06, 0xee, 0x88, 0x70, 0x13, 0x46, 0x3e, 0xb2, 0xd1, 0x05, 0xa4, 0x5e, 0x1d, 0x45, 0x24, 0x64, - 0x7a, 0x0d, 0xcc, 0x7b, 0xf2, 0x9f, 0xc3, 0x89, 0x38, 0xf2, 0x94, 0x35, 0x59, 0xfc, 0x52, 0x32, - 0x78, 0x46, 0xf6, 0x3d, 0x4f, 0xdf, 0x02, 0x4b, 0x5d, 0x0c, 0x15, 0xd4, 0xc2, 0xad, 0x80, 0x2d, - 0xa4, 0x30, 0x39, 0xe1, 0x7f, 0xcf, 0x4d, 0x55, 0x6e, 0xeb, 0x57, 0xe5, 0x66, 0x86, 0x9e, 0x68, - 0xa0, 0x70, 0xcc, 0xfc, 0x93, 0x98, 0x1f, 0x45, 0xff, 0xe7, 0x07, 0x3a, 0x1d, 0x2c, 0xa5, 0x4e, - 0x32, 0x7b, 0xbf, 0xd1, 0x40, 0x31, 0x19, 0x3c, 0x69, 0xf1, 0xff, 0x89, 0xbf, 0xae, 0xf8, 0xa9, - 0x9b, 0x88, 0xbf, 0x0d, 0x96, 0x33, 0x9d, 0x99, 0xfa, 0x3f, 0x69, 0xf2, 0x8c, 0x2a, 0xd6, 0xbd, - 0x2a, 0xd7, 0x21, 0x09, 0x55, 0x03, 0xb2, 0x21, 0x47, 0x57, 0x55, 0x6b, 0x43, 0xaa, 0xce, 0x57, - 0x62, 0xb2, 0xb7, 0x12, 0xf7, 0xc0, 0x34, 0x85, 0x1c, 0x29, 0x3b, 0x3b, 0x62, 0xa9, 0xfd, 0xfd, - 0x69, 0xf5, 0xa5, 0xc4, 0x12, 0xf3, 0x1e, 0x99, 0x98, 0x58, 0x21, 0xe4, 0x4d, 0xf3, 0x3b, 0xc8, - 0x87, 0x6e, 0xa7, 0x8e, 0xdc, 0x4f, 0x3f, 0xde, 0x06, 0xca, 0x71, 0x1d, 0xb9, 0xb6, 0x4c, 0xdf, - 0x2b, 0xa4, 0x2e, 0x6b, 0xaf, 0x82, 0x57, 0x06, 0x99, 0xc8, 0xdc, 0xfe, 0x65, 0x52, 0x9e, 0x40, - 0xb2, 0x73, 0x2a, 0xf1, 0xf0, 0xb9, 0x38, 0xee, 0x89, 0x0e, 0xbf, 0x02, 0x66, 0x38, 0xe6, 0x01, - 0x52, 0xb7, 0x2d, 0xb9, 0xd0, 0x37, 0x40, 0xc9, 0x43, 0xcc, 0xa5, 0x38, 0x96, 0xbb, 0x4f, 0x62, - 0x24, 0x3f, 0xd4, 0xe3, 0x73, 0xaa, 0xd7, 0x67, 0xd6, 0xb9, 0xa7, 0x87, 0xe8, 0xdc, 0x33, 0xa3, - 0x75, 0xee, 0xd9, 0x21, 0x3a, 0xf7, 0xad, 0x41, 0x9d, 0xbb, 0x30, 0xa8, 0x73, 0x17, 0x87, 0xee, - 0x07, 0xb5, 0x4d, 0x50, 0xbd, 0xa6, 0xa4, 0x69, 0xd9, 0x77, 0xff, 0x5c, 0x02, 0x53, 0xc7, 0xcc, - 0xd7, 0x7f, 0xa1, 0x81, 0xe5, 0xab, 0xef, 0x78, 0x5f, 0x1d, 0xea, 0x80, 0xd9, 0xef, 0x45, 0xca, - 0xd8, 0x1f, 0x3b, 0x35, 0xd5, 0xa6, 0xff, 0x4e, 0x03, 0xc6, 0x80, 0x17, 0xb0, 0x83, 0x61, 0x67, - 0xb8, 0x9e, 0xc3, 0x78, 0xf7, 0xe6, 0x1c, 0x03, 0xe4, 0xf6, 0xbc, 0x42, 0x8d, 0x29, 0x37, 0xcf, - 0x31, 0xae, 0xdc, 0x7e, 0x2f, 0x26, 0xfa, 0xcf, 0x35, 0xb0, 0x74, 0xe5, 0x4c, 0xff, 0x95, 0x61, - 0x27, 0xb8, 0x9c, 0x69, 0x7c, 0x63, 0xdc, 0xcc, 0x4c, 0xd0, 0x4f, 0x35, 0xb0, 0x78, 0xf9, 0xd4, - 0xf0, 0xf6, 0xa8, 0xac, 0x2a, 0xd1, 0xf8, 0xfa, 0x98, 0x89, 0x99, 0x9a, 0x0f, 0x34, 0x30, 0xd7, - 0xf3, 0xd2, 0xf6, 0xe5, 0x61, 0x19, 0xf3, 0x59, 0xc6, 0x3b, 0xe3, 0x64, 0x65, 0x22, 0x42, 0x30, - 0x93, 0xec, 0xcd, 0xdb, 0xc3, 0xd2, 0x48, 0xb8, 0xf1, 0xe6, 0x48, 0xf0, 0x6c, 0xba, 0x18, 0xcc, - 0xaa, 0xbd, 0xd2, 0x1c, 0x81, 0xe0, 0xa4, 0xc5, 0x8d, 0xb7, 0x46, 0xc3, 0x67, 0x33, 0xfe, 0x56, - 0x03, 0x6b, 0xd7, 0x6f, 0x70, 0x43, 0xf7, 0x90, 0x6b, 0x29, 0x8c, 0xa3, 0x1b, 0x53, 0x64, 0x5a, - 0x7f, 0xa5, 0x81, 0x95, 0xbe, 0xdb, 0xd3, 0x3b, 0xa3, 0x3e, 0x6b, 0xf9, 0x6c, 0xa3, 0x7e, 0x93, - 0xec, 0x54, 0x9c, 0x31, 0xf3, 0xe3, 0xcf, 0x1e, 0xdf, 0xd5, 0x0e, 0xbe, 0xff, 0xe4, 0x59, 0x45, - 0xfb, 0xe4, 0x59, 0x45, 0xfb, 0xe7, 0xb3, 0x8a, 0xf6, 0xe1, 0xf3, 0xca, 0xc4, 0x27, 0xcf, 0x2b, - 0x13, 0x7f, 0x7b, 0x5e, 0x99, 0xf8, 0xc1, 0xd7, 0x7c, 0xcc, 0x9b, 0xad, 0x86, 0xe9, 0x92, 0x50, - 0x7d, 0xa0, 0xb4, 0xba, 0xf3, 0x6e, 0x67, 0xdf, 0x17, 0xdb, 0x6f, 0x5a, 0xef, 0xf7, 0x7e, 0x64, - 0x94, 0x1f, 0x65, 0x1a, 0xb3, 0xf2, 0x20, 0xfe, 0xa5, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x39, - 0xec, 0x0a, 0x75, 0xe0, 0x15, 0x00, 0x00, + // 1686 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcf, 0x6f, 0x24, 0x47, + 0x15, 0x76, 0xfb, 0xd7, 0xce, 0xd4, 0xf8, 0x67, 0xaf, 0x17, 0x8f, 0x3b, 0xce, 0x8c, 0x3d, 0x84, + 0xc4, 0x5a, 0xe2, 0xee, 0xd8, 0x90, 0x04, 0xac, 0x20, 0xb0, 0x3d, 0x0b, 0xeb, 0x80, 0xd7, 0xa6, + 0xd7, 0x04, 0x09, 0x24, 0x5a, 0x35, 0xdd, 0xe5, 0x9e, 0xd2, 0x76, 0x77, 0xb5, 0xaa, 0x6a, 0xc6, + 0x99, 0x5b, 0x94, 0x13, 0x12, 0x02, 0x85, 0x1b, 0xe2, 0x94, 0x03, 0x42, 0x42, 0x02, 0x69, 0x0f, + 0x39, 0x71, 0xe3, 0xb6, 0x07, 0x0e, 0x51, 0xc4, 0x01, 0x71, 0x58, 0x60, 0xf7, 0x10, 0xce, 0xfc, + 0x05, 0xa8, 0xaa, 0xab, 0x7b, 0x7a, 0xec, 0xf1, 0x64, 0x66, 0x1c, 0x0e, 0xb9, 0x8c, 0xa6, 0xeb, + 0x7d, 0xef, 0x7b, 0xdf, 0x7b, 0xd5, 0xf5, 0xaa, 0xaa, 0xc1, 0xab, 0x38, 0xe2, 0x88, 0xba, 0x4d, + 0x88, 0x23, 0x87, 0x21, 0xb7, 0x45, 0x31, 0xef, 0x58, 0xae, 0xdb, 0xb6, 0x62, 0x4a, 0xda, 0xd8, + 0x43, 0xd4, 0x6a, 0xef, 0x58, 0xfc, 0x5d, 0x33, 0xa6, 0x84, 0x13, 0xfd, 0xcb, 0x7d, 0xd0, 0xa6, + 0xeb, 0xb6, 0xcd, 0x14, 0x6d, 0xb6, 0x77, 0x8c, 0x65, 0x18, 0xe2, 0x88, 0x58, 0xf2, 0x37, 0xf1, + 0x33, 0xd6, 0x7d, 0x42, 0xfc, 0x00, 0x59, 0x30, 0xc6, 0x16, 0x8c, 0x22, 0xc2, 0x21, 0xc7, 0x24, + 0x62, 0xca, 0x5a, 0x55, 0x56, 0xf9, 0xd4, 0x68, 0x9d, 0x5b, 0x1c, 0x87, 0x88, 0x71, 0x18, 0xc6, + 0x0a, 0x50, 0xb9, 0x0c, 0xf0, 0x5a, 0x54, 0x32, 0x28, 0xfb, 0xda, 0x65, 0x3b, 0x8c, 0x3a, 0xca, + 0xb4, 0xe2, 0x13, 0x9f, 0xc8, 0xbf, 0x96, 0xf8, 0x97, 0x3a, 0xb8, 0x84, 0x85, 0x84, 0x39, 0x89, + 0x21, 0x79, 0x50, 0xa6, 0xd5, 0xe4, 0xc9, 0x0a, 0x99, 0x2f, 0x52, 0x0f, 0x99, 0x9f, 0xaa, 0xc4, + 0x0d, 0xd7, 0x72, 0x09, 0x45, 0x96, 0x1b, 0x60, 0x14, 0x71, 0x61, 0x4d, 0xfe, 0x29, 0xc0, 0xee, + 0x30, 0xa5, 0xcc, 0x0a, 0x95, 0xf8, 0x58, 0x82, 0x34, 0xc0, 0x7e, 0x93, 0x27, 0x54, 0xcc, 0xe2, + 0x28, 0xf2, 0x10, 0x0d, 0x71, 0x12, 0xa0, 0xfb, 0x94, 0xaa, 0xc8, 0xd9, 0x79, 0x27, 0x46, 0xcc, + 0x42, 0x82, 0x2f, 0x72, 0x51, 0x02, 0xa8, 0xfd, 0x4d, 0x03, 0x2b, 0xc7, 0xcc, 0xdf, 0x67, 0x0c, + 0xfb, 0xd1, 0x21, 0x89, 0x58, 0x2b, 0x44, 0xf4, 0xfb, 0xa8, 0xa3, 0xaf, 0x81, 0x42, 0xa2, 0x0d, + 0x7b, 0x65, 0x6d, 0x43, 0xdb, 0x2a, 0xda, 0xb7, 0xe4, 0xf3, 0x91, 0xa7, 0xbf, 0x09, 0xe6, 0x53, + 0x5d, 0x0e, 0xf4, 0x3c, 0x5a, 0x9e, 0x14, 0xf6, 0x03, 0xfd, 0xbf, 0x4f, 0xab, 0x0b, 0x1d, 0x18, + 0x06, 0x7b, 0x35, 0x31, 0x8a, 0x18, 0xab, 0xd9, 0x73, 0x29, 0x70, 0xdf, 0xf3, 0xa8, 0xbe, 0x09, + 0xe6, 0x5c, 0x15, 0xc2, 0x79, 0x84, 0x3a, 0xe5, 0x29, 0xc9, 0x5b, 0x72, 0x73, 0x61, 0x5f, 0x03, + 0xb3, 0x42, 0x09, 0xa2, 0xe5, 0x69, 0x49, 0x5a, 0xfe, 0xe4, 0xa3, 0xed, 0x15, 0x55, 0xf1, 0xfd, + 0x84, 0xf5, 0x21, 0xa7, 0x38, 0xf2, 0x6d, 0x85, 0xdb, 0xbb, 0xfd, 0xf3, 0x0f, 0xab, 0x13, 0xff, + 0xf9, 0xb0, 0x3a, 0xf1, 0xfe, 0xa7, 0x8f, 0xef, 0xaa, 0xc1, 0x5a, 0x05, 0xac, 0xf7, 0xcb, 0xca, + 0x46, 0x2c, 0x26, 0x11, 0x43, 0xb5, 0xbf, 0x68, 0xe0, 0xc5, 0x63, 0xe6, 0x3f, 0x6c, 0x35, 0x42, + 0xcc, 0x53, 0xc0, 0x31, 0x66, 0x0d, 0xd4, 0x84, 0x6d, 0x4c, 0x5a, 0x54, 0x7f, 0x03, 0x14, 0x99, + 0xb4, 0x72, 0x44, 0x93, 0x02, 0x0c, 0xd0, 0xd2, 0x85, 0xea, 0xa7, 0x60, 0x2e, 0xcc, 0xf1, 0xc8, + 0xda, 0x94, 0x76, 0x5f, 0x35, 0x71, 0xc3, 0x35, 0xf3, 0x33, 0x67, 0xe6, 0xe6, 0xaa, 0xbd, 0x63, + 0xe6, 0x63, 0xdb, 0x3d, 0x0c, 0x7b, 0x5f, 0xca, 0x27, 0xd8, 0x8d, 0x54, 0x7b, 0x05, 0x7c, 0x65, + 0x60, 0x0a, 0x59, 0xb2, 0x8f, 0x27, 0xfb, 0x24, 0x5b, 0x27, 0xad, 0x46, 0x80, 0xde, 0x21, 0x1c, + 0x47, 0xfe, 0xd8, 0xc9, 0x3a, 0x60, 0xd5, 0x6b, 0xc5, 0x01, 0x76, 0x21, 0x47, 0x4e, 0x9b, 0x70, + 0xe4, 0xa4, 0xaf, 0x97, 0xca, 0xfb, 0x95, 0x7c, 0x9a, 0xf2, 0x05, 0x34, 0xeb, 0xa9, 0xc3, 0x3b, + 0x84, 0xa3, 0x7b, 0x0a, 0x6e, 0xdf, 0xf1, 0xfa, 0x0d, 0xeb, 0x3f, 0x03, 0xab, 0x38, 0x3a, 0xa7, + 0xd0, 0x15, 0xcb, 0xd7, 0x69, 0x04, 0xc4, 0x7d, 0xe4, 0x34, 0x11, 0xf4, 0x10, 0x95, 0x2f, 0x4f, + 0x69, 0xf7, 0xe5, 0xcf, 0x2a, 0xec, 0x7d, 0x89, 0xb6, 0xef, 0x74, 0x69, 0x0e, 0x04, 0x4b, 0x32, + 0x3c, 0x52, 0x6d, 0xf3, 0x15, 0xcb, 0x6a, 0xfb, 0x3b, 0x0d, 0x2c, 0x1e, 0x33, 0xff, 0x47, 0xb1, + 0x07, 0x39, 0x3a, 0x85, 0x14, 0x86, 0x4c, 0x54, 0x13, 0xb6, 0x78, 0x93, 0x88, 0x15, 0xfd, 0xd9, + 0xd5, 0xcc, 0xa0, 0xfa, 0x11, 0x98, 0x8d, 0x25, 0x83, 0x2a, 0xde, 0x57, 0xcd, 0x21, 0xfa, 0xa7, + 0x99, 0x04, 0x3d, 0x98, 0x7e, 0xf2, 0xb4, 0x3a, 0x61, 0x2b, 0x82, 0xbd, 0x05, 0x99, 0x4f, 0x46, + 0x5d, 0x5b, 0x03, 0xab, 0x97, 0x54, 0x66, 0x19, 0xfc, 0xb2, 0x00, 0x6e, 0x1f, 0x33, 0x3f, 0xcd, + 0x72, 0xdf, 0xf3, 0xb0, 0xa8, 0xd2, 0xa0, 0x06, 0xf0, 0x3d, 0xb0, 0x80, 0x23, 0xcc, 0x31, 0x0c, + 0x9c, 0x26, 0x12, 0xa5, 0x57, 0x82, 0x0d, 0x39, 0x19, 0xa2, 0xe9, 0x99, 0xaa, 0xd5, 0xc9, 0x09, + 0x10, 0x08, 0xa5, 0x6f, 0x5e, 0xf9, 0x25, 0x83, 0xa2, 0x21, 0xf8, 0x28, 0x42, 0x0c, 0x33, 0xa7, + 0x09, 0x59, 0x53, 0xce, 0xe9, 0x9c, 0x5d, 0x52, 0x63, 0xf7, 0x21, 0x6b, 0xea, 0x55, 0x50, 0x6a, + 0xe0, 0x08, 0xd2, 0x4e, 0x82, 0x98, 0x96, 0x08, 0x90, 0x0c, 0x49, 0xc0, 0x21, 0x00, 0x2c, 0x86, + 0x17, 0x91, 0x23, 0xb6, 0x81, 0xf2, 0x8c, 0x12, 0x92, 0xb4, 0x78, 0x33, 0x6d, 0xf1, 0xe6, 0x59, + 0xba, 0x47, 0x1c, 0x14, 0x84, 0x90, 0x0f, 0xfe, 0x59, 0xd5, 0xec, 0xa2, 0xf4, 0x13, 0x16, 0xfd, + 0x01, 0x58, 0x6a, 0x45, 0x0d, 0x12, 0x79, 0x38, 0xf2, 0x9d, 0x18, 0x51, 0x4c, 0xbc, 0xf2, 0xac, + 0xa4, 0x5a, 0xbb, 0x42, 0x55, 0x57, 0xbb, 0x49, 0xc2, 0xf4, 0x1b, 0xc1, 0xb4, 0x98, 0x39, 0x9f, + 0x4a, 0x5f, 0xfd, 0x87, 0x40, 0x77, 0xdd, 0xb6, 0x94, 0x44, 0x5a, 0x3c, 0x65, 0xbc, 0x35, 0x3c, + 0xe3, 0x92, 0xeb, 0xb6, 0xcf, 0x12, 0x6f, 0x45, 0xf9, 0x53, 0xb0, 0xca, 0x29, 0x8c, 0xd8, 0x39, + 0xa2, 0x97, 0x79, 0x0b, 0xc3, 0xf3, 0xde, 0x49, 0x39, 0x7a, 0xc9, 0xef, 0x83, 0x8d, 0xac, 0x33, + 0x53, 0xe4, 0x61, 0xc6, 0x29, 0x6e, 0xb4, 0xe4, 0xa2, 0x4b, 0x97, 0x4d, 0xb9, 0x28, 0x5f, 0x82, + 0x4a, 0x8a, 0xb3, 0x7b, 0x60, 0xdf, 0x55, 0x28, 0xfd, 0x04, 0xbc, 0x24, 0x97, 0x29, 0x13, 0xe2, + 0x9c, 0x1e, 0x26, 0x19, 0x3a, 0xc4, 0x8c, 0x09, 0x36, 0xb0, 0xa1, 0x6d, 0x4d, 0xd9, 0x9b, 0x09, + 0xf6, 0x14, 0xd1, 0x7a, 0x0e, 0x79, 0x96, 0x03, 0xea, 0xdb, 0x40, 0x6f, 0x62, 0xc6, 0x09, 0xc5, + 0x2e, 0x0c, 0x1c, 0x14, 0x71, 0x8a, 0x11, 0x2b, 0x97, 0xa4, 0xfb, 0x72, 0xd7, 0x72, 0x2f, 0x31, + 0xe8, 0x6f, 0x83, 0xcd, 0x6b, 0x83, 0x3a, 0x6e, 0x13, 0x46, 0x11, 0x0a, 0xca, 0x73, 0x32, 0x95, + 0xaa, 0x77, 0x4d, 0xcc, 0xc3, 0x04, 0xa6, 0xdf, 0x06, 0x33, 0x9c, 0xc4, 0xce, 0x83, 0xf2, 0xfc, + 0x86, 0xb6, 0x35, 0x6f, 0x4f, 0x73, 0x12, 0x3f, 0xd0, 0x5f, 0x03, 0x2b, 0x6d, 0x18, 0x60, 0x0f, + 0x72, 0x42, 0x99, 0x13, 0x93, 0x0b, 0x44, 0x1d, 0x17, 0xc6, 0xe5, 0x05, 0x89, 0xd1, 0xbb, 0xb6, + 0x53, 0x61, 0x3a, 0x84, 0xb1, 0x7e, 0x17, 0x2c, 0x67, 0xa3, 0x0e, 0x43, 0x5c, 0xc2, 0x17, 0x25, + 0x7c, 0x31, 0x33, 0x3c, 0x44, 0x5c, 0x60, 0xd7, 0x41, 0x11, 0x06, 0x01, 0xb9, 0x08, 0x30, 0xe3, + 0xe5, 0xa5, 0x8d, 0xa9, 0xad, 0xa2, 0xdd, 0x1d, 0xd0, 0x0d, 0x50, 0xf0, 0x50, 0xd4, 0x91, 0xc6, + 0x65, 0x69, 0xcc, 0x9e, 0x7b, 0xbb, 0x8e, 0x3e, 0x74, 0xd7, 0xb9, 0xd2, 0x2a, 0x5e, 0x04, 0x2f, + 0xf4, 0x69, 0x07, 0x59, 0xbb, 0xf8, 0xb3, 0x06, 0xf4, 0x9c, 0xdd, 0x46, 0x21, 0x69, 0xc3, 0x60, + 0x50, 0xb7, 0xd8, 0x07, 0x45, 0x26, 0xca, 0x28, 0xd7, 0xe7, 0xe4, 0x08, 0xeb, 0xb3, 0x20, 0xdc, + 0xe4, 0xf2, 0xec, 0xc9, 0x6d, 0x6a, 0xfc, 0xdc, 0xd6, 0x81, 0x71, 0x55, 0x7b, 0x96, 0xda, 0x9f, + 0x34, 0x70, 0x47, 0x98, 0x9b, 0x30, 0xf2, 0x91, 0x8d, 0x2e, 0x20, 0xf5, 0xea, 0x28, 0x22, 0x21, + 0xd3, 0x6b, 0x60, 0xde, 0x93, 0xff, 0x1c, 0x4e, 0xc4, 0x91, 0xa7, 0xac, 0xc9, 0xe2, 0x97, 0x92, + 0xc1, 0x33, 0xb2, 0xef, 0x79, 0xfa, 0x16, 0x58, 0xea, 0x62, 0xa8, 0xa0, 0x16, 0xd9, 0x0a, 0xd8, + 0x42, 0x0a, 0x93, 0x01, 0x3f, 0xbf, 0x6c, 0xaa, 0x72, 0x5b, 0xbf, 0x2a, 0x37, 0x4b, 0xe8, 0x89, + 0x06, 0x0a, 0xc7, 0xcc, 0x3f, 0x89, 0xf9, 0x51, 0xf4, 0x05, 0x3f, 0xd0, 0xe9, 0x60, 0x29, 0xcd, + 0x24, 0x4b, 0xef, 0xf7, 0x1a, 0x28, 0x26, 0x83, 0x27, 0x2d, 0xfe, 0x7f, 0xc9, 0xaf, 0x2b, 0x7e, + 0xea, 0x26, 0xe2, 0x6f, 0x83, 0xe5, 0x4c, 0x67, 0xa6, 0xfe, 0xbd, 0x49, 0x79, 0x46, 0x15, 0xeb, + 0x5e, 0x95, 0xeb, 0x90, 0x84, 0xaa, 0x01, 0xd9, 0x90, 0xa3, 0xab, 0xaa, 0xb5, 0x21, 0x55, 0xe7, + 0x2b, 0x31, 0xd9, 0x5b, 0x89, 0x7b, 0x60, 0x9a, 0x42, 0x8e, 0x54, 0x3a, 0x3b, 0x62, 0xa9, 0xfd, + 0xe3, 0x69, 0xf5, 0x85, 0x24, 0x25, 0xe6, 0x3d, 0x32, 0x31, 0xb1, 0x42, 0xc8, 0x9b, 0xe6, 0x0f, + 0x90, 0x0f, 0xdd, 0x4e, 0x1d, 0xb9, 0x9f, 0x7c, 0xb4, 0x0d, 0x54, 0xc6, 0x75, 0xe4, 0xda, 0xd2, + 0xfd, 0xf3, 0x9a, 0xd4, 0x97, 0xc1, 0x4b, 0x83, 0x2a, 0x90, 0x95, 0xea, 0xdf, 0x93, 0xf2, 0xf8, + 0x92, 0x1d, 0x72, 0x89, 0x87, 0xcf, 0xc5, 0x59, 0x51, 0x6c, 0x0f, 0x2b, 0x60, 0x86, 0x63, 0x1e, + 0x20, 0x35, 0xe7, 0xc9, 0x83, 0xbe, 0x01, 0x4a, 0x1e, 0x62, 0x2e, 0xc5, 0xb1, 0xdc, 0xba, 0x92, + 0x2a, 0xe4, 0x87, 0x7a, 0x8a, 0x34, 0xd5, 0x5b, 0xa4, 0xac, 0xed, 0x4f, 0x0f, 0xd1, 0xf6, 0x67, + 0x46, 0x6b, 0xfb, 0xb3, 0x43, 0xb4, 0xfd, 0x5b, 0x83, 0xda, 0x7e, 0x61, 0x50, 0xdb, 0x2f, 0x8e, + 0xdf, 0x4c, 0x36, 0x41, 0xf5, 0x9a, 0x12, 0xa7, 0xd3, 0xb0, 0xfb, 0xd7, 0x12, 0x98, 0x3a, 0x66, + 0xbe, 0xfe, 0x6b, 0x0d, 0x2c, 0x5f, 0xbd, 0x30, 0x7e, 0x73, 0xa8, 0xd3, 0x6a, 0xbf, 0x5b, 0x99, + 0xb1, 0x3f, 0xb6, 0x6b, 0xaa, 0x4d, 0xff, 0xa3, 0x06, 0x8c, 0x01, 0xb7, 0xb9, 0x83, 0x61, 0x23, + 0x5c, 0xcf, 0x61, 0xbc, 0x7d, 0x73, 0x8e, 0x01, 0x72, 0x7b, 0xee, 0x63, 0x63, 0xca, 0xcd, 0x73, + 0x8c, 0x2b, 0xb7, 0xdf, 0x2d, 0x47, 0xff, 0x95, 0x06, 0x96, 0xae, 0x5c, 0x10, 0xbe, 0x31, 0x6c, + 0x80, 0xcb, 0x9e, 0xc6, 0x77, 0xc6, 0xf5, 0xcc, 0x04, 0xfd, 0x42, 0x03, 0x8b, 0x97, 0x8f, 0x20, + 0x6f, 0x8e, 0xca, 0xaa, 0x1c, 0x8d, 0x6f, 0x8f, 0xe9, 0x98, 0xa9, 0x79, 0x5f, 0x03, 0x73, 0x3d, + 0x37, 0xc0, 0xaf, 0x0f, 0xcb, 0x98, 0xf7, 0x32, 0xde, 0x1a, 0xc7, 0x2b, 0x13, 0x11, 0x82, 0x99, + 0x64, 0xa3, 0xdf, 0x1e, 0x96, 0x46, 0xc2, 0x8d, 0xd7, 0x47, 0x82, 0x67, 0xe1, 0x62, 0x30, 0xab, + 0x36, 0x5e, 0x73, 0x04, 0x82, 0x93, 0x16, 0x37, 0xde, 0x18, 0x0d, 0x9f, 0x45, 0xfc, 0x83, 0x06, + 0xd6, 0xae, 0xdf, 0x2d, 0x87, 0xee, 0x21, 0xd7, 0x52, 0x18, 0x47, 0x37, 0xa6, 0xc8, 0xb4, 0xfe, + 0x56, 0x03, 0x2b, 0x7d, 0xb7, 0xab, 0xb7, 0x46, 0x7d, 0xd7, 0xf2, 0xde, 0x46, 0xfd, 0x26, 0xde, + 0xa9, 0x38, 0x63, 0xe6, 0xbd, 0x4f, 0x1f, 0xdf, 0xd5, 0x0e, 0x7e, 0xfc, 0xe4, 0x59, 0x45, 0xfb, + 0xf8, 0x59, 0x45, 0xfb, 0xd7, 0xb3, 0x8a, 0xf6, 0xc1, 0xf3, 0xca, 0xc4, 0xc7, 0xcf, 0x2b, 0x13, + 0x7f, 0x7f, 0x5e, 0x99, 0xf8, 0xc9, 0xb7, 0x7c, 0xcc, 0x9b, 0xad, 0x86, 0xe9, 0x92, 0x50, 0x7d, + 0xed, 0xb4, 0xba, 0x71, 0xb7, 0xb3, 0x8f, 0x95, 0xed, 0xd7, 0xad, 0x77, 0x7b, 0xbf, 0x58, 0xca, + 0x2f, 0x3c, 0x8d, 0x59, 0x79, 0xaa, 0xff, 0xda, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x21, 0x15, + 0x3c, 0x60, 0x2d, 0x16, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2566,6 +2568,13 @@ func (m *MsgSetConsumerCommissionRate) MarshalToSizedBuffer(dAtA []byte) (int, e _ = i var l int _ = l + if len(m.Signer) > 0 { + i -= len(m.Signer) + copy(dAtA[i:], m.Signer) + i = encodeVarintTx(dAtA, i, uint64(len(m.Signer))) + i-- + dAtA[i] = 0x22 + } { size := m.Rate.Size() i -= size @@ -3069,6 +3078,10 @@ func (m *MsgSetConsumerCommissionRate) Size() (n int) { } l = m.Rate.Size() n += 1 + l + sovTx(uint64(l)) + l = len(m.Signer) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -5471,6 +5484,38 @@ func (m *MsgSetConsumerCommissionRate) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Signer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) From 76fd678a68be97d49a26bb9a0ecca438a57c59c7 Mon Sep 17 00:00:00 2001 From: insumity Date: Fri, 26 Jul 2024 15:43:40 +0300 Subject: [PATCH 08/55] docs: introduce ADR for permissionless ICS (#2001) * init commit * added table with keys * show image * nit changes * small photo change * small changes * more small changes * added note on owners * added a negative * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Philip Offtermatt <57488781+p-offtermatt@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Philip Offtermatt <57488781+p-offtermatt@users.noreply.github.com> * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Philip Offtermatt <57488781+p-offtermatt@users.noreply.github.com> * Took into account comments * Took into account comments * more changes * nit change * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * nit change * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * introducing more changes * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * nit fixes * nit fixes * fixed small typo * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * took into account comments * nit changes * updated table and cleared up some confusing parts * updated diagrams * fixed diagram * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * Update docs/docs/adrs/adr-018-permissionless-ics.md Co-authored-by: Marius Poke * updated messages * performed more updates * fixed typo on diagram * small change in the diagram * took into account comments --------- Co-authored-by: Philip Offtermatt <57488781+p-offtermatt@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Marius Poke --- docs/docs/adrs/adr-018-permissionless-ics.md | 348 ++ ...s_of_launching_a_consumer_chain.excalidraw | 3277 ++++++++++++++++ ...18_flows_of_launching_a_consumer_chain.png | Bin 0 -> 609357 bytes ...dr18_phases_of_a_consumer_chain.excalidraw | 3404 +++++++++++++++++ .../adrs/adr18_phases_of_a_consumer_chain.png | Bin 0 -> 287257 bytes 5 files changed, 7029 insertions(+) create mode 100644 docs/docs/adrs/adr-018-permissionless-ics.md create mode 100644 docs/docs/adrs/adr18_flows_of_launching_a_consumer_chain.excalidraw create mode 100644 docs/docs/adrs/adr18_flows_of_launching_a_consumer_chain.png create mode 100644 docs/docs/adrs/adr18_phases_of_a_consumer_chain.excalidraw create mode 100644 docs/docs/adrs/adr18_phases_of_a_consumer_chain.png diff --git a/docs/docs/adrs/adr-018-permissionless-ics.md b/docs/docs/adrs/adr-018-permissionless-ics.md new file mode 100644 index 0000000000..8cce4e15e5 --- /dev/null +++ b/docs/docs/adrs/adr-018-permissionless-ics.md @@ -0,0 +1,348 @@ +--- +sidebar_position: 19 +title: Permissionless ICS +--- +# ADR 18: Permissionless Interchain Security + +## Changelog +* 27th of June, 2024: Initial draft + +## Status + +Proposed + +## Context +Currently, a consumer chain can join _Interchain Security_ (ICS) only through a [governance proposal](../features/proposals.md). +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. +Because of this, we can launch an Opt In consumer chain without going through a governance proposal. + +This ADR presents _Permissionless_ ICS, a way in which an [_Opt In_](adr-015-partial-set-security.md) consumer chain can join +ICS without needing a governance proposal but by simply issuing a transaction. + +## Decision +In Permissionless ICS, launching an Opt In chain is **only** possible through a transaction and not through a [`MsgConsumerAddition`](https://github.com/cosmos/interchain-security/blob/v5.1.0/proto/interchain_security/ccv/provider/v1/tx.proto#L111) +proposal. Naturally, Permissionless ICS does not eliminate governance proposals, as proposals are still necessary for Top N chains. +Because of this, this ADR outlines a solution that also refactors governance proposals (i.e., `MsgConsumerAddition`, `MsgConsumerModification`, and `MsgConsumerRemoval`) +so that Top N and Opt In chains can share as much functionality as possible. +Note, that to make the distinction between governance-proposed versus transaction-launched chains clearer, in Permissionless ICS, +we can only launch, update, or stop Top N chains with governance proposals, and we can only launch, update, or stop Opt In chains with transactions. +Additionally, a Top N chain can transform to an Opt In chain through a gov proposal, but for simplicity, in this first +iteration of Permissionless, an Opt In chain cannot transform to a Top N chain. + +### The Phases of a Consumer Chain + +We first present the notion of an _owner_ of a consumer chain before showing the specific phases of a consumer chain. + +**Owner.** A consumer chain has an _owner_, which is simply an address. Only the owner can interact (i.e., launch, update, or stop) +with the chain. The owner of an Opt In chain is the one who signed the initial transaction to register a consumer chain (more on this later). +Naturally, an Opt In chain can change its owner at any point. The owner of a Top N chain is the account of the governance module. +Therefore, any changes on a Top N chain have to go through governance proposals. + +A consumer chain can reside in four phases: i) _registered_, ii) _initialized_, iii) _launched_, and iv) _stopped_ phase as seen +in the diagram below: +![Phases of a consumer chain](./adr18_phases_of_a_consumer_chain.png) + +**Registered phase.** In the _registered phase_, a consumer chain is assigned a unique identifier that identifies a consumer chain +that can later be used to interact with the specific consumer chain (e.g., when a validator opts in on a chain). +After a chain has been registered, it can later be initialized and then launched. Specifically, Permissionless ICS introduces +a `MsgRegisterConsumer` message that can be used to register **both** Top N and Opt In consumer chains. +In the registered phase, it is not yet known if the consumer chain would end up being a Top N or an Opt In chain and hence +the owner of the consumer chain at this phase is the one that signed the `MsgRegisterConsumer`. +Note that currently, a consumer chain is registered when first proposed through a `MsgConsumerAddition` proposal +message but with Permissionless ICS, the `MsgConsumerAddition` is deprecated and chains have to issue a `MsgRegisterConsumer` message instead. +A consumer chain in the registered phase might not launch, e.g., a later governance proposal might not pass or +the Opt In chain might never be initialized. + +**Initialized phase.** The _initialized phase_ means that the chain has set all the needed parameters to launch but has +not yet launched. To initialize an Opt In chain, the owner of the chain has to issue a `MsgInitializeConsumer` message +and potentially a `MsgUpdateConsumer` if they want to set up specific parameters (e.g., [power-shaping features](https://cosmos.github.io/interchain-security/features/power-shaping)). +Similarly, a Top N chain has to issue the same two messages (i.e, `MsgInitializeConsumer`, `MsgUpdateConsumer`) as part of a +governance proposal and if the governance proposal passes, the consumer chain is considered to be initialized. The moment +a governance proposal is proposed for a Top N chain, the owner changes to be the account of the governance module. +While in the initialized phase, an Opt In chain can choose to change the consumer chain parameters, such as `spawnTime`, etc. +by issuing a new `MsgInitializeConsumer` or `MsgUpdateConsumer` messages. +This is not the case for Top N chains, where a `MsgUpdateConsumer` can only be issued after a consumer +chain [has launched](https://github.com/cosmos/interchain-security/blob/v5.1.0/x/ccv/provider/keeper/legacy_proposal.go#L89). + +**Launched phase.** In the _launched phase_ the consumer chain is running and is consuming a subset of the validator set +of the provider. When the [`spawnTime`](https://github.com/cosmos/interchain-security/blob/v5.1.0/proto/interchain_security/ccv/provider/v1/provider.proto#L57) +passes and [at least one validator has opted in](https://github.com/cosmos/interchain-security/blob/v5.1.0/x/ccv/provider/keeper/proposal.go#L430) +the chain can launch and moves to the launched phase. Note that a Top N chain can launch if and only if the `spawnTime` has passed and +the initialization proposal has successfully passed. While in launched phase, a consumer chain can choose to modify +its parameters through `MsgUpdateConsumer`. Naturally, only the owner of the chain can issue `MsgUpdateConsumer`, thus +for Top N chains, the chain can be updated only through a governance proposal that contains a `MsgUpdateConsumer`. + +**Stopped phase.** Lastly, the owner of a chain can choose to exit ICS by executing a `MsgRemoveConsumer`. +After some period of time (e.g., provider's unbonding period), all state related to the stopped consumer chain can be removed. +We keep track of the state of the consumer chain for some period, so that we are able to punish validators for misbehaviours +that occurred before the consumer chain stopped. + +Note that everything described so far and everything that follows applies to consumer chains that transition from standalone chains as well. + +### From `chainId` to `consumerId` +A hindrance in moving to Permissionless ICS is [chain-id squatting](https://forum.cosmos.network/t/pss-permissionless-vs-premissioned-lite-opt-in-consumer-chains/12984/17). +In a permissionless setting, anyone could issue a transaction to launch a consumer chain with a `chainId` that might already be used by some other consumer chain. This is a problem +because in the current design the majority of stored state for a consumer chain is indexed using the `chainId` as the key (e.g., +see [key used to store client ids](https://github.com/cosmos/interchain-security/blob/v5.1.0/x/ccv/provider/types/keys.go#L245)). +To tackle this problem, in Permissionless ICS, we introduce the `consumerId` that defines a consumer chain and is simply +an increasing counter (i.e., `counter`), thus we can support multiple consumer chains with the same `chainId`. +Another way to understand this is with an analogy between consumer chains and IBC clients: Imagine having multiple IBC clients +that each point to different consumer chains, but all share the exact same `chainId`. It is then up to the user to select the +appropriate client (i.e., `clientId`) based on the actual chain they want to communicate with. Similarly, there can be multiple +consumer chains with the exact same `chainId`, and it is the responsibility of the validators to choose the one they wish +to interact with by providing the right `consumerId`. + +Note that with Permissionless ICS, all interactions on a consumer chain have to use the `consumerId` instead of the `chainId`. +For example, if a validator opts in on a chain using `MsgOptIn`, the validator has to provide the `consumerId`. To also +provide the `consumerId` for Top N consumers chains, we store a mapping between `proposalID` to `consumerId`. This storing +takes place in the [`AfterProposalSubmission`](https://github.com/cosmos/cosmos-sdk/blob/v0.50.8/x/gov/types/hooks.go#L19) hook. +Specifically, for the equivocation evidence, we update the `MsgSubmitConsumerMisbehaviour` and `MsgSubmitConsumerDoubleVoting` messages to include the `consumerId`, +and change [Hermes](https://github.com/informalsystems/hermes) to include `consumerId` in those constructed messages as well. +Hermes can find out the `consumerId` by querying the provider's `clientId` for some consumer chain (i.e., `query ccvconsumer provider-info`) +and then asking the provider chain for the `consumerId` that corresponds to this `clientId`. To do this, we need to store +the `clientId` to `consumerId` association on the provider and introduce a query to retrieve the `clientId` +given the `consumerId`. + +#### State +As a result of using `consumerId`, we have to migrate a substantial chunk of state to re-index it using `consumerId` as the key. +Currently, in ICS we have state that is indexed by a multitude of [keys](https://github.com/cosmos/interchain-security/blob/v5.1.0/x/ccv/provider/types/keys.go#L40). +In the table below, we see the ones that are associated with a `chainId` and how often state under those keys gets updated. +Additionally, for each key, the table shows whose action can lead to the setting or deletion of the state associated with that key. +An action can stem either from: i) a consumer chain (e.g., through a `MsgUpdateConsumer` message, an IBC packet sent over to the provider, etc.), +ii) a provider chain (e.g., at the end of a block some action is taken), or by iii) a validator (e.g., through a `MsgAssignConsumerKey` message) +or a combination of them. + +| Key | Description | Who can set this? | Who can delete this? | How often are `chainId`-associated keys updated? | +|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------|:--------------------------------:|:--------------------------------:|----------------------------------------------------------------------------------------------------------| +| `ChainToChannelBytePrefix` | Stores the CCV `channelID` for a specific chain | consumer chain | consumer chain | Only once (during set up) | +| `ChannelToChainBytePrefix` | Stores `chainId` for a specific channel | consumer chain | consumer chain | Only once (during set up) | +| `ChainToClientBytePrefix` | Stores the `clientID` for a specific chain | consumer chain | consumer chain | Only once (during set up) | +| `PendingCAPBytePrefix` | Stores pending consumer addition proposals | consumer chain | provider chain | Only once (for successful proposal) | +| `PendingCRPBytePrefix` | Stores pending consumer removal proposals | consumer chain | provider chain | Only once (for successful proposal) | +| `ConsumerGenesisBytePrefix` | Stores the consumer genesis for a specific chain | consumer chain | consumer chain | Only once (during set up) | +| `SlashAcksBytePrefix` | Stores slash acks for a specific consumer chain | consumer chain | provider chain | Every time we receive a Slash packet | +| `PendingVSCsBytePrefix` | Stores `VSCPacket`s for a specific consumer chain | provider chain | provider chain | Every [epoch](https://github.com/cosmos/interchain-security/blob/v5.1.0/docs/docs/adrs/adr-014-epochs.md) | +| `ConsumerValidatorsBytePrefix` | Stores consumer key per validator per consumer chain | validator | consumer chain | Every `MsgAssignConsumerKey` or `MsgOptIn` | +| `ValidatorsByConsumerAddrBytePrefix` | Stores consumer to provider validator address | validator | consumer or provider chain | Every `MsgAssignConsumerKey` or `MsgOptIn` | +| `EquivocationEvidenceMinHeightBytePrefix`| Stores min height for a consumer chain | consumer chain | consumer chain | Only once (during set up) | +| `ProposedConsumerChainByteKey` | Stores `proposalID`s for consumer chains with proposals in the voting period | not applicable for Opt In chains | not applicable for Opt In chains | Created when the proposal is submitted and deleted when the proposal's voting period ends | +| `ConsumerValidatorBytePrefix` | Stores consumer validators for a specific chain | validator | validator or consumer chain | Potentially at every epoch | +| `OptedInBytePrefix` | Stores opted-in validators for a specific chain | validator | validator or consumer chain | Potentially at every block | +| `TopNBytePrefix` | Stores whether a consumer chain is Top N or not | not applicable for Opt In chains | not applicable for Opt In chains | Every parameter update | +| `ValidatorsPowerCapPrefix` | Stores the power cap of a chain | consumer chain | consumer chain | Every parameter update | +| `ValidatorSetCapPrefix` | Stores the set cap of a chain | consumer chain | consumer chain | Every parameter update | +| `AllowlistPrefix` | Stores the allowlist of a chain | consumer chain | consumer chain | Every parameter update | +| `DenylistPrefix` | Stores the denylist of a chain | consumer chain | consumer chain | Every parameter update | +| `ConsumerRewardsAllocationBytePrefix` | Stores the ICS rewards per chain | consumer or provider chain | provider chain | Every IBC transfer packet that sends rewards to the provider | +| `ConsumerCommissionRatePrefix` | Commission rate per chain per validator | validator | consumer chain | Every `MsgSetConsumerCommissionRate` message | +| `MinimumPowerInTopNBytePrefix` | Stores the minimum power needed to opt in for a chain | not applicable for Opt In chains | not applicable for Opt In chains | Every epoch | +| `ConsumerAddrsToPruneV2BytePrefix` | Stores consumer addresses to be pruned (as part of `VSCMaturedPacket`s deprecation) | validator or provider chain | provider chain | Every `MsgAssignConsumerKey` or `MsgOptIn` and later during actual pruning | + +Everything stored under one of the above keys is associated with a `chainId` and has to be migrated to new state under a `consumerId`. + +### New Messages +In this section, we describe the new messages (i.e., `MsgRegisterConsumer`, `MsgInitializeConsumer`, `MsgUpdateConsumer` and `MsgRemoveConsumer`) +that Permissionless ICS introduces. +Then, we describe how to utilize these messages with our existing codebase. + +#### Register a Consumer Chain +We first have to register a chain before launching it, irrespectively of whether it is Top N or Opt In. +This is done through the following message: +```protobuf +message MsgRegisterConsumer { + // the registration record that contains information for the registered chain + ConsumerRegistrationRecord registration_record; +} +``` + +where `ConsumerRegistrationRecord` contains information about the to-be-launched consumer chain before it launches. + +```protobuf +message ConsumerRegistrationRecord { + // the title of the chain to-be-launched + string title; + // the description of the chain to-be-launched + string description; + // the chain id of the new consumer chain + string chain_id; +} +``` + +This response of this message contains a single `string`, that is the `consumerId` for this registered consumer chain and sets +a consumer chain in its registered phase. With the returned `consumerId`, validators can already opt in on the consumer +chain to show their potential interest on the chain. + +The owner of the consumer chain is the one that signed the `MsgRegisterConsumer` message. + +To prevent an attacker spamming the system by creating bogus consumer chains, we set a fixed cost for sending a `MsgRegisterConsumer` (configurable via a parameter). + +#### Initialize a Consumer Chain +To move an Opt In consumer chain to its initialized phase, we issue a `MsgInitializeConsumer` message that is as follows: + +```protobuf +message MsgInitializeConsumer { + // consumer id of the to-be-updated consumer chain + string consumer_id; + // the initialization record that contains initialization parameters for the upcoming chain + ConsumerInitializationRecord initialization_record; +} +``` +where `ConsumerInitializationRecord` contains the following: +```protobuf +message ConsumerInitializationRecord { + // ---------- ---------- ---------- + // Following fields are used when the consumer chain launches and are not needed by the provider afterwards. + // ---------- ---------- ---------- + + // the proposed initial height of new consumer chain. + // For a completely new chain, this will be {0,1}. However, it may be + // different if this is a chain that is converting to a consumer chain. + ibc.core.client.v1.Height initial_height; + // The hash of the consumer chain genesis state without the consumer CCV + // module genesis params. It is used for off-chain confirmation of + // genesis.json validity by validators and other parties. + bytes genesis_hash; + // The hash of the consumer chain binary that should be run by validators on + // chain initialization. It is used for off-chain confirmation of binary + // validity by validators and other parties. + bytes binary_hash; + // spawn time is the time on the provider chain at which the consumer chain + // genesis is finalized and all validators will be responsible for starting + // their consumer chain validator node. + google.protobuf.Timestamp spawn_time; + // Unbonding period for the consumer, + // which should be smaller than that of the provider in general. + google.protobuf.Duration unbonding_period; + + + // ---------- ---------- ---------- + // Following fields are used to construct the consumer genesis of the to-be-launched consumer chain + // and are set up as params on the consumer chain. Those params can then be directly modified by the consumer chain. + // ---------- ---------- ---------- + + // Sent CCV related IBC packets will timeout after this duration + google.protobuf.Duration ccv_timeout_period; + // Sent transfer related IBC packets will timeout after this duration + google.protobuf.Duration transfer_timeout_period; + // The fraction of tokens allocated to the consumer redistribution address + // during distribution events. The fraction is a string representing a + // decimal number. For example "0.75" would represent 75%. + string consumer_redistribution_fraction; + // BlocksPerDistributionTransmission is the number of blocks between + // ibc-token-transfers from the consumer chain to the provider chain. On + // sending transmission event, `consumer_redistribution_fraction` of the + // accumulated tokens are sent to the consumer redistribution address. + int64 blocks_per_distribution_transmission; + // The number of historical info entries to persist in store. + // This param is a part of the cosmos sdk staking module. In the case of + // a ccv enabled consumer chain, the ccv module acts as the staking module. + int64 historical_entries; + // The ID of a token transfer channel used for the Reward Distribution + // sub-protocol. If DistributionTransmissionChannel == "", a new transfer + // channel is created on top of the same connection as the CCV channel. + // Note that transfer_channel_id is the ID of the channel end on the consumer + // chain. it is most relevant for chains performing a sovereign to consumer + // changeover in order to maintain the existing ibc transfer channel + string distribution_transmission_channel; +} +``` + +`ConsumerInitializationRecord` contains _almost_ everything that is contained in [`MsgConsumerAddition`](https://github.com/cosmos/interchain-security/blob/v5.1.0/proto/interchain_security/ccv/provider/v1/tx.proto#L111). +Note that as part of this work, we deprecate [`ConsumerAdditionProposal`](https://github.com/cosmos/interchain-security/blob/v5.1.0/proto/interchain_security/ccv/provider/v1/provider.proto#L30). + +For each `consumerId`, we store its corresponding `ConsumerInitializationRecord`. For Top N chains, we can perform this +store by using the [`AfterProposalVotingPeriodEnded`](https://github.com/cosmos/cosmos-sdk/blob/v0.50.8/x/gov/types/hooks.go#L52). + +Note that we need to extensively check the fields of the provided `ConsumerInitializationRecord` to guarantee that no consumer +chain launches with problematic parameters (e.g., we need to have maximum length for the `chainId`, etc.). +As a starter we look into the [usual validity conditions](https://github.com/cosmos/interchain-security/blob/v5.1.0/x/ccv/provider/types/msg.go#L244). + +For all chains in the initialized phase, we keep a mapping between `consumerId` and the underlying `ConsumerInitializationRecord`. +This way, we can respond to queries that ask for all the consumer chain's parameters. For example, retrieving the +`spawn_time` of consumer chain with a given `consumerId`. + +`MsgInitializeConsumer` can be executed multiple times for the same Opt In consumer chain during its initialized phase +to potentially change its to-be-launched parameters (e.g., `spawnTime`). + +A Top N can move to the initialized phase only if the owner of the registered chain issues a governance proposal +with two messages, `MsgInitializeConsumer` and `MsgUpdateConsumer`, and the proposal passes. + +#### Modify a Consumer Chain +We reuse the [MsgConsumerModification](https://github.com/cosmos/interchain-security/blob/v5.1.0/proto/interchain_security/ccv/provider/v1/tx.proto#L294) +message to update parameters of an Opt In chain that is in its initialized or launched phase, but rename the message +to `MsgUpdateConsumer`. This message can only be executed by the owner of a consumer +chain and hence only the owner can change the parameters (e.g., `validators_power_cap`, `allowlist`, etc.) +of the consumer chain. Recall that if the consumer chain is a Top N chain, then the owner is the address of the +governance account. + +We refactor `MsgUpdateConsumer` to be as follows: +```protobuf +message MsgUpdateConsumer { + // consumer id of the to-be-updated consumer chain + string consumer_id; + ConsumerUpdateRecord update_record; +} +``` + +where `ConsumerUpdateRecord` contains the following: +``` +message ConsumerUpdateRecord { + // `owner_address` cannot be modified by a Top N chain, unless it moves to an Opt In chain (i.e., `top_N == 0`) + string owner_address; + uint32 top_N; + uint32 validators_power_cap; + uint32 validator_set_cap; + repeated string allowlist; + repeated string denylist; +} +``` + +Note, that even though a consumer chain is initialized with all the arguments in `ConsumerUpdateRecord`, +the `MsgUpdateConsumer` updates only the `owner_address` and the `consumer_update_record`. This is because +all the other arguments are either useless (e.g., `spawnTime`) after a chain has started, or can be updated directly +by the consumer chain params (e.g., `consumer_redistribution_fraction`). + +#### Remove (Stop) a Consumer Chain +We reuse the `MsgConsumerRemoval` (renamed to `MsgRemoveConsumer`) so we can stop any Opt In chain at any point in time. +Note that all relevant state for this consumer chain remains on the provider's state before getting removed after the time +of an unbonding period (of the provider) has passed. This is to enable potential slashing for any infraction that might have been incurred until now. +Note however that we never recycle previously-used `consumerId`s. Naturally, this message can only be issued by the owner of the consumer chain. + +```protobuf +message MsgRemoveConsumer { + // the consumerId as returned by `MsgRegisterConsumer` + string consumer_id; + // the time on the provider chain at which all validators are responsible to + // stop their consumer chain validator node + google.protobuf.Timestamp stop_time; +} +``` + +#### Examples of Launching a Consumer Chain +The figures below depict some examples of some of the phases a consumer chain resides in to launch. + +![Examples of a launching consumer chain](./adr18_flows_of_launching_a_consumer_chain.png) + + +### Additional Modifications +We need to perform multiple migrations. All state needs to be reindex based on a `consumerId` instead of the `chainId`. +Because we only have two consumer chains at the moment, this is not going to be an expensive migration even if we have some live +consumer chains that are being voted upon. Similarly, all the messages, queries, etc. would need to be changed to operate on a `consumerId` +instead of a `chainId`. + +It is **important** to migrate any ongoing `ConsumerAdditionProposal`s when we upgrade before we actually deprecate `ConsumerAdditionProposal`s. + +## Consequences + +### Positive +- Easier to launch an Opt In consumer chain because no governance is required. + +### Negative +- Extensive migration and overhaul of existing code base (as part of API-breaking changes) that could lead to bugs and more work in auditing this. + + +## References +[CHIPs Discussion phase: Permissionless ICS](https://forum.cosmos.network/t/chips-discussion-phase-permissionless-ics/13955) +[Chain-id squatting](https://forum.cosmos.network/t/pss-permissionless-vs-premissioned-lite-opt-in-consumer-chains/12984/17) \ No newline at end of file diff --git a/docs/docs/adrs/adr18_flows_of_launching_a_consumer_chain.excalidraw b/docs/docs/adrs/adr18_flows_of_launching_a_consumer_chain.excalidraw new file mode 100644 index 0000000000..4e9c57cce0 --- /dev/null +++ b/docs/docs/adrs/adr18_flows_of_launching_a_consumer_chain.excalidraw @@ -0,0 +1,3277 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "ellipse", + "version": 432, + "versionNonce": 656013628, + "index": "a1", + "isDeleted": false, + "id": "SI0HtgaAMGQsMr1Y7bXrA", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 512.4765625, + "y": 248.29980468749991, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 143.13281250000014, + "height": 137.65234375000014, + "seed": 1039402003, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "A97toxLGgigcGTMSLzFRE" + }, + { + "id": "zeENeKW4p1ce_DWzf-29f", + "type": "arrow" + }, + { + "id": "qIMMSItT6zGcYO5ZUPcar", + "type": "arrow" + } + ], + "updated": 1721898441262, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 772, + "versionNonce": 276787644, + "index": "a1V", + "isDeleted": false, + "id": "A97toxLGgigcGTMSLzFRE", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 547.7299002905518, + "y": 306.9585237065766, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 72.41595458984375, + "height": 20, + "seed": 262978077, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721898441262, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "initialized", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "SI0HtgaAMGQsMr1Y7bXrA", + "originalText": "initialized", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "ellipse", + "version": 225, + "versionNonce": 1063465660, + "index": "a2", + "isDeleted": false, + "id": "y5DOCeanki7NLMac-YZU_", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 963.30078125, + "y": 252.48730468749994, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.27734375, + "height": 113.27734375, + "seed": 303821331, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "id": "zeENeKW4p1ce_DWzf-29f", + "type": "arrow" + }, + { + "type": "text", + "id": "_lR4nCPdco_VXP-hHHxFx" + }, + { + "id": "hoUATc742qsSXGtb3zXhk", + "type": "arrow" + }, + { + "id": "6m4pEWBrlMrOpXdR2qMdd", + "type": "arrow" + } + ], + "updated": 1721898441262, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 69, + "versionNonce": 241531708, + "index": "a2G", + "isDeleted": false, + "id": "_lR4nCPdco_VXP-hHHxFx", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 987.2738821091236, + "y": 299.07638760228764, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 65.23196411132812, + "height": 20, + "seed": 2116710579, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721898441262, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "launched", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "y5DOCeanki7NLMac-YZU_", + "originalText": "launched", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 818, + "versionNonce": 352917936, + "index": "a4", + "isDeleted": false, + "id": "-Ezkh_kc6H-iZ8_N1SUwz", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 728.4853515625, + "y": 18.888671874999943, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 462.22369116544724, + "height": 40, + "seed": 176740147, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "JQNfOufG1Sc3Ln1iHc6v8", + "type": "arrow" + } + ], + "updated": 1721977797787, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "proposal with MsgInitializeConsumer & MsgUpdateConsumer\nto start a Top N chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "proposal with MsgInitializeConsumer & MsgUpdateConsumer\nto start a Top N chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 3380, + "versionNonce": 1334694320, + "index": "a5", + "isDeleted": false, + "id": "JQNfOufG1Sc3Ln1iHc6v8", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 863.2801567822762, + "y": 66.26969410176584, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 208.7131111905685, + "height": 55.219229040456455, + "seed": 428750077, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721977807991, + "link": null, + "locked": false, + "startBinding": { + "elementId": "-Ezkh_kc6H-iZ8_N1SUwz", + "focus": 0.14349370214591656, + "gap": 7.381022226765893 + }, + "endBinding": { + "elementId": "_VXIQppCSNb6MIFQLmDdy", + "focus": 0.1824872496377905, + "gap": 2.2713741813428783 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -106.6058242763097, + 51.06445336557442 + ], + [ + -208.7131111905685, + 55.219229040456455 + ] + ] + }, + { + "type": "text", + "version": 1068, + "versionNonce": 1922126672, + "index": "a6", + "isDeleted": false, + "id": "9NwhWEx9olM4fARFt5hZe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 189.74827575683594, + "y": -17.066406250000057, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 308.01581835746765, + "height": 80, + "seed": 304812115, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "NAUT1CeeaW6ntAtOKbXGS", + "type": "arrow" + } + ], + "updated": 1721977650326, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "tx to register\nan Opt In or Top N consumer chain\n(MsgRegisterConsumer)\nowner = signer of MsgRegisterConsumer", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "tx to register\nan Opt In or Top N consumer chain\n(MsgRegisterConsumer)\nowner = signer of MsgRegisterConsumer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 331, + "versionNonce": 1834637060, + "index": "a7", + "isDeleted": false, + "id": "zeENeKW4p1ce_DWzf-29f", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 663.2551165518071, + "y": 319.75738423211857, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 299.31331302963645, + "height": 5.083241028410356, + "seed": 783684445, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721898441294, + "link": null, + "locked": false, + "startBinding": { + "elementId": "9VJjnsFNvss8g8B_wchEr", + "focus": -1.1953607235764194, + "gap": 6.181092330381375 + }, + "endBinding": { + "elementId": "y5DOCeanki7NLMac-YZU_", + "focus": -0.08074296871041202, + "gap": 1.0000000000000995 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 299.31331302963645, + -5.083241028410356 + ] + ] + }, + { + "type": "text", + "version": 418, + "versionNonce": 1250834364, + "index": "a8", + "isDeleted": false, + "id": "9VJjnsFNvss8g8B_wchEr", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 669.0216369628906, + "y": 325.93847656249994, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 252.0958709716797, + "height": 60, + "seed": 1053753011, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "zeENeKW4p1ce_DWzf-29f", + "type": "arrow" + } + ], + "updated": 1721898441262, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "chain's spawnTime passed\nAND\nat least one validator opted in", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "chain's spawnTime passed\nAND\nat least one validator opted in", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 417, + "versionNonce": 7026096, + "index": "aF", + "isDeleted": false, + "id": "FgsFB8OrGtx1-nlYRY0Uz", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1100.889877319336, + "y": 155.14941406249994, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 229.75984984636307, + "height": 40, + "seed": 51301117, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "hoUATc742qsSXGtb3zXhk", + "type": "arrow" + } + ], + "updated": 1721979486389, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "MsgUpdateConsumer for both\nTop N and Opt In chains", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgUpdateConsumer for both\nTop N and Opt In chains", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 936, + "versionNonce": 1806394884, + "index": "aG", + "isDeleted": false, + "id": "hoUATc742qsSXGtb3zXhk", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1043.1909748738744, + "y": 254.20084659464027, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 81.51926732005495, + "height": 77.65472732322138, + "seed": 684481907, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721898441295, + "link": null, + "locked": false, + "startBinding": { + "elementId": "y5DOCeanki7NLMac-YZU_", + "focus": -0.6276577497929622, + "gap": 3.005298194275724 + }, + "endBinding": { + "elementId": "y5DOCeanki7NLMac-YZU_", + "focus": 0.6500438788511836, + "gap": 6.714013400352123 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 81.51926732005495, + -47.95974594543503 + ], + [ + 34.8604592337133, + 29.69498137778635 + ] + ] + }, + { + "type": "ellipse", + "version": 356, + "versionNonce": 411466172, + "index": "aK", + "isDeleted": false, + "id": "U2EhanfFFSg1GNh4uQ9Xo", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 973.2587890625, + "y": 528.0859375, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 113.27734375, + "height": 113.27734375, + "seed": 420095965, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "RfEXevpkB5rowEFa4mHDD" + }, + { + "id": "6m4pEWBrlMrOpXdR2qMdd", + "type": "arrow" + } + ], + "updated": 1721898441262, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 209, + "versionNonce": 294117948, + "index": "aL", + "isDeleted": false, + "id": "RfEXevpkB5rowEFa4mHDD", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 999.7359029831471, + "y": 574.6750204147877, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 60.22393798828125, + "height": 20, + "seed": 1217602621, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721898441262, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "stopped", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "U2EhanfFFSg1GNh4uQ9Xo", + "originalText": "stopped", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 518, + "versionNonce": 1178907908, + "index": "aM", + "isDeleted": false, + "id": "6m4pEWBrlMrOpXdR2qMdd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1027.530607098985, + "y": 367.313746063125, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1.0811756614666592, + "height": 152.58658700381386, + "seed": 354868061, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721898441295, + "link": null, + "locked": false, + "startBinding": { + "elementId": "y5DOCeanki7NLMac-YZU_", + "focus": -0.1267451224869414, + "gap": 2.042177966448442 + }, + "endBinding": { + "elementId": "U2EhanfFFSg1GNh4uQ9Xo", + "focus": -0.014589591451189068, + "gap": 8.198352788681127 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 1.0811756614666592, + 152.58658700381386 + ] + ] + }, + { + "type": "ellipse", + "version": 1043, + "versionNonce": 1743463856, + "index": "aP", + "isDeleted": false, + "id": "_VXIQppCSNb6MIFQLmDdy", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 527.1933593750001, + "y": 49.049845487915945, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 125.71093750000004, + "height": 126.94419050538774, + "seed": 1424716579, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [ + { + "type": "text", + "id": "ND9wpVssAkaXAtA1CWR-j" + }, + { + "id": "qIMMSItT6zGcYO5ZUPcar", + "type": "arrow" + }, + { + "id": "JQNfOufG1Sc3Ln1iHc6v8", + "type": "arrow" + }, + { + "id": "NAUT1CeeaW6ntAtOKbXGS", + "type": "arrow" + }, + { + "id": "SP-m3QTzlcLoU-_bmfZeN", + "type": "arrow" + } + ], + "updated": 1721977737205, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1438, + "versionNonce": 303490108, + "index": "aQ", + "isDeleted": false, + "id": "ND9wpVssAkaXAtA1CWR-j", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 550.919332346884, + "y": 102.6403917713115, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 78.36793518066406, + "height": 20, + "seed": 704059075, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721898441262, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "registered", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "_VXIQppCSNb6MIFQLmDdy", + "originalText": "registered", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 2498, + "versionNonce": 1811695536, + "index": "aR", + "isDeleted": false, + "id": "qIMMSItT6zGcYO5ZUPcar", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 598.616944950635, + "y": 175.68190954353736, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 95.2174182195338, + "height": 71.14063431860131, + "seed": 711212803, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721977823250, + "link": null, + "locked": false, + "startBinding": { + "elementId": "_VXIQppCSNb6MIFQLmDdy", + "focus": 0.7831196417981204, + "gap": 1 + }, + "endBinding": { + "elementId": "SI0HtgaAMGQsMr1Y7bXrA", + "focus": -0.9808503194655256, + "gap": 2.5866858268130386 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 93.66378808277591, + 56.75434794509022 + ], + [ + -1.5536301367578846, + 71.14063431860131 + ] + ] + }, + { + "type": "text", + "version": 894, + "versionNonce": 1163437392, + "index": "aS", + "isDeleted": false, + "id": "tONaGSodwA-i1Tr_ZvpZf", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 703.2325744628906, + "y": 211.6659109933036, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 63.951934814453125, + "height": 40, + "seed": 1173975117, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721977821204, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "proposal\npasses", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "proposal\npasses", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 2698, + "versionNonce": 1501320528, + "index": "aW", + "isDeleted": false, + "id": "NAUT1CeeaW6ntAtOKbXGS", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 295.2339916085824, + "y": 72.54770775067982, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 219.9931787394372, + "height": 44.86816430307441, + "seed": 713565901, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721977650641, + "link": null, + "locked": false, + "startBinding": { + "elementId": "9NwhWEx9olM4fARFt5hZe", + "focus": 0.5220455825778929, + "gap": 9.614114000679876 + }, + "endBinding": { + "elementId": "_VXIQppCSNb6MIFQLmDdy", + "focus": -0.040896091175469475, + "gap": 12.037638560264035 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 49.778852818030145, + 44.86816430307441 + ], + [ + 219.9931787394372, + 43.27181702781314 + ] + ] + }, + { + "type": "arrow", + "version": 2638, + "versionNonce": 2034843580, + "index": "aX", + "isDeleted": false, + "id": "QJHjyYDxam9jq3ifrE6rE", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 553.4126684100163, + "y": 172.7898695168439, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 88.24899059693328, + "height": 80.70767694042144, + "seed": 901908284, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721898441262, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -87.03045455607186, + 30.651422159720436 + ], + [ + 1.218536040861423, + 80.70767694042144 + ] + ] + }, + { + "type": "text", + "version": 954, + "versionNonce": 1840703408, + "index": "aY", + "isDeleted": false, + "id": "OSTXsQ9rLudhM8FpW1Tmi", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 237.52793884277344, + "y": 181.43050856817348, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 220.76788437366486, + "height": 60, + "seed": 1590512260, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721981417956, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "tx to initialize a registered\nOpt In chain\n(MsgInitializeConsumer)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "tx to initialize a registered\nOpt In chain\n(MsgInitializeConsumer)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 618, + "versionNonce": 1408338864, + "index": "aZ", + "isDeleted": false, + "id": "YfLjGiz8pwcgaeYLbqk17", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1046.5860595703125, + "y": 407.42009190150674, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 198.86389088630676, + "height": 40, + "seed": 200186756, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721977871422, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "MsgRemoveConsumer for\nTop N and Opt In chains", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgRemoveConsumer for\nTop N and Opt In chains", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1258, + "versionNonce": 1493934000, + "index": "aa", + "isDeleted": false, + "id": "NssF2iYfl_Bnw_ExbSTN9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.903783783236146, + "x": 738.4366388875179, + "y": 102.0454511378703, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 188.03873574733734, + "height": 38.94856770833333, + "seed": 1513132976, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721979493173, + "link": null, + "locked": false, + "fontSize": 15.579427083333332, + "fontFamily": 1, + "text": "If proposal submitted,\nthen owner = gov module", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "If proposal submitted,\nthen owner = gov module", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 3860, + "versionNonce": 1375313744, + "index": "ab", + "isDeleted": false, + "id": "SP-m3QTzlcLoU-_bmfZeN", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 542.8449540584817, + "y": 65.3169816199927, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 107.2195285426966, + "height": 95.35691573040356, + "seed": 1371342672, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721979518514, + "link": null, + "locked": false, + "startBinding": { + "elementId": "_VXIQppCSNb6MIFQLmDdy", + "focus": -1.0544694371314034, + "gap": 3.5954323396749857 + }, + "endBinding": { + "elementId": "_VXIQppCSNb6MIFQLmDdy", + "focus": 0.31663537700287836, + "gap": 1.9911615284421913 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 107.2195285426966, + -95.35691573040356 + ], + [ + 82.94381595386449, + -7.418196168042471 + ] + ] + }, + { + "type": "text", + "version": 1314, + "versionNonce": 863552848, + "index": "ac", + "isDeleted": false, + "id": "apwBA2F8OsZLAT7p6l1JS", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 609.4229227304459, + "y": -79.25318690708701, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 569.839707493782, + "height": 40, + "seed": 1979332528, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721979490056, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "If proposal fails,\nthen owner = previous owner (the one that signed MsgRegisterConsumer)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "If proposal fails,\nthen owner = previous owner (the one that signed MsgRegisterConsumer)", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 772, + "versionNonce": 266696112, + "index": "ae", + "isDeleted": false, + "id": "pwlxDMNk9SimSRoZRuyV3", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 256.2591145833333, + "y": 1317.2654695056733, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1658.3805338541667, + "height": 0.078125, + "seed": 1129032624, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1658.3805338541667, + 0.078125 + ] + ] + }, + { + "type": "line", + "version": 379, + "versionNonce": 957038512, + "index": "af", + "isDeleted": false, + "id": "-xwyxjAJM89xAkUi-pWLB", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 269.35481770833337, + "y": 1261.0252351306735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 659246416, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "line", + "version": 552, + "versionNonce": 250071472, + "index": "ag", + "isDeleted": false, + "id": "AFDJ07skaLW7VCALYMDj4", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 760.7334914470289, + "y": 1257.3100290018028, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 1945500592, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "line", + "version": 835, + "versionNonce": 1285755824, + "index": "ah", + "isDeleted": false, + "id": "hDPzA0-vpS0ilSkphkeAA", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1002.3254193314633, + "y": 1269.644565149432, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 1257497936, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "arrow", + "version": 627, + "versionNonce": 140844464, + "index": "ai", + "isDeleted": false, + "id": "5RtUeYj4dxxweAu88pxEc", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1824.390625, + "y": 1297.1385163806735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 88.623046875, + "height": 0, + "seed": 557184848, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 88.623046875, + 0 + ] + ] + }, + { + "type": "text", + "version": 694, + "versionNonce": 1398138800, + "index": "aj", + "isDeleted": false, + "id": "TCPMJfrcd92gSR4Q6cE6S", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1845.7822265625, + "y": 1273.2810945056735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 40.63996636867523, + "height": 25, + "seed": 1234376112, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "time", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 653, + "versionNonce": 1503490480, + "index": "ak", + "isDeleted": false, + "id": "cJmAKusziodsDR6vwTHJd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 213.76562500000006, + "y": 1198.4617585681735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 227.99981439113617, + "height": 50, + "seed": 844025168, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "MsgRegisterConsumer\nto get the consumer id", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgRegisterConsumer\nto get the consumer id", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 717, + "versionNonce": 40090544, + "index": "al", + "isDeleted": false, + "id": "GastODl-l38mFb5oaAEbj", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 665.4558410644531, + "y": 1198.011929466611, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 210.61980283260345, + "height": 50, + "seed": 44005200, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "MsgInitializeConsumer\nwith spawnTime, etc.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgInitializeConsumer\nwith spawnTime, etc.", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 801, + "versionNonce": 265340336, + "index": "am", + "isDeleted": false, + "id": "kXfBgGvtmnfZCVwG1uG9V", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 935.2071304321289, + "y": 1199.574429466611, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 224.29981744289398, + "height": 50, + "seed": 2087774640, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "MsgUpdateConsumer\nto set power cap, etc.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgUpdateConsumer\nto set power cap, etc.", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 966, + "versionNonce": 1057787824, + "index": "an", + "isDeleted": false, + "id": "E1QM7dtsigeuyGX9zwvE0", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1220.2525985836983, + "y": 1202.250210716611, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 242.3997710943222, + "height": 50, + "seed": 608854864, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "MsgInitializeConsumer to\nmodify spawnTime", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgInitializeConsumer to\nmodify spawnTime", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 688, + "versionNonce": 1748965808, + "index": "ao", + "isDeleted": false, + "id": "Wm2pyI04tXykKntCeM85W", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1307.6379193314638, + "y": 1266.2113376103696, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 1967873456, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "rectangle", + "version": 657, + "versionNonce": 512779184, + "index": "ap", + "isDeleted": false, + "id": "pfUxn633PL7PLmo5UBP83", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 273.84472656250006, + "y": 1317.1248851957778, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 480.92285156250006, + "height": 81.1279296875, + "seed": 394410832, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ZxRHa3OTec0AyDpAifqQw" + } + ], + "updated": 1721980422671, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 421, + "versionNonce": 1344826800, + "index": "aq", + "isDeleted": false, + "id": "ZxRHa3OTec0AyDpAifqQw", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 429.95622801780706, + "y": 1345.1888500395278, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 168.699848651886, + "height": 25, + "seed": 1250610096, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Registered phase", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "pfUxn633PL7PLmo5UBP83", + "originalText": "Registered phase", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1004, + "versionNonce": 1714370480, + "index": "ar", + "isDeleted": false, + "id": "uVblxWqL6Msu5umb9eTvZ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 758.35302734375, + "y": 1318.302456810361, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 660.1660156250001, + "height": 81.1279296875, + "seed": 229232464, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "s-LIv7Mo1IvDb89Gr0uSQ" + } + ], + "updated": 1721980422671, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 782, + "versionNonce": 1691140528, + "index": "as", + "isDeleted": false, + "id": "s-LIv7Mo1IvDb89Gr0uSQ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 1007.056105658412, + "y": 1346.366421654111, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 162.75985899567604, + "height": 25, + "seed": 1548969296, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980422671, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Initialized phase", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "uVblxWqL6Msu5umb9eTvZ", + "originalText": "Initialized phase", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 863, + "versionNonce": 2067805008, + "index": "at", + "isDeleted": false, + "id": "zXqjQ2rE_UbSjEHOyMDw3", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1422.1748893529827, + "y": 1318.9168052711786, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 618764720, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980681550, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "text", + "version": 1091, + "versionNonce": 1936463280, + "index": "au", + "isDeleted": false, + "id": "aVp4yECj00-fGLMn7sHnD", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1309.797184765339, + "y": 1450.599820091611, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 177.4198455810547, + "height": 75, + "seed": 1447447888, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980422672, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "spawnTime passed\nand at least one\nvalidator opted in", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "spawnTime passed\nand at least one\nvalidator opted in", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1091, + "versionNonce": 851304368, + "index": "ax", + "isDeleted": false, + "id": "s6qt0UIRPRSbMwetkDFg_", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1609.481927216053, + "y": 1212.733609154111, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 202.41985833644867, + "height": 50, + "seed": 1340941744, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980422672, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "MsgUpdateConsumer\nto change power cap", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgUpdateConsumer\nto change power cap", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 985, + "versionNonce": 2034657712, + "index": "ay", + "isDeleted": false, + "id": "RRDK6Jp-NdnWMWtYGDDli", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1745.1088831870024, + "y": 1272.6322796427069, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 154253232, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980422672, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "rectangle", + "version": 1016, + "versionNonce": 841855920, + "index": "az", + "isDeleted": false, + "id": "4ZMVPnrnF1Dfj8ono67tv", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 1425.8107096354167, + "y": 1320.40939512673, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 475.03417968750034, + "height": 79.30663117976157, + "seed": 66445648, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "KC5zECj3By5dDU8JFhAep" + } + ], + "updated": 1721980422672, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 810, + "versionNonce": 597409200, + "index": "b00", + "isDeleted": false, + "id": "KC5zECj3By5dDU8JFhAep", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 1587.763779918353, + "y": 1347.7777356509237, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 151.1280391216278, + "height": 24.569950131374355, + "seed": 323827536, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980422672, + "link": null, + "locked": false, + "fontSize": 19.655960105099485, + "fontFamily": 1, + "text": "Launched phase", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "4ZMVPnrnF1Dfj8ono67tv", + "originalText": "Launched phase", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 771, + "versionNonce": 1263014832, + "index": "b01", + "isDeleted": false, + "id": "7Bq_OzmNwUc0GxjMxTYNY", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 265.25883719345677, + "y": 1666.5525788806733, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1658.3805338541667, + "height": 0.078125, + "seed": 255347024, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1658.3805338541667, + 0.078125 + ] + ] + }, + { + "type": "line", + "version": 400, + "versionNonce": 1785339312, + "index": "b02", + "isDeleted": false, + "id": "OvebgcABs_rLQivf-TBk2", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 278.3545403184568, + "y": 1610.3123445056733, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 1510121296, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "line", + "version": 573, + "versionNonce": 750446512, + "index": "b03", + "isDeleted": false, + "id": "4C8GcmxoE4N2CEFpbetdn", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 769.7332140571524, + "y": 1606.5971383768026, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 1158821200, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "line", + "version": 856, + "versionNonce": 1046639024, + "index": "b04", + "isDeleted": false, + "id": "nHS8CykAzRlhhatMaNhMu", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1011.3251419415867, + "y": 1618.931674524432, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 364841808, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "arrow", + "version": 626, + "versionNonce": 109624240, + "index": "b05", + "isDeleted": false, + "id": "Fs9vTDdorvwlcYw_ubAa_", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1833.3903476101234, + "y": 1646.4256257556733, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 88.623046875, + "height": 0, + "seed": 643899728, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 88.623046875, + 0 + ] + ] + }, + { + "type": "text", + "version": 715, + "versionNonce": 1196803504, + "index": "b06", + "isDeleted": false, + "id": "l3WpHc1Tm8DmkYOar2yuc", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1854.7819491726234, + "y": 1622.5682038806733, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 40.63996636867523, + "height": 25, + "seed": 1179678544, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "time", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 674, + "versionNonce": 1039241136, + "index": "b07", + "isDeleted": false, + "id": "HVWEVkdCna3gjxJRN-dCZ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 222.7653476101235, + "y": 1547.7488679431735, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 227.99981439113617, + "height": 50, + "seed": 434441552, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "MsgRegisterConsumer\nto get the consumer id", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgRegisterConsumer\nto get the consumer id", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 877, + "versionNonce": 1115953584, + "index": "b08", + "isDeleted": false, + "id": "jpeMZ5SS2jgAqO9FZB17B", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 672.7954074245766, + "y": 1496.999559674944, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 237.25982177257538, + "height": 100, + "seed": 2054611792, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "issue governance\nproposal with\nMsgInitializeConsumer\nand MsgUpdateconsumer", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "issue governance\nproposal with\nMsgInitializeConsumer\nand MsgUpdateconsumer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 907, + "versionNonce": 1748329392, + "index": "b09", + "isDeleted": false, + "id": "zmw1PyM5vZzw3eZp9f19w", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 936.9607592922523, + "y": 1583.112840924944, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 170.7798352241516, + "height": 25, + "seed": 1448999248, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "proposal rejected", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "proposal rejected", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1152, + "versionNonce": 489516464, + "index": "b0C", + "isDeleted": false, + "id": "ajHAAKi9tSoXcIkv3aA4L", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 277.09965750595677, + "y": 1665.9562654041108, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 1646.6975911458337, + "height": 81.1279296875, + "seed": 948091728, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "2HQsEKAeWiKi5szJa8Io6" + } + ], + "updated": 1721980676778, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 916, + "versionNonce": 1251227568, + "index": "b0D", + "isDeleted": false, + "id": "2HQsEKAeWiKi5szJa8Io6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 1016.0985287529306, + "y": 1694.0202302478608, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 168.699848651886, + "height": 25, + "seed": 355389776, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Registered phase", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "ajHAAKi9tSoXcIkv3aA4L", + "originalText": "Registered phase", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1323, + "versionNonce": 515241808, + "index": "b0E", + "isDeleted": false, + "id": "o16fHdthOp80uqAN-KkL2", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 1015.8097812038734, + "y": 2025.532274518694, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 415.0227864583335, + "height": 81.1279296875, + "seed": 1877485392, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "348R4_XQcWAs6CAl4OV_w" + } + ], + "updated": 1721980415621, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1102, + "versionNonce": 1234865488, + "index": "b0F", + "isDeleted": false, + "id": "348R4_XQcWAs6CAl4OV_w", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 1141.9412449352021, + "y": 2053.596239362444, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 162.75985899567604, + "height": 25, + "seed": 352763216, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Initialized phase", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "o16fHdthOp80uqAN-KkL2", + "originalText": "Initialized phase", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 897, + "versionNonce": 394027856, + "index": "b0M", + "isDeleted": false, + "id": "jAITNaSlDtSPpvQwpBfRJ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 267.98783052464313, + "y": 2020.76074945359, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 1658.3805338541667, + "height": 0.078125, + "seed": 124954448, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1658.3805338541667, + 0.078125 + ] + ] + }, + { + "type": "line", + "version": 504, + "versionNonce": 917731664, + "index": "b0N", + "isDeleted": false, + "id": "akYH8jPOSYYHRJ0kHn6SF", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 281.08353364964324, + "y": 1964.52051507859, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 1463893328, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "line", + "version": 677, + "versionNonce": 1251462992, + "index": "b0O", + "isDeleted": false, + "id": "Qds67yg8nIFlUKrTZNb8v", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 772.4622073883388, + "y": 1960.8053089497193, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 483201872, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "line", + "version": 960, + "versionNonce": 1266771280, + "index": "b0P", + "isDeleted": false, + "id": "jtzT1eH8RZn8QwNepmt_H", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1014.054135272773, + "y": 1973.1398450973488, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 778971472, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "arrow", + "version": 752, + "versionNonce": 1724398416, + "index": "b0Q", + "isDeleted": false, + "id": "8lhkFCwtbNTRFlmWeRE4n", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1836.1193409413095, + "y": 2000.63379632859, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 88.623046875, + "height": 0, + "seed": 1467776848, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 88.623046875, + 0 + ] + ] + }, + { + "type": "text", + "version": 819, + "versionNonce": 1589924176, + "index": "b0R", + "isDeleted": false, + "id": "CsZ965_KJ8mkVhd3JJHe6", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1857.5109425038095, + "y": 1976.77637445359, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 40.63996636867523, + "height": 25, + "seed": 944772432, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "time", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "time", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 778, + "versionNonce": 1791862608, + "index": "b0S", + "isDeleted": false, + "id": "VptrXV13wo5wjJkN_HnlZ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 225.49434094130987, + "y": 1901.9570385160905, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 227.99981439113617, + "height": 50, + "seed": 641788752, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "MsgRegisterConsumer\nto get the consumer id", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgRegisterConsumer\nto get the consumer id", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1003, + "versionNonce": 389823824, + "index": "b0T", + "isDeleted": false, + "id": "i7B5C0pGmcgSuCqx5vRQP", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 675.524400755763, + "y": 1851.207730247861, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 237.25982177257538, + "height": 100, + "seed": 195494224, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "issue governance\nproposal with\nMsgInitializeConsumer\nand MsgUpdateconsumer", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "issue governance\nproposal with\nMsgInitializeConsumer\nand MsgUpdateconsumer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1017, + "versionNonce": 623782224, + "index": "b0U", + "isDeleted": false, + "id": "KtxOQmQoRm5cuPDQBNvU5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 939.6897526234386, + "y": 1937.321011497861, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 156.959858417511, + "height": 25, + "seed": 1205491536, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980635662, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "proposal passes", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "proposal passes", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 1270, + "versionNonce": 1806248272, + "index": "b0X", + "isDeleted": false, + "id": "aqECH_oHGd4F7Pq9jBCpa", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 279.82865083714313, + "y": 2020.1644359770276, + "strokeColor": "#1e1e1e", + "backgroundColor": "#e7f5ff", + "width": 731.2353515625001, + "height": 81.1279296875, + "seed": 2041829712, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "J8GsOJGu4wkpH9e3dq06b" + } + ], + "updated": 1721980415621, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1034, + "versionNonce": 894926672, + "index": "b0Y", + "isDeleted": false, + "id": "J8GsOJGu4wkpH9e3dq06b", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 561.0964022924502, + "y": 2048.2284008207776, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 168.699848651886, + "height": 25, + "seed": 244068176, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Registered phase", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "aqECH_oHGd4F7Pq9jBCpa", + "originalText": "Registered phase", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 991, + "versionNonce": 2012467536, + "index": "b0Z", + "isDeleted": false, + "id": "jepmnNxu-8rBXJjZKYZKQ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1434.8150636276262, + "y": 2021.9498456357614, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 1374274896, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980684670, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "text", + "version": 1229, + "versionNonce": 57883811, + "index": "b0a", + "isDeleted": false, + "id": "prbzcGXJPRqkOVsHpdbs4", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1321.581890289982, + "y": 2150.859422956194, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 176.8798370361328, + "height": 25, + "seed": 1092918096, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721986800613, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "spawnTime passed", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "spawnTime passed", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 1327, + "versionNonce": 1288511920, + "index": "b0b", + "isDeleted": false, + "id": "4_i6jup_6Cze3xommPSgL", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1494.9671535740297, + "y": 1916.495816185361, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 231.69981133937836, + "height": 50, + "seed": 1855238480, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980692762, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "MsgUpdateConsumer\nto change denylist, etc.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "MsgUpdateConsumer\nto change denylist, etc.", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 1250, + "versionNonce": 1557995440, + "index": "b0c", + "isDeleted": false, + "id": "G9GGcs9_A9FENDJhK85f5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1581.264682461645, + "y": 1974.519486673957, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 124.8681640625, + "seed": 1636960080, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1721980691478, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 124.8681640625 + ] + ] + }, + { + "type": "rectangle", + "version": 1141, + "versionNonce": 1680731472, + "index": "b0d", + "isDeleted": false, + "id": "TuSGExogIwVLdWKpZuLEE", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 1437.5394255767267, + "y": 2023.904675074647, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 475.03417968750034, + "height": 79.30663117976157, + "seed": 1987353936, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Kha-a5kyL8kweb2LvlPtp" + } + ], + "updated": 1721980415621, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 936, + "versionNonce": 1218691920, + "index": "b0e", + "isDeleted": false, + "id": "Kha-a5kyL8kweb2LvlPtp", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 1599.492495859663, + "y": 2051.2730155988406, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 151.1280391216278, + "height": 24.569950131374355, + "seed": 1049916240, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980415621, + "link": null, + "locked": false, + "fontSize": 19.655960105099485, + "fontFamily": 1, + "text": "Launched phase", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "TuSGExogIwVLdWKpZuLEE", + "originalText": "Launched phase", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 408, + "versionNonce": 396094800, + "index": "b0f", + "isDeleted": false, + "id": "UyHfZ2VJGqV1pDsuTD9cV", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": -108.94270833333303, + "y": 1338.8350902739019, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 341.5998840332031, + "height": 70, + "seed": 723455312, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721981143713, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "successful launch of an \nOpt In chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "successful launch of an \nOpt In chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 510, + "versionNonce": 1955709360, + "index": "b0g", + "isDeleted": false, + "id": "4n5NjjKLCJsk7c-7uAWhd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": -50.64974466959666, + "y": 1661.4197256905686, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 263.73187255859375, + "height": 70, + "seed": 1223292336, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980676778, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "failed launch of a \nTop N chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "failed launch of a \nTop N chain", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "type": "text", + "version": 577, + "versionNonce": 2112613712, + "index": "b0h", + "isDeleted": false, + "id": "vr9GdN-bw_UUQefiVts9a", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": -83.6536966959635, + "y": 2032.7738923572358, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 328.5238952636719, + "height": 70, + "seed": 1698232144, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1721980468104, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "successful launch of a \nTop N chain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "successful launch of a \nTop N chain", + "autoResize": true, + "lineHeight": 1.25 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/docs/docs/adrs/adr18_flows_of_launching_a_consumer_chain.png b/docs/docs/adrs/adr18_flows_of_launching_a_consumer_chain.png new file mode 100644 index 0000000000000000000000000000000000000000..72dffb2d6718f035829511b4c632e46ca4197a21 GIT binary patch literal 609357 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 RU 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


jJlOp)HSWb4LxY?>@xOXYasAu7{`OOo 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≫{QC*F%f#xdSbB{0zq-P$4%l+xn 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

kEJmlvm5KD($ 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 z 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�vgj{|B5-cF3b{*uERz#aL>Wbm*qx6} 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